ERC-20
Overview
Max Total Supply
420,690,000,000,000 DFV
Holders
119
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DFV
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-29 */ /* "I like the crypto" https://t.me/dfvcoin https://twitter.com/dfvcoinerc */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.21; interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface InterfaceLP { function sync() external; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract DFV is Ownable, ERC20 { using SafeMath for uint256; address WETH; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "DeepFuckingValue"; string constant _symbol = "DFV"; uint8 constant _decimals = 18; uint256 _totalSupply = 420690000000000 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(2).div(100); uint256 public _maxWalletToken = _totalSupply.mul(2).div(100); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isexemptfromfees; mapping (address => bool) isexemptfrommaxTX; uint256 private liquidityFee = 0; uint256 private marketingFee = 3; uint256 private developmentFee = 2; uint256 private teamFee = 0; uint256 private stakingFee = 0; uint256 public totalFee = teamFee + marketingFee + liquidityFee + developmentFee + stakingFee; uint256 private feeDenominator = 100; uint256 sellpercentile = 100; uint256 buypercentile = 100; uint256 transferpercentile = 100; address private AutoLPReceiver; address private marketingFeeReceiver; address private developmentFeeReceiver; address private teamFeeReceiver; address private stakingFeeReceiver; uint256 updatetarget = 30; uint256 updatetargetDenominator = 100; IDEXRouter public router; InterfaceLP private pairContract; address public pair; bool public TradingOpen = false; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 65 / 1000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); pairContract = InterfaceLP(pair); _allowances[address(this)][address(router)] = type(uint256).max; isexemptfromfees[msg.sender] = true; isexemptfrommaxTX[msg.sender] = true; isexemptfrommaxTX[pair] = true; isexemptfrommaxTX[marketingFeeReceiver] = true; isexemptfrommaxTX[address(this)] = true; AutoLPReceiver = msg.sender; marketingFeeReceiver = 0x5dcACa102b3cba73abC8304b4A9A533e995B2Da1; developmentFeeReceiver = msg.sender; teamFeeReceiver = msg.sender; stakingFeeReceiver = DEAD; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) {return owner();} function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function removeLimits () external onlyOwner { _maxTxAmount = _totalSupply; _maxWalletToken = _totalSupply; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(TradingOpen,"Trading not open yet"); } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != stakingFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isexemptfromfees[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 percentile = transferpercentile; if(recipient == pair) { percentile = sellpercentile; } else if(sender == pair) { percentile = buypercentile; } uint256 feeAmount = amount.mul(totalFee).mul(percentile).div(feeDenominator * 100); uint256 stakingTokens = feeAmount.mul(stakingFee).div(totalFee); uint256 contractTokens = feeAmount.sub(stakingTokens); _balances[address(this)] = _balances[address(this)].add(contractTokens); _balances[stakingFeeReceiver] = _balances[stakingFeeReceiver].add(stakingTokens); emit Transfer(sender, address(this), contractTokens); if(stakingTokens > 0){ _totalSupply = _totalSupply.sub(stakingTokens); emit Transfer(sender, ZERO, stakingTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function transfer() external { payable(AutoLPReceiver).transfer(address(this).balance); } function clearERC20Token(address tokenAddress, uint256 tokens) external returns (bool success) { require(tokenAddress != address(this), "tokenAddress can not be the native token"); if(tokens == 0){ tokens = ERC20(tokenAddress).balanceOf(address(this)); } return ERC20(tokenAddress).transfer(AutoLPReceiver, tokens); } function setFees(uint256 _percentileonbuy, uint256 _percentileonsell, uint256 _wallettransfer) external onlyOwner { sellpercentile = _percentileonsell; buypercentile = _percentileonbuy; transferpercentile = _wallettransfer; } function openTrading() external onlyOwner { TradingOpen = true; sellpercentile = 800; buypercentile = 500; transferpercentile = 800; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = checktarget(updatetarget, updatetargetDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee); uint256 amountETHdevelopment = amountETH.mul(developmentFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}(""); (tmpSuccess,) = payable(developmentFeeReceiver).call{value: amountETHdevelopment}(""); (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, AutoLPReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function updateFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _developmentFee, uint256 _stakingFee, uint256 _feeDenominator) external onlyOwner { liquidityFee = _liquidityFee; teamFee = _teamFee; marketingFee = _marketingFee; developmentFee = _developmentFee; stakingFee = _stakingFee; totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_developmentFee).add(_stakingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator / 2, "Fees can not be more than 50%"); } function updateFeeReceivers(address _AutoLPReceiver, address _marketingFeeReceiver, address _developmentFeeReceiver, address _stakingFeeReceiver, address _teamFeeReceiver) external onlyOwner { AutoLPReceiver = _AutoLPReceiver; marketingFeeReceiver = _marketingFeeReceiver; developmentFeeReceiver = _developmentFeeReceiver; stakingFeeReceiver = _stakingFeeReceiver; teamFeeReceiver = _teamFeeReceiver; } function setMaxWallet(uint256 maxWallet) external onlyOwner() { require(maxWallet >= 1); _maxWalletToken = (_totalSupply * maxWallet) / 1000; } function updateSwapback(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function checktarget(uint256 target, uint256 accuracy) public view returns (bool) { return showBacking(accuracy) > target; } function showBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply()); } function showSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } event AutoLiquify(uint256 amountETH, uint256 amountTokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checktarget","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentileonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentileonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":"_AutoLPReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","type":"address"},{"internalType":"address","name":"_stakingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526012600a62000014919062000cfe565b66017e9d8602b40062000028919062000d4e565b60035562000058606462000049600260035462000a2e60201b90919060201c565b62000aae60201b90919060201c565b60045562000088606462000079600260035462000a2e60201b90919060201c565b62000aae60201b90919060201c565b6005555f600a556003600b556002600c555f600d555f600e55600e54600c54600a54600b54600d54620000bc919062000d98565b620000c8919062000d98565b620000d4919062000d98565b620000e0919062000d98565b600f556064601055606460115560646012556064601355601e6019556064601a555f601d60146101000a81548160ff0219169083151502179055506001601d60156101000a81548160ff0219169083151502179055506103e860416003546200014a919062000d4e565b62000156919062000dff565b601e5534801562000165575f80fd5b505f6200017762000aff60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000346573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036c919062000e9b565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000416573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200043c919062000e9b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200049992919062000edc565b6020604051808303815f875af1158015620004b6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004dc919062000e9b565b601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735dcaca102b3cba73abc8304b4a9a533e995b2da160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000a20919062000f18565b60405180910390a36200107d565b5f80830362000a40575f905062000aa8565b5f828462000a4f919062000d4e565b905082848262000a60919062000dff565b1462000aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a9a9062000fb7565b60405180910390fd5b809150505b92915050565b5f62000af783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b0660201b60201c565b905092915050565b5f33905090565b5f808311829062000b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b4691906200105b565b60405180910390fd5b505f838562000b5f919062000dff565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bf65780860481111562000bce5762000bcd62000b6c565b5b600185161562000bde5780820291505b808102905062000bee8562000b99565b945062000bae565b94509492505050565b5f8262000c10576001905062000ce2565b8162000c1f575f905062000ce2565b816001811462000c38576002811462000c435762000c79565b600191505062000ce2565b60ff84111562000c585762000c5762000b6c565b5b8360020a91508482111562000c725762000c7162000b6c565b5b5062000ce2565b5060208310610133831016604e8410600b841016171562000cb35782820a90508381111562000cad5762000cac62000b6c565b5b62000ce2565b62000cc2848484600162000ba5565b9250905081840481111562000cdc5762000cdb62000b6c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000d0a8262000ce9565b915062000d178362000cf2565b925062000d467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bff565b905092915050565b5f62000d5a8262000ce9565b915062000d678362000ce9565b925082820262000d778162000ce9565b9150828204841483151762000d915762000d9062000b6c565b5b5092915050565b5f62000da48262000ce9565b915062000db18362000ce9565b925082820190508082111562000dcc5762000dcb62000b6c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e0b8262000ce9565b915062000e188362000ce9565b92508262000e2b5762000e2a62000dd2565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e658262000e3a565b9050919050565b62000e778162000e59565b811462000e82575f80fd5b50565b5f8151905062000e958162000e6c565b92915050565b5f6020828403121562000eb35762000eb262000e36565b5b5f62000ec28482850162000e85565b91505092915050565b62000ed68162000e59565b82525050565b5f60408201905062000ef15f83018562000ecb565b62000f00602083018462000ecb565b9392505050565b62000f128162000ce9565b82525050565b5f60208201905062000f2d5f83018462000f07565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000f9f60218362000f33565b915062000fac8262000f43565b604082019050919050565b5f6020820190508181035f83015262000fd08162000f91565b9050919050565b5f81519050919050565b5f5b838110156200100057808201518184015260208101905062000fe3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620010278262000fd7565b62001033818562000f33565b93506200104581856020860162000fe1565b62001050816200100b565b840191505092915050565b5f6020820190508181035f8301526200107581846200101b565b905092915050565b613df4806200108b5f395ff3fe608060405260043610610207575f3560e01c806378109e5411610117578063a8aa1b311161009f578063cec10c111161006e578063cec10c1114610724578063dd62ed3e1461074c578063f2fde38b14610788578063f887ea40146107b0578063fc5482a6146107da5761020e565b8063a8aa1b311461067e578063a9059cbb146106a8578063b2bdfa7b146106e4578063c9567bf91461070e5761020e565b8063893d20e8116100e6578063893d20e8146105c25780638a4068dd146105ec5780638da5cb5b1461060257806395d89b411461062c578063992c58e4146106565761020e565b806378109e541461050a5780637d1db4a5146105345780638285ef911461055e5780638811c5701461059a5761020e565b806330c9a6a01161019a5780635d0044ca116101695780635d0044ca146104505780636ddd17131461047857806370a08231146104a2578063715018a6146104de578063751039fc146104f45761020e565b806330c9a6a014610384578063313ce567146103c057806355265669146103ea578063571ac8b0146104145761020e565b806318160ddd116101d657806318160ddd146102cc5780631df4ccfc146102f657806323b872dd146103205780632ad756721461035c5761020e565b80630445b6671461021257806306fdde031461023c57806308fd3d0514610266578063095ea7b3146102905761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610816565b6040516102339190612f89565b60405180910390f35b348015610247575f80fd5b5061025061081c565b60405161025d919061302c565b60405180910390f35b348015610271575f80fd5b5061027a610859565b6040516102879190613066565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b19190613107565b61086c565b6040516102c39190613066565b60405180910390f35b3480156102d7575f80fd5b506102e0610959565b6040516102ed9190612f89565b60405180910390f35b348015610301575f80fd5b5061030a610962565b6040516103179190612f89565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190613145565b610968565b6040516103539190613066565b60405180910390f35b348015610367575f80fd5b50610382600480360381019061037d9190613195565b610b5b565b005b34801561038f575f80fd5b506103aa60048036038101906103a5919061320c565b610d36565b6040516103b79190612f89565b60405180910390f35b3480156103cb575f80fd5b506103d4610da6565b6040516103e19190613252565b60405180910390f35b3480156103f5575f80fd5b506103fe610dae565b60405161040b9190612f89565b60405180910390f35b34801561041f575f80fd5b5061043a6004803603810190610435919061326b565b610ded565b6040516104479190613066565b60405180910390f35b34801561045b575f80fd5b506104766004803603810190610471919061320c565b610e1f565b005b348015610483575f80fd5b5061048c610ee4565b6040516104999190613066565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c3919061326b565b610ef7565b6040516104d59190612f89565b60405180910390f35b3480156104e9575f80fd5b506104f2610f3d565b005b3480156104ff575f80fd5b5061050861108b565b005b348015610515575f80fd5b5061051e611133565b60405161052b9190612f89565b60405180910390f35b34801561053f575f80fd5b50610548611139565b6040516105559190612f89565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190613107565b61113f565b6040516105919190613066565b60405180910390f35b3480156105a5575f80fd5b506105c060048036038101906105bb91906132c0565b6112d4565b005b3480156105cd575f80fd5b506105d661138d565b6040516105e3919061330d565b60405180910390f35b3480156105f7575f80fd5b5061060061139b565b005b34801561060d575f80fd5b50610616611402565b604051610623919061330d565b60405180910390f35b348015610637575f80fd5b50610640611429565b60405161064d919061302c565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190613326565b611466565b005b348015610689575f80fd5b506106926115cd565b60405161069f919061330d565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c99190613107565b6115f2565b6040516106db9190613066565b60405180910390f35b3480156106ef575f80fd5b506106f8611606565b604051610705919061330d565b60405180910390f35b348015610719575f80fd5b50610722611629565b005b34801561072f575f80fd5b5061074a600480360381019061074591906133af565b6116f5565b005b348015610757575f80fd5b50610772600480360381019061076d91906133ff565b6117a3565b60405161077f9190612f89565b60405180910390f35b348015610793575f80fd5b506107ae60048036038101906107a9919061326b565b611825565b005b3480156107bb575f80fd5b506107c46119e2565b6040516107d19190613498565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb91906134b1565b611a07565b60405161080d9190613066565b60405180910390f35b601e5481565b60606040518060400160405280601081526020017f446565704675636b696e6756616c756500000000000000000000000000000000815250905090565b601d60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109479190612f89565b60405180910390a36001905092915050565b5f600354905090565b600f5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b4757610aca826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a1b9092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b52848484611a7d565b90509392505050565b610b636120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690613539565b60405180910390fd5b8460145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b5f610d9f610d42610dae565b610d91610d826002610d74601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef7565b6120bb90919063ffffffff16565b856120bb90919063ffffffff16565b61213290919063ffffffff16565b9050919050565b5f6012905090565b5f610de8610dbb5f610ef7565b610dda610dc961dead610ef7565b60035461217b90919063ffffffff16565b61217b90919063ffffffff16565b905090565b5f610e18827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61086c565b9050919050565b610e276120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613539565b60405180910390fd5b6001811015610ec0575f80fd5b6103e881600354610ed19190613584565b610edb91906135f2565b60058190555050565b601d60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f456120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613539565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110936120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690613539565b60405180910390fd5b600354600481905550600354600581905550565b60055481565b60045481565b5f3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613692565b60405180910390fd5b5f8203611230578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ee919061330d565b602060405180830381865afa158015611209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122d91906136c4565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161128c9291906136ef565b6020604051808303815f875af11580156112a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cc919061372a565b905092915050565b6112dc6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90613539565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055505050565b5f611396611402565b905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156113ff573d5f803e3d5ffd5b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4446560000000000000000000000000000000000000000000000000000000000815250905090565b61146e6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190613539565b60405180910390fd5b85600a8190555084600d8190555083600b8190555082600c8190555081600e81905550611566826115588561154a8861153c8b8d6121c490919063ffffffff16565b6121c490919063ffffffff16565b6121c490919063ffffffff16565b6121c490919063ffffffff16565b600f8190555080601081905550600260105461158291906135f2565b600f54106115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc9061379f565b60405180910390fd5b505050505050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6115fe338484611a7d565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116316120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613539565b60405180910390fd5b6001601d60146101000a81548160ff0219169083151502179055506103206011819055506101f4601281905550610320601381905550565b6116fd6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090613539565b60405180910390fd5b816011819055508260128190555080601381905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61182d6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613539565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e9061382d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f82611a1283610d36565b11905092915050565b5f838311158290611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a59919061302c565b60405180910390fd5b505f8385611a70919061384b565b9050809150509392505050565b5f601f5f9054906101000a900460ff1615611aa457611a9d848484612221565b90506120ad565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b42575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b9757601d60149054906101000a900460ff16611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d906138c8565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c1a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c54575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cad5750601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d06575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d5f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611db2575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e15575f611dc184610ef7565b90506005548382611dd291906138e6565b1115611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a90613989565b60405180910390fd5b505b611e1f84836123eb565b611e27612485565b15611e3557611e34612557565b5b611ebc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a1b9092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f99575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611fad57611fa8858486612b52565b611faf565b825b90506120018160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209f9190612f89565b60405180910390a360019150505b9392505050565b5f33905090565b5f8083036120cb575f905061212c565b5f82846120d89190613584565b90508284826120e791906135f2565b14612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90613a17565b60405180910390fd5b809150505b92915050565b5f61217383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f10565b905092915050565b5f6121bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a1b565b905092915050565b5f8082846121d291906138e6565b905083811015612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e90613a7f565b60405180910390fd5b8091505092915050565b5f6122a9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a1b9092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061233a8260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123d89190612f89565b60405180910390a3600190509392505050565b60045481111580612442575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247890613ae7565b60405180910390fd5b5050565b5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156124ef5750601f5f9054906101000a900460ff16155b80156125075750601d60159054906101000a900460ff165b80156125525750601e5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601f5f6101000a81548160ff0219169083151502179055505f612580601954601a54611a07565b61258c57600a5461258e565b5f5b90505f6125cd60026125bf600f546125b186601e546120bb90919063ffffffff16565b61213290919063ffffffff16565b61213290919063ffffffff16565b90505f6125e582601e5461217b90919063ffffffff16565b90505f600267ffffffffffffffff81111561260357612602613b05565b5b6040519080825280602002602001820160405280156126315781602001602082028036833780820191505090505b50905030815f8151811061264857612647613b32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106126b8576126b7613b32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401612758959493929190613c4f565b5f604051808303815f87803b15801561276f575f80fd5b505af1158015612781573d5f803e3d5ffd5b505050505f612799824761217b90919063ffffffff16565b90505f6127c46127b360028961213290919063ffffffff16565b600f5461217b90919063ffffffff16565b90505f6127ff60026127f1846127e38c886120bb90919063ffffffff16565b61213290919063ffffffff16565b61213290919063ffffffff16565b90505f6128298361281b600b54876120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f61285384612845600d54886120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f61287d8561286f600c54896120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516128c590613cd4565b5f6040518083038185875af1925050503d805f81146128ff576040519150601f19603f3d011682016040523d82523d5f602084013e612904565b606091505b5050905060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161294d90613cd4565b5f6040518083038185875af1925050503d805f8114612987576040519150601f19603f3d011682016040523d82523d5f602084013e61298c565b606091505b50508091505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516129d790613cd4565b5f6040518083038185875af1925050503d805f8114612a11576040519150601f19603f3d011682016040523d82523d5f602084013e612a16565b606091505b5050809150505f90505f8b1115612b2b57601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612aad96959493929190613ce8565b60606040518083038185885af1158015612ac9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612aee9190613d47565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612b22929190613d97565b60405180910390a15b5050505050505050505050505f601f5f6101000a81548160ff021916908315150217905550565b5f806013549050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb7576011549050612c12565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c115760125490505b5b5f612c5a6064601054612c259190613584565b612c4c84612c3e600f548a6120bb90919063ffffffff16565b6120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f612c86600f54612c78600e54856120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f612c9c828461217b90919063ffffffff16565b9050612cee8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612da08260065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e5f9190612f89565b60405180910390a35f821115612ef057612e848260035461217b90919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee79190612f89565b60405180910390a35b612f03838861217b90919063ffffffff16565b9450505050509392505050565b5f8083118290612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d919061302c565b60405180910390fd5b505f8385612f6491906135f2565b9050809150509392505050565b5f819050919050565b612f8381612f71565b82525050565b5f602082019050612f9c5f830184612f7a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fd9578082015181840152602081019050612fbe565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ffe82612fa2565b6130088185612fac565b9350613018818560208601612fbc565b61302181612fe4565b840191505092915050565b5f6020820190508181035f8301526130448184612ff4565b905092915050565b5f8115159050919050565b6130608161304c565b82525050565b5f6020820190506130795f830184613057565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130ac82613083565b9050919050565b6130bc816130a2565b81146130c6575f80fd5b50565b5f813590506130d7816130b3565b92915050565b6130e681612f71565b81146130f0575f80fd5b50565b5f81359050613101816130dd565b92915050565b5f806040838503121561311d5761311c61307f565b5b5f61312a858286016130c9565b925050602061313b858286016130f3565b9150509250929050565b5f805f6060848603121561315c5761315b61307f565b5b5f613169868287016130c9565b935050602061317a868287016130c9565b925050604061318b868287016130f3565b9150509250925092565b5f805f805f60a086880312156131ae576131ad61307f565b5b5f6131bb888289016130c9565b95505060206131cc888289016130c9565b94505060406131dd888289016130c9565b93505060606131ee888289016130c9565b92505060806131ff888289016130c9565b9150509295509295909350565b5f602082840312156132215761322061307f565b5b5f61322e848285016130f3565b91505092915050565b5f60ff82169050919050565b61324c81613237565b82525050565b5f6020820190506132655f830184613243565b92915050565b5f602082840312156132805761327f61307f565b5b5f61328d848285016130c9565b91505092915050565b61329f8161304c565b81146132a9575f80fd5b50565b5f813590506132ba81613296565b92915050565b5f80604083850312156132d6576132d561307f565b5b5f6132e3858286016132ac565b92505060206132f4858286016130f3565b9150509250929050565b613307816130a2565b82525050565b5f6020820190506133205f8301846132fe565b92915050565b5f805f805f8060c087890312156133405761333f61307f565b5b5f61334d89828a016130f3565b965050602061335e89828a016130f3565b955050604061336f89828a016130f3565b945050606061338089828a016130f3565b935050608061339189828a016130f3565b92505060a06133a289828a016130f3565b9150509295509295509295565b5f805f606084860312156133c6576133c561307f565b5b5f6133d3868287016130f3565b93505060206133e4868287016130f3565b92505060406133f5868287016130f3565b9150509250925092565b5f80604083850312156134155761341461307f565b5b5f613422858286016130c9565b9250506020613433858286016130c9565b9150509250929050565b5f819050919050565b5f61346061345b61345684613083565b61343d565b613083565b9050919050565b5f61347182613446565b9050919050565b5f61348282613467565b9050919050565b61349281613478565b82525050565b5f6020820190506134ab5f830184613489565b92915050565b5f80604083850312156134c7576134c661307f565b5b5f6134d4858286016130f3565b92505060206134e5858286016130f3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613523602083612fac565b915061352e826134ef565b602082019050919050565b5f6020820190508181035f83015261355081613517565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61358e82612f71565b915061359983612f71565b92508282026135a781612f71565b915082820484148315176135be576135bd613557565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135fc82612f71565b915061360783612f71565b925082613617576136166135c5565b5b828204905092915050565b7f746f6b656e416464726573732063616e206e6f7420626520746865206e6174695f8201527f766520746f6b656e000000000000000000000000000000000000000000000000602082015250565b5f61367c602883612fac565b915061368782613622565b604082019050919050565b5f6020820190508181035f8301526136a981613670565b9050919050565b5f815190506136be816130dd565b92915050565b5f602082840312156136d9576136d861307f565b5b5f6136e6848285016136b0565b91505092915050565b5f6040820190506137025f8301856132fe565b61370f6020830184612f7a565b9392505050565b5f8151905061372481613296565b92915050565b5f6020828403121561373f5761373e61307f565b5b5f61374c84828501613716565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e203530250000005f82015250565b5f613789601d83612fac565b915061379482613755565b602082019050919050565b5f6020820190508181035f8301526137b68161377d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613817602683612fac565b9150613822826137bd565b604082019050919050565b5f6020820190508181035f8301526138448161380b565b9050919050565b5f61385582612f71565b915061386083612f71565b925082820390508181111561387857613877613557565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6138b2601483612fac565b91506138bd8261387e565b602082019050919050565b5f6020820190508181035f8301526138df816138a6565b9050919050565b5f6138f082612f71565b91506138fb83612f71565b925082820190508082111561391357613912613557565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613973603e83612fac565b915061397e82613919565b604082019050919050565b5f6020820190508181035f8301526139a081613967565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a01602183612fac565b9150613a0c826139a7565b604082019050919050565b5f6020820190508181035f830152613a2e816139f5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a69601b83612fac565b9150613a7482613a35565b602082019050919050565b5f6020820190508181035f830152613a9681613a5d565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613ad1601183612fac565b9150613adc82613a9d565b602082019050919050565b5f6020820190508181035f830152613afe81613ac5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613b82613b7d613b7884613b5f565b61343d565b612f71565b9050919050565b613b9281613b68565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613bca816130a2565b82525050565b5f613bdb8383613bc1565b60208301905092915050565b5f602082019050919050565b5f613bfd82613b98565b613c078185613ba2565b9350613c1283613bb2565b805f5b83811015613c42578151613c298882613bd0565b9750613c3483613be7565b925050600181019050613c15565b5085935050505092915050565b5f60a082019050613c625f830188612f7a565b613c6f6020830187613b89565b8181036040830152613c818186613bf3565b9050613c9060608301856132fe565b613c9d6080830184612f7a565b9695505050505050565b5f81905092915050565b50565b5f613cbf5f83613ca7565b9150613cca82613cb1565b5f82019050919050565b5f613cde82613cb4565b9150819050919050565b5f60c082019050613cfb5f8301896132fe565b613d086020830188612f7a565b613d156040830187613b89565b613d226060830186613b89565b613d2f60808301856132fe565b613d3c60a0830184612f7a565b979650505050505050565b5f805f60608486031215613d5e57613d5d61307f565b5b5f613d6b868287016136b0565b9350506020613d7c868287016136b0565b9250506040613d8d868287016136b0565b9150509250925092565b5f604082019050613daa5f830185612f7a565b613db76020830184612f7a565b939250505056fea2646970667358221220639dcd629ebc720c784c9ed632a55a2adfc649f3a5955d3281bc96a30dc8a78664736f6c63430008150033
Deployed Bytecode
0x608060405260043610610207575f3560e01c806378109e5411610117578063a8aa1b311161009f578063cec10c111161006e578063cec10c1114610724578063dd62ed3e1461074c578063f2fde38b14610788578063f887ea40146107b0578063fc5482a6146107da5761020e565b8063a8aa1b311461067e578063a9059cbb146106a8578063b2bdfa7b146106e4578063c9567bf91461070e5761020e565b8063893d20e8116100e6578063893d20e8146105c25780638a4068dd146105ec5780638da5cb5b1461060257806395d89b411461062c578063992c58e4146106565761020e565b806378109e541461050a5780637d1db4a5146105345780638285ef911461055e5780638811c5701461059a5761020e565b806330c9a6a01161019a5780635d0044ca116101695780635d0044ca146104505780636ddd17131461047857806370a08231146104a2578063715018a6146104de578063751039fc146104f45761020e565b806330c9a6a014610384578063313ce567146103c057806355265669146103ea578063571ac8b0146104145761020e565b806318160ddd116101d657806318160ddd146102cc5780631df4ccfc146102f657806323b872dd146103205780632ad756721461035c5761020e565b80630445b6671461021257806306fdde031461023c57806308fd3d0514610266578063095ea7b3146102905761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610816565b6040516102339190612f89565b60405180910390f35b348015610247575f80fd5b5061025061081c565b60405161025d919061302c565b60405180910390f35b348015610271575f80fd5b5061027a610859565b6040516102879190613066565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b19190613107565b61086c565b6040516102c39190613066565b60405180910390f35b3480156102d7575f80fd5b506102e0610959565b6040516102ed9190612f89565b60405180910390f35b348015610301575f80fd5b5061030a610962565b6040516103179190612f89565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190613145565b610968565b6040516103539190613066565b60405180910390f35b348015610367575f80fd5b50610382600480360381019061037d9190613195565b610b5b565b005b34801561038f575f80fd5b506103aa60048036038101906103a5919061320c565b610d36565b6040516103b79190612f89565b60405180910390f35b3480156103cb575f80fd5b506103d4610da6565b6040516103e19190613252565b60405180910390f35b3480156103f5575f80fd5b506103fe610dae565b60405161040b9190612f89565b60405180910390f35b34801561041f575f80fd5b5061043a6004803603810190610435919061326b565b610ded565b6040516104479190613066565b60405180910390f35b34801561045b575f80fd5b506104766004803603810190610471919061320c565b610e1f565b005b348015610483575f80fd5b5061048c610ee4565b6040516104999190613066565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c3919061326b565b610ef7565b6040516104d59190612f89565b60405180910390f35b3480156104e9575f80fd5b506104f2610f3d565b005b3480156104ff575f80fd5b5061050861108b565b005b348015610515575f80fd5b5061051e611133565b60405161052b9190612f89565b60405180910390f35b34801561053f575f80fd5b50610548611139565b6040516105559190612f89565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190613107565b61113f565b6040516105919190613066565b60405180910390f35b3480156105a5575f80fd5b506105c060048036038101906105bb91906132c0565b6112d4565b005b3480156105cd575f80fd5b506105d661138d565b6040516105e3919061330d565b60405180910390f35b3480156105f7575f80fd5b5061060061139b565b005b34801561060d575f80fd5b50610616611402565b604051610623919061330d565b60405180910390f35b348015610637575f80fd5b50610640611429565b60405161064d919061302c565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190613326565b611466565b005b348015610689575f80fd5b506106926115cd565b60405161069f919061330d565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c99190613107565b6115f2565b6040516106db9190613066565b60405180910390f35b3480156106ef575f80fd5b506106f8611606565b604051610705919061330d565b60405180910390f35b348015610719575f80fd5b50610722611629565b005b34801561072f575f80fd5b5061074a600480360381019061074591906133af565b6116f5565b005b348015610757575f80fd5b50610772600480360381019061076d91906133ff565b6117a3565b60405161077f9190612f89565b60405180910390f35b348015610793575f80fd5b506107ae60048036038101906107a9919061326b565b611825565b005b3480156107bb575f80fd5b506107c46119e2565b6040516107d19190613498565b60405180910390f35b3480156107e5575f80fd5b5061080060048036038101906107fb91906134b1565b611a07565b60405161080d9190613066565b60405180910390f35b601e5481565b60606040518060400160405280601081526020017f446565704675636b696e6756616c756500000000000000000000000000000000815250905090565b601d60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109479190612f89565b60405180910390a36001905092915050565b5f600354905090565b600f5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b4757610aca826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a1b9092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b52848484611a7d565b90509392505050565b610b636120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be690613539565b60405180910390fd5b8460145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b5f610d9f610d42610dae565b610d91610d826002610d74601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef7565b6120bb90919063ffffffff16565b856120bb90919063ffffffff16565b61213290919063ffffffff16565b9050919050565b5f6012905090565b5f610de8610dbb5f610ef7565b610dda610dc961dead610ef7565b60035461217b90919063ffffffff16565b61217b90919063ffffffff16565b905090565b5f610e18827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61086c565b9050919050565b610e276120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613539565b60405180910390fd5b6001811015610ec0575f80fd5b6103e881600354610ed19190613584565b610edb91906135f2565b60058190555050565b601d60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f456120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613539565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110936120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690613539565b60405180910390fd5b600354600481905550600354600581905550565b60055481565b60045481565b5f3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a590613692565b60405180910390fd5b5f8203611230578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ee919061330d565b602060405180830381865afa158015611209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122d91906136c4565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161128c9291906136ef565b6020604051808303815f875af11580156112a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cc919061372a565b905092915050565b6112dc6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90613539565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055505050565b5f611396611402565b905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156113ff573d5f803e3d5ffd5b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4446560000000000000000000000000000000000000000000000000000000000815250905090565b61146e6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190613539565b60405180910390fd5b85600a8190555084600d8190555083600b8190555082600c8190555081600e81905550611566826115588561154a8861153c8b8d6121c490919063ffffffff16565b6121c490919063ffffffff16565b6121c490919063ffffffff16565b6121c490919063ffffffff16565b600f8190555080601081905550600260105461158291906135f2565b600f54106115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc9061379f565b60405180910390fd5b505050505050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6115fe338484611a7d565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116316120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b490613539565b60405180910390fd5b6001601d60146101000a81548160ff0219169083151502179055506103206011819055506101f4601281905550610320601381905550565b6116fd6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090613539565b60405180910390fd5b816011819055508260128190555080601381905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61182d6120b4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613539565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e9061382d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f82611a1283610d36565b11905092915050565b5f838311158290611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a59919061302c565b60405180910390fd5b505f8385611a70919061384b565b9050809150509392505050565b5f601f5f9054906101000a900460ff1615611aa457611a9d848484612221565b90506120ad565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b42575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b9757601d60149054906101000a900460ff16611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d906138c8565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c1a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c54575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cad5750601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d06575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d5f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611db2575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e15575f611dc184610ef7565b90506005548382611dd291906138e6565b1115611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a90613989565b60405180910390fd5b505b611e1f84836123eb565b611e27612485565b15611e3557611e34612557565b5b611ebc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a1b9092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f99575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611fad57611fa8858486612b52565b611faf565b825b90506120018160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209f9190612f89565b60405180910390a360019150505b9392505050565b5f33905090565b5f8083036120cb575f905061212c565b5f82846120d89190613584565b90508284826120e791906135f2565b14612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90613a17565b60405180910390fd5b809150505b92915050565b5f61217383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f10565b905092915050565b5f6121bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a1b565b905092915050565b5f8082846121d291906138e6565b905083811015612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e90613a7f565b60405180910390fd5b8091505092915050565b5f6122a9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a1b9092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061233a8260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123d89190612f89565b60405180910390a3600190509392505050565b60045481111580612442575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247890613ae7565b60405180910390fd5b5050565b5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156124ef5750601f5f9054906101000a900460ff16155b80156125075750601d60159054906101000a900460ff165b80156125525750601e5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601f5f6101000a81548160ff0219169083151502179055505f612580601954601a54611a07565b61258c57600a5461258e565b5f5b90505f6125cd60026125bf600f546125b186601e546120bb90919063ffffffff16565b61213290919063ffffffff16565b61213290919063ffffffff16565b90505f6125e582601e5461217b90919063ffffffff16565b90505f600267ffffffffffffffff81111561260357612602613b05565b5b6040519080825280602002602001820160405280156126315781602001602082028036833780820191505090505b50905030815f8151811061264857612647613b32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106126b8576126b7613b32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401612758959493929190613c4f565b5f604051808303815f87803b15801561276f575f80fd5b505af1158015612781573d5f803e3d5ffd5b505050505f612799824761217b90919063ffffffff16565b90505f6127c46127b360028961213290919063ffffffff16565b600f5461217b90919063ffffffff16565b90505f6127ff60026127f1846127e38c886120bb90919063ffffffff16565b61213290919063ffffffff16565b61213290919063ffffffff16565b90505f6128298361281b600b54876120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f61285384612845600d54886120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f61287d8561286f600c54896120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516128c590613cd4565b5f6040518083038185875af1925050503d805f81146128ff576040519150601f19603f3d011682016040523d82523d5f602084013e612904565b606091505b5050905060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161294d90613cd4565b5f6040518083038185875af1925050503d805f8114612987576040519150601f19603f3d011682016040523d82523d5f602084013e61298c565b606091505b50508091505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516129d790613cd4565b5f6040518083038185875af1925050503d805f8114612a11576040519150601f19603f3d011682016040523d82523d5f602084013e612a16565b606091505b5050809150505f90505f8b1115612b2b57601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612aad96959493929190613ce8565b60606040518083038185885af1158015612ac9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612aee9190613d47565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612b22929190613d97565b60405180910390a15b5050505050505050505050505f601f5f6101000a81548160ff021916908315150217905550565b5f806013549050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb7576011549050612c12565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c115760125490505b5b5f612c5a6064601054612c259190613584565b612c4c84612c3e600f548a6120bb90919063ffffffff16565b6120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f612c86600f54612c78600e54856120bb90919063ffffffff16565b61213290919063ffffffff16565b90505f612c9c828461217b90919063ffffffff16565b9050612cee8160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612da08260065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c490919063ffffffff16565b60065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e5f9190612f89565b60405180910390a35f821115612ef057612e848260035461217b90919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee79190612f89565b60405180910390a35b612f03838861217b90919063ffffffff16565b9450505050509392505050565b5f8083118290612f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4d919061302c565b60405180910390fd5b505f8385612f6491906135f2565b9050809150509392505050565b5f819050919050565b612f8381612f71565b82525050565b5f602082019050612f9c5f830184612f7a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fd9578082015181840152602081019050612fbe565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ffe82612fa2565b6130088185612fac565b9350613018818560208601612fbc565b61302181612fe4565b840191505092915050565b5f6020820190508181035f8301526130448184612ff4565b905092915050565b5f8115159050919050565b6130608161304c565b82525050565b5f6020820190506130795f830184613057565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130ac82613083565b9050919050565b6130bc816130a2565b81146130c6575f80fd5b50565b5f813590506130d7816130b3565b92915050565b6130e681612f71565b81146130f0575f80fd5b50565b5f81359050613101816130dd565b92915050565b5f806040838503121561311d5761311c61307f565b5b5f61312a858286016130c9565b925050602061313b858286016130f3565b9150509250929050565b5f805f6060848603121561315c5761315b61307f565b5b5f613169868287016130c9565b935050602061317a868287016130c9565b925050604061318b868287016130f3565b9150509250925092565b5f805f805f60a086880312156131ae576131ad61307f565b5b5f6131bb888289016130c9565b95505060206131cc888289016130c9565b94505060406131dd888289016130c9565b93505060606131ee888289016130c9565b92505060806131ff888289016130c9565b9150509295509295909350565b5f602082840312156132215761322061307f565b5b5f61322e848285016130f3565b91505092915050565b5f60ff82169050919050565b61324c81613237565b82525050565b5f6020820190506132655f830184613243565b92915050565b5f602082840312156132805761327f61307f565b5b5f61328d848285016130c9565b91505092915050565b61329f8161304c565b81146132a9575f80fd5b50565b5f813590506132ba81613296565b92915050565b5f80604083850312156132d6576132d561307f565b5b5f6132e3858286016132ac565b92505060206132f4858286016130f3565b9150509250929050565b613307816130a2565b82525050565b5f6020820190506133205f8301846132fe565b92915050565b5f805f805f8060c087890312156133405761333f61307f565b5b5f61334d89828a016130f3565b965050602061335e89828a016130f3565b955050604061336f89828a016130f3565b945050606061338089828a016130f3565b935050608061339189828a016130f3565b92505060a06133a289828a016130f3565b9150509295509295509295565b5f805f606084860312156133c6576133c561307f565b5b5f6133d3868287016130f3565b93505060206133e4868287016130f3565b92505060406133f5868287016130f3565b9150509250925092565b5f80604083850312156134155761341461307f565b5b5f613422858286016130c9565b9250506020613433858286016130c9565b9150509250929050565b5f819050919050565b5f61346061345b61345684613083565b61343d565b613083565b9050919050565b5f61347182613446565b9050919050565b5f61348282613467565b9050919050565b61349281613478565b82525050565b5f6020820190506134ab5f830184613489565b92915050565b5f80604083850312156134c7576134c661307f565b5b5f6134d4858286016130f3565b92505060206134e5858286016130f3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613523602083612fac565b915061352e826134ef565b602082019050919050565b5f6020820190508181035f83015261355081613517565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61358e82612f71565b915061359983612f71565b92508282026135a781612f71565b915082820484148315176135be576135bd613557565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135fc82612f71565b915061360783612f71565b925082613617576136166135c5565b5b828204905092915050565b7f746f6b656e416464726573732063616e206e6f7420626520746865206e6174695f8201527f766520746f6b656e000000000000000000000000000000000000000000000000602082015250565b5f61367c602883612fac565b915061368782613622565b604082019050919050565b5f6020820190508181035f8301526136a981613670565b9050919050565b5f815190506136be816130dd565b92915050565b5f602082840312156136d9576136d861307f565b5b5f6136e6848285016136b0565b91505092915050565b5f6040820190506137025f8301856132fe565b61370f6020830184612f7a565b9392505050565b5f8151905061372481613296565b92915050565b5f6020828403121561373f5761373e61307f565b5b5f61374c84828501613716565b91505092915050565b7f466565732063616e206e6f74206265206d6f7265207468616e203530250000005f82015250565b5f613789601d83612fac565b915061379482613755565b602082019050919050565b5f6020820190508181035f8301526137b68161377d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613817602683612fac565b9150613822826137bd565b604082019050919050565b5f6020820190508181035f8301526138448161380b565b9050919050565b5f61385582612f71565b915061386083612f71565b925082820390508181111561387857613877613557565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6138b2601483612fac565b91506138bd8261387e565b602082019050919050565b5f6020820190508181035f8301526138df816138a6565b9050919050565b5f6138f082612f71565b91506138fb83612f71565b925082820190508082111561391357613912613557565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613973603e83612fac565b915061397e82613919565b604082019050919050565b5f6020820190508181035f8301526139a081613967565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a01602183612fac565b9150613a0c826139a7565b604082019050919050565b5f6020820190508181035f830152613a2e816139f5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a69601b83612fac565b9150613a7482613a35565b602082019050919050565b5f6020820190508181035f830152613a9681613a5d565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613ad1601183612fac565b9150613adc82613a9d565b602082019050919050565b5f6020820190508181035f830152613afe81613ac5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613b82613b7d613b7884613b5f565b61343d565b612f71565b9050919050565b613b9281613b68565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613bca816130a2565b82525050565b5f613bdb8383613bc1565b60208301905092915050565b5f602082019050919050565b5f613bfd82613b98565b613c078185613ba2565b9350613c1283613bb2565b805f5b83811015613c42578151613c298882613bd0565b9750613c3483613be7565b925050600181019050613c15565b5085935050505092915050565b5f60a082019050613c625f830188612f7a565b613c6f6020830187613b89565b8181036040830152613c818186613bf3565b9050613c9060608301856132fe565b613c9d6080830184612f7a565b9695505050505050565b5f81905092915050565b50565b5f613cbf5f83613ca7565b9150613cca82613cb1565b5f82019050919050565b5f613cde82613cb4565b9150819050919050565b5f60c082019050613cfb5f8301896132fe565b613d086020830188612f7a565b613d156040830187613b89565b613d226060830186613b89565b613d2f60808301856132fe565b613d3c60a0830184612f7a565b979650505050505050565b5f805f60608486031215613d5e57613d5d61307f565b5b5f613d6b868287016136b0565b9350506020613d7c868287016136b0565b9250506040613d8d868287016136b0565b9150509250925092565b5f604082019050613daa5f830185612f7a565b613db76020830184612f7a565b939250505056fea2646970667358221220639dcd629ebc720c784c9ed632a55a2adfc649f3a5955d3281bc96a30dc8a78664736f6c63430008150033
Deployed Bytecode Sourcemap
5085:12699:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6823:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8246:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6740:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8668:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7976:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6083:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9186:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16455:461;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17407:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8070:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17568:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8892:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16924:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6786:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8416:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1999:148;;;;;;;;;;;;;:::i;:::-;;9569:150;;;;;;;;;;;;;:::i;:::-;;5586:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5521:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13016:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17098:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8332:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12886:123;;;;;;;;;;;;;:::i;:::-;;1785:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8156:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15838:604;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6708:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9022:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1405:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13691:222;;;;;;;;;;;;;:::i;:::-;;13403:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8527:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2155:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6638:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17261:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6823:55;;;;:::o;8246:80::-;8294:13;8318:5;;;;;;;;;;;;;;;;;8311:12;;8246:80;:::o;6740:31::-;;;;;;;;;;;;;:::o;8668:216::-;8743:4;8795:6;8760:11;:23;8772:10;8760:23;;;;;;;;;;;;;;;:32;8784:7;8760:32;;;;;;;;;;;;;;;:41;;;;8838:7;8817:37;;8826:10;8817:37;;;8847:6;8817:37;;;;;;:::i;:::-;;;;;;;;8872:4;8865:11;;8668:216;;;;:::o;7976:88::-;8031:7;8049:12;;8042:19;;7976:88;:::o;6083:101::-;;;;:::o;9186:370::-;9286:4;9341:17;9306:11;:19;9318:6;9306:19;;;;;;;;;;;;;;;:31;9326:10;9306:31;;;;;;;;;;;;;;;;:52;9303:186;;9408:69;9444:6;9408:69;;;;;;;;;;;;;;;;;:11;:19;9420:6;9408:19;;;;;;;;;;;;;;;:31;9428:10;9408:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9374:11;:19;9386:6;9374:19;;;;;;;;;;;;;;;:31;9394:10;9374:31;;;;;;;;;;;;;;;:103;;;;9303:186;9508:40;9522:6;9530:9;9541:6;9508:13;:40::i;:::-;9501:47;;9186:370;;;;;:::o;16455:461::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16674:15:::1;16657:14;;:32;;;;;;;;;;;;;;;;;;16723:21;16700:20;;:44;;;;;;;;;;;;;;;;;;16780:23;16755:22;;:48;;;;;;;;;;;;;;;;;;16835:19;16814:18;;:40;;;;;;;;;;;;;;;;;;16883:16;16865:15;;:34;;;;;;;;;;;;;;;;;;16455:461:::0;;;;;:::o;17407:149::-;17467:7;17494:54;17535:12;:10;:12::i;:::-;17494:36;17507:22;17527:1;17507:15;17517:4;;;;;;;;;;;17507:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;17494:8;:12;;:36;;;;:::i;:::-;:40;;:54;;;;:::i;:::-;17487:61;;17407:149;;;:::o;8070:80::-;8122:5;5445:2;8131:16;;8070:80;:::o;17568:132::-;17611:7;17638:54;17676:15;5274:42;17676:9;:15::i;:::-;17638:33;17655:15;5201:42;17655:9;:15::i;:::-;17638:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;17631:61;;17568:132;:::o;8892:122::-;8947:4;8971:35;8979:7;8988:17;8971:7;:35::i;:::-;8964:42;;8892:122;;;:::o;16924:166::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17018:1:::1;17005:9;:14;;16997:23;;;::::0;::::1;;17078:4;17065:9;17050:12;;:24;;;;:::i;:::-;17049:33;;;;:::i;:::-;17031:15;:51;;;;16924:166:::0;:::o;6786:30::-;;;;;;;;;;;;;:::o;8416:105::-;8482:7;8500:9;:18;8510:7;8500:18;;;;;;;;;;;;;;;;8493:25;;8416:105;;;:::o;1999:148::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2106:1:::1;2069:40;;2090:6;::::0;::::1;;;;;;;;2069:40;;;;;;;;;;;;2137:1;2120:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1999:148::o:0;9569:150::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9643:12:::1;;9628;:27;;;;9688:12;;9670:15;:30;;;;9569:150::o:0;5586:61::-;;;;:::o;5521:58::-;;;;:::o;13016:379::-;13097:12;13154:4;13130:29;;:12;:29;;;13122:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;13233:1;13223:6;:11;13220:95;;13265:12;13259:29;;;13297:4;13259:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13250:53;;13220:95;13341:12;13335:28;;;13364:14;;;;;;;;;;;13380:6;13335:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13328:59;;13016:379;;;;:::o;17098:155::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17198:8:::1;17184:11;;:22;;;;;;;;;;;;;;;;;;17233:7;17217:13;:23;;;;17098:155:::0;;:::o;8332:78::-;8384:7;8401;:5;:7::i;:::-;8394:14;;8332:78;:::o;12886:123::-;12940:14;;;;;;;;;;;12932:32;;:55;12965:21;12932:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12886:123::o;1785:79::-;1823:7;1850:6;;;;;;;;;;;1843:13;;1785:79;:::o;8156:84::-;8206:13;8230:7;;;;;;;;;;;;;;;;;8223:14;;8156:84;:::o;15838:604::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16038:13:::1;16023:12;:28;;;;16072:8;16062:7;:18;;;;16106:13;16091:12;:28;;;;16147:15;16130:14;:32;;;;16186:11;16173:10;:24;;;;16219:84;16291:11;16219:67;16270:15;16219:46;16251:13;16219:27;16237:8;16219:13;:17;;:27;;;;:::i;:::-;:31;;:46;;;;:::i;:::-;:50;;:67;;;;:::i;:::-;:71;;:84;;;;:::i;:::-;16208:8;:95;;;;16331:15;16314:14;:32;;;;16393:1;16376:14;;:18;;;;:::i;:::-;16365:8;;:29;16357:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15838:604:::0;;;;;;:::o;6708:19::-;;;;;;;;;;;;;:::o;9022:156::-;9102:4;9126:44;9140:10;9152:9;9163:6;9126:13;:44::i;:::-;9119:51;;9022:156;;;;:::o;1405:21::-;;;;;;;;;;;;:::o;13691:222::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13759:4:::1;13745:11;;:18;;;;;;;;;;;;;;;;;;13791:3;13774:14;:20;;;;13821:3;13805:13;:19;;;;13856:3;13835:18;:24;;;;13691:222::o:0;13403:273::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13545:17:::1;13528:14;:34;;;;13589:16;13573:13;:32;;;;13637:15;13616:18;:36;;;;13403:273:::0;;;:::o;8527:133::-;8611:7;8629:11;:19;8641:6;8629:19;;;;;;;;;;;;;;;:28;8649:7;8629:28;;;;;;;;;;;;;;;;8622:35;;8527:133;;;;:::o;2155:244::-;1922:12;:10;:12::i;:::-;1912:22;;:6;;;;;;;;;;:22;;;1904:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2264:1:::1;2244:22;;:8;:22;;::::0;2236:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2354:8;2325:38;;2346:6;::::0;::::1;;;;;;;;2325:38;;;;;;;;;;;;2383:8;2374:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2155:244:::0;:::o;6638:24::-;;;;;;;;;;;;;:::o;17261:138::-;17337:4;17385:6;17361:21;17373:8;17361:11;:21::i;:::-;:30;17354:37;;17261:138;;;;:::o;4297:192::-;4383:7;4416:1;4411;:6;;4419:12;4403:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4443:9;4459:1;4455;:5;;;;:::i;:::-;4443:17;;4480:1;4473:8;;;4297:192;;;;;:::o;9747:1241::-;9839:4;9859:6;;;;;;;;;;;9856:63;;;9875:41;9890:6;9898:9;9909:6;9875:14;:41::i;:::-;9868:48;;;;9856:63;9935:14;:22;9950:6;9935:22;;;;;;;;;;;;;;;;;;;;;;;;;9934:23;:53;;;;;9962:14;:25;9977:9;9962:25;;;;;;;;;;;;;;;;;;;;;;;;;9961:26;9934:53;9931:139;;;10011:11;;;;;;;;;;;10003:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9931:139;10112:14;:22;10127:6;10112:22;;;;;;;;;;;;;;;;;;;;;;;;;10111:23;:53;;;;;10159:4;10138:26;;:9;:26;;;;10111:53;:84;;;;;5201:42;10169:26;;:9;:26;;;;10111:84;:105;;;;;10212:4;;;;;;;;;;;10199:17;;:9;:17;;;;10111:105;:140;;;;;10233:18;;;;;;;;;;;10220:31;;:9;:31;;;;10111:140;:177;;;;;10268:20;;;;;;;;;;;10255:33;;:9;:33;;;;10111:177;:210;;;;;10293:17;:28;10311:9;10293:28;;;;;;;;;;;;;;;;;;;;;;;;;10292:29;10111:210;10107:402;;;10337:18;10358:20;10368:9;10358;:20::i;:::-;10337:41;;10426:15;;10415:6;10402:10;:19;;;;:::i;:::-;10401:40;;10393:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;10322:187;10107:402;10521:28;10534:6;10542;10521:12;:28::i;:::-;10567:16;:14;:16::i;:::-;10564:35;;;10586:10;:8;:10::i;:::-;10564:35;10629:53;10651:6;10629:53;;;;;;;;;;;;;;;;;:9;:17;10639:6;10629:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10609:9;:17;10619:6;10609:17;;;;;;;;;;;;;;;:73;;;;10695:22;10721:16;:24;10738:6;10721:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;10749:16;:27;10766:9;10749:27;;;;;;;;;;;;;;;;;;;;;;;;;10721:55;10720:103;;10789:34;10797:6;10805;10813:9;10789:7;:34::i;:::-;10720:103;;;10780:6;10720:103;10695:128;;10857:40;10882:14;10857:9;:20;10867:9;10857:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10834:9;:20;10844:9;10834:20;;;;;;;;;;;;;;;:63;;;;10932:9;10915:43;;10924:6;10915:43;;;10943:14;10915:43;;;;;;:::i;:::-;;;;;;;;10976:4;10969:11;;;9747:1241;;;;;;:::o;1126:115::-;1179:15;1222:10;1207:26;;1126:115;:::o;4495:250::-;4553:7;4582:1;4577;:6;4573:47;;4607:1;4600:8;;;;4573:47;4632:9;4648:1;4644;:5;;;;:::i;:::-;4632:17;;4677:1;4672;4668;:5;;;;:::i;:::-;:10;4660:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4736:1;4729:8;;;4495:250;;;;;:::o;4751:132::-;4809:7;4836:39;4840:1;4843;4836:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4829:46;;4751:132;;;;:::o;4155:136::-;4213:7;4240:43;4244:1;4247;4240:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4233:50;;4155:136;;;;:::o;3968:181::-;4026:7;4046:9;4062:1;4058;:5;;;;:::i;:::-;4046:17;;4087:1;4082;:6;;4074:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4140:1;4133:8;;;3968:181;;;;:::o;10997:330::-;11090:4;11127:53;11149:6;11127:53;;;;;;;;;;;;;;;;;:9;:17;11137:6;11127:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11107:9;:17;11117:6;11107:17;;;;;;;;;;;;;;;:73;;;;11214:32;11239:6;11214:9;:20;11224:9;11214:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11191:9;:20;11201:9;11191:20;;;;;;;;;;;;;;;:55;;;;11279:9;11262:35;;11271:6;11262:35;;;11290:6;11262:35;;;;;;:::i;:::-;;;;;;;;11315:4;11308:11;;10997:330;;;;;:::o;11335:168::-;11432:12;;11422:6;:22;;:51;;;;11448:17;:25;11466:6;11448:25;;;;;;;;;;;;;;;;;;;;;;;;;11422:51;11414:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11335:168;;:::o;12676:197::-;12725:4;12763;;;;;;;;;;;12749:18;;:10;:18;;;;:38;;;;;12781:6;;;;;;;;;;;12780:7;12749:38;:62;;;;;12800:11;;;;;;;;;;;12749:62;:116;;;;;12852:13;;12824:9;:24;12842:4;12824:24;;;;;;;;;;;;;;;;:41;;12749:116;12742:123;;12676:197;:::o;13946:1876::-;6935:4;6926:6;;:13;;;;;;;;;;;;;;;;;;13995:27:::1;14025:50;14037:12;;14051:23;;14025:11;:50::i;:::-;:69;;14082:12;;14025:69;;;14078:1;14025:69;13995:99;;14105:23;14131:59;14188:1;14131:52;14174:8;;14131:38;14149:19;14131:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;14105:85;;14201:20;14224:34;14242:15;14224:13;;:17;;:34;;;;:::i;:::-;14201:57;;14271:21;14309:1;14295:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14271:40;;14340:4;14322;14327:1;14322:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14366:4;;;;;;;;;;;14356;14361:1;14356:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;14383:21;14407;14383:45;;14441:6;;;;;;;;;;;:57;;;14513:12;14540:1;14556:4;14583;14603:15;14441:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14642:17;14662:40;14688:13;14662:21;:25;;:40;;;;:::i;:::-;14642:60;;14715:19;14737:40;14750:26;14774:1;14750:19;:23;;:26;;;;:::i;:::-;14737:8;;:12;;:40;;;;:::i;:::-;14715:62;;14798:26;14827:58;14883:1;14827:51;14866:11;14827:34;14841:19;14827:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;14798:87;;14896:26;14925:44;14957:11;14925:27;14939:12;;14925:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;14896:73;;14980:21;15004:39;15031:11;15004:22;15018:7;;15004:9;:13;;:22;;;;:::i;:::-;:26;;:39;;;;:::i;:::-;14980:63;;15054:28;15085:46;15119:11;15085:29;15099:14;;15085:9;:13;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;15054:77;;15145:15;15173:20;;;;;;;;;;;15165:34;;15207:18;15165:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15144:86;;;15265:22;;;;;;;;;;;15257:36;;15301:20;15257:69;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15241:85;;;;;15361:15;;;;;;;;;;;15353:29;;15390:13;15353:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15337:71;;;;;15442:5;15429:18;;15481:1;15463:15;:19;15460:355;;;15498:6;;;;;;;;;;;:22;;;15528:18;15574:4;15598:15;15632:1;15652::::0;15672:14:::1;;;;;;;;;;;15705:15;15498:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15755:48;15767:18;15787:15;15755:48;;;;;;;:::i;:::-;;;;;;;;15460:355;13984:1838;;;;;;;;;;;;6953:5:::0;6944:6;;:14;;;;;;;;;;;;;;;;;;13946:1876::o;11638:1030::-;11724:7;11754:18;11775;;11754:39;;11820:4;;;;;;;;;;;11807:17;;:9;:17;;;11804:154;;11854:14;;11841:27;;11804:154;;;11899:4;;;;;;;;;;;11889:14;;:6;:14;;;11886:72;;11933:13;;11920:26;;11886:72;11804:154;11970:17;11990:62;12048:3;12031:14;;:20;;;;:::i;:::-;11990:36;12015:10;11990:20;12001:8;;11990:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;11970:82;;12063:21;12087:39;12117:8;;12087:25;12101:10;;12087:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;12063:63;;12137:22;12162:28;12176:13;12162:9;:13;;:28;;;;:::i;:::-;12137:53;;12228:44;12257:14;12228:9;:24;12246:4;12228:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12201:9;:24;12219:4;12201:24;;;;;;;;;;;;;;;:71;;;;12315:48;12349:13;12315:9;:29;12325:18;;;;;;;;;;;12315:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;12283:9;:29;12293:18;;;;;;;;;;;12283:29;;;;;;;;;;;;;;;:80;;;;12404:4;12379:47;;12388:6;12379:47;;;12411:14;12379:47;;;;;;:::i;:::-;;;;;;;;12476:1;12460:13;:17;12457:163;;;12508:31;12525:13;12508:12;;:16;;:31;;;;:::i;:::-;12493:12;:46;;;;5274:42;12559:37;;12568:6;12559:37;;;12582:13;12559:37;;;;;;:::i;:::-;;;;;;;;12457:163;12639:21;12650:9;12639:6;:10;;:21;;;;:::i;:::-;12632:28;;;;;;11638:1030;;;;;:::o;4889:189::-;4975:7;5007:1;5003;:5;5010:12;4995:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5034:9;5050:1;5046;:5;;;;:::i;:::-;5034:17;;5069:1;5062:8;;;4889:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:911::-;4518:6;4526;4534;4542;4550;4599:3;4587:9;4578:7;4574:23;4570:33;4567:120;;;4606:79;;:::i;:::-;4567:120;4726:1;4751:53;4796:7;4787:6;4776:9;4772:22;4751:53;:::i;:::-;4741:63;;4697:117;4853:2;4879:53;4924:7;4915:6;4904:9;4900:22;4879:53;:::i;:::-;4869:63;;4824:118;4981:2;5007:53;5052:7;5043:6;5032:9;5028:22;5007:53;:::i;:::-;4997:63;;4952:118;5109:2;5135:53;5180:7;5171:6;5160:9;5156:22;5135:53;:::i;:::-;5125:63;;5080:118;5237:3;5264:53;5309:7;5300:6;5289:9;5285:22;5264:53;:::i;:::-;5254:63;;5208:119;4423:911;;;;;;;;:::o;5340:329::-;5399:6;5448:2;5436:9;5427:7;5423:23;5419:32;5416:119;;;5454:79;;:::i;:::-;5416:119;5574:1;5599:53;5644:7;5635:6;5624:9;5620:22;5599:53;:::i;:::-;5589:63;;5545:117;5340:329;;;;:::o;5675:86::-;5710:7;5750:4;5743:5;5739:16;5728:27;;5675:86;;;:::o;5767:112::-;5850:22;5866:5;5850:22;:::i;:::-;5845:3;5838:35;5767:112;;:::o;5885:214::-;5974:4;6012:2;6001:9;5997:18;5989:26;;6025:67;6089:1;6078:9;6074:17;6065:6;6025:67;:::i;:::-;5885:214;;;;:::o;6105:329::-;6164:6;6213:2;6201:9;6192:7;6188:23;6184:32;6181:119;;;6219:79;;:::i;:::-;6181:119;6339:1;6364:53;6409:7;6400:6;6389:9;6385:22;6364:53;:::i;:::-;6354:63;;6310:117;6105:329;;;;:::o;6440:116::-;6510:21;6525:5;6510:21;:::i;:::-;6503:5;6500:32;6490:60;;6546:1;6543;6536:12;6490:60;6440:116;:::o;6562:133::-;6605:5;6643:6;6630:20;6621:29;;6659:30;6683:5;6659:30;:::i;:::-;6562:133;;;;:::o;6701:468::-;6766:6;6774;6823:2;6811:9;6802:7;6798:23;6794:32;6791:119;;;6829:79;;:::i;:::-;6791:119;6949:1;6974:50;7016:7;7007:6;6996:9;6992:22;6974:50;:::i;:::-;6964:60;;6920:114;7073:2;7099:53;7144:7;7135:6;7124:9;7120:22;7099:53;:::i;:::-;7089:63;;7044:118;6701:468;;;;;:::o;7175:118::-;7262:24;7280:5;7262:24;:::i;:::-;7257:3;7250:37;7175:118;;:::o;7299:222::-;7392:4;7430:2;7419:9;7415:18;7407:26;;7443:71;7511:1;7500:9;7496:17;7487:6;7443:71;:::i;:::-;7299:222;;;;:::o;7527:1057::-;7631:6;7639;7647;7655;7663;7671;7720:3;7708:9;7699:7;7695:23;7691:33;7688:120;;;7727:79;;:::i;:::-;7688:120;7847:1;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7818:117;7974:2;8000:53;8045:7;8036:6;8025:9;8021:22;8000:53;:::i;:::-;7990:63;;7945:118;8102:2;8128:53;8173:7;8164:6;8153:9;8149:22;8128:53;:::i;:::-;8118:63;;8073:118;8230:2;8256:53;8301:7;8292:6;8281:9;8277:22;8256:53;:::i;:::-;8246:63;;8201:118;8358:3;8385:53;8430:7;8421:6;8410:9;8406:22;8385:53;:::i;:::-;8375:63;;8329:119;8487:3;8514:53;8559:7;8550:6;8539:9;8535:22;8514:53;:::i;:::-;8504:63;;8458:119;7527:1057;;;;;;;;:::o;8590:619::-;8667:6;8675;8683;8732:2;8720:9;8711:7;8707:23;8703:32;8700:119;;;8738:79;;:::i;:::-;8700:119;8858:1;8883:53;8928:7;8919:6;8908:9;8904:22;8883:53;:::i;:::-;8873:63;;8829:117;8985:2;9011:53;9056:7;9047:6;9036:9;9032:22;9011:53;:::i;:::-;9001:63;;8956:118;9113:2;9139:53;9184:7;9175:6;9164:9;9160:22;9139:53;:::i;:::-;9129:63;;9084:118;8590:619;;;;;:::o;9215:474::-;9283:6;9291;9340:2;9328:9;9319:7;9315:23;9311:32;9308:119;;;9346:79;;:::i;:::-;9308:119;9466:1;9491:53;9536:7;9527:6;9516:9;9512:22;9491:53;:::i;:::-;9481:63;;9437:117;9593:2;9619:53;9664:7;9655:6;9644:9;9640:22;9619:53;:::i;:::-;9609:63;;9564:118;9215:474;;;;;:::o;9695:60::-;9723:3;9744:5;9737:12;;9695:60;;;:::o;9761:142::-;9811:9;9844:53;9862:34;9871:24;9889:5;9871:24;:::i;:::-;9862:34;:::i;:::-;9844:53;:::i;:::-;9831:66;;9761:142;;;:::o;9909:126::-;9959:9;9992:37;10023:5;9992:37;:::i;:::-;9979:50;;9909:126;;;:::o;10041:144::-;10109:9;10142:37;10173:5;10142:37;:::i;:::-;10129:50;;10041:144;;;:::o;10191:167::-;10296:55;10345:5;10296:55;:::i;:::-;10291:3;10284:68;10191:167;;:::o;10364:258::-;10475:4;10513:2;10502:9;10498:18;10490:26;;10526:89;10612:1;10601:9;10597:17;10588:6;10526:89;:::i;:::-;10364:258;;;;:::o;10628:474::-;10696:6;10704;10753:2;10741:9;10732:7;10728:23;10724:32;10721:119;;;10759:79;;:::i;:::-;10721:119;10879:1;10904:53;10949:7;10940:6;10929:9;10925:22;10904:53;:::i;:::-;10894:63;;10850:117;11006:2;11032:53;11077:7;11068:6;11057:9;11053:22;11032:53;:::i;:::-;11022:63;;10977:118;10628:474;;;;;:::o;11108:182::-;11248:34;11244:1;11236:6;11232:14;11225:58;11108:182;:::o;11296:366::-;11438:3;11459:67;11523:2;11518:3;11459:67;:::i;:::-;11452:74;;11535:93;11624:3;11535:93;:::i;:::-;11653:2;11648:3;11644:12;11637:19;;11296:366;;;:::o;11668:419::-;11834:4;11872:2;11861:9;11857:18;11849:26;;11921:9;11915:4;11911:20;11907:1;11896:9;11892:17;11885:47;11949:131;12075:4;11949:131;:::i;:::-;11941:139;;11668:419;;;:::o;12093:180::-;12141:77;12138:1;12131:88;12238:4;12235:1;12228:15;12262:4;12259:1;12252:15;12279:410;12319:7;12342:20;12360:1;12342:20;:::i;:::-;12337:25;;12376:20;12394:1;12376:20;:::i;:::-;12371:25;;12431:1;12428;12424:9;12453:30;12471:11;12453:30;:::i;:::-;12442:41;;12632:1;12623:7;12619:15;12616:1;12613:22;12593:1;12586:9;12566:83;12543:139;;12662:18;;:::i;:::-;12543:139;12327:362;12279:410;;;;:::o;12695:180::-;12743:77;12740:1;12733:88;12840:4;12837:1;12830:15;12864:4;12861:1;12854:15;12881:185;12921:1;12938:20;12956:1;12938:20;:::i;:::-;12933:25;;12972:20;12990:1;12972:20;:::i;:::-;12967:25;;13011:1;13001:35;;13016:18;;:::i;:::-;13001:35;13058:1;13055;13051:9;13046:14;;12881:185;;;;:::o;13072:227::-;13212:34;13208:1;13200:6;13196:14;13189:58;13281:10;13276:2;13268:6;13264:15;13257:35;13072:227;:::o;13305:366::-;13447:3;13468:67;13532:2;13527:3;13468:67;:::i;:::-;13461:74;;13544:93;13633:3;13544:93;:::i;:::-;13662:2;13657:3;13653:12;13646:19;;13305:366;;;:::o;13677:419::-;13843:4;13881:2;13870:9;13866:18;13858:26;;13930:9;13924:4;13920:20;13916:1;13905:9;13901:17;13894:47;13958:131;14084:4;13958:131;:::i;:::-;13950:139;;13677:419;;;:::o;14102:143::-;14159:5;14190:6;14184:13;14175:22;;14206:33;14233:5;14206:33;:::i;:::-;14102:143;;;;:::o;14251:351::-;14321:6;14370:2;14358:9;14349:7;14345:23;14341:32;14338:119;;;14376:79;;:::i;:::-;14338:119;14496:1;14521:64;14577:7;14568:6;14557:9;14553:22;14521:64;:::i;:::-;14511:74;;14467:128;14251:351;;;;:::o;14608:332::-;14729:4;14767:2;14756:9;14752:18;14744:26;;14780:71;14848:1;14837:9;14833:17;14824:6;14780:71;:::i;:::-;14861:72;14929:2;14918:9;14914:18;14905:6;14861:72;:::i;:::-;14608:332;;;;;:::o;14946:137::-;15000:5;15031:6;15025:13;15016:22;;15047:30;15071:5;15047:30;:::i;:::-;14946:137;;;;:::o;15089:345::-;15156:6;15205:2;15193:9;15184:7;15180:23;15176:32;15173:119;;;15211:79;;:::i;:::-;15173:119;15331:1;15356:61;15409:7;15400:6;15389:9;15385:22;15356:61;:::i;:::-;15346:71;;15302:125;15089:345;;;;:::o;15440:179::-;15580:31;15576:1;15568:6;15564:14;15557:55;15440:179;:::o;15625:366::-;15767:3;15788:67;15852:2;15847:3;15788:67;:::i;:::-;15781:74;;15864:93;15953:3;15864:93;:::i;:::-;15982:2;15977:3;15973:12;15966:19;;15625:366;;;:::o;15997:419::-;16163:4;16201:2;16190:9;16186:18;16178:26;;16250:9;16244:4;16240:20;16236:1;16225:9;16221:17;16214:47;16278:131;16404:4;16278:131;:::i;:::-;16270:139;;15997:419;;;:::o;16422:225::-;16562:34;16558:1;16550:6;16546:14;16539:58;16631:8;16626:2;16618:6;16614:15;16607:33;16422:225;:::o;16653:366::-;16795:3;16816:67;16880:2;16875:3;16816:67;:::i;:::-;16809:74;;16892:93;16981:3;16892:93;:::i;:::-;17010:2;17005:3;17001:12;16994:19;;16653:366;;;:::o;17025:419::-;17191:4;17229:2;17218:9;17214:18;17206:26;;17278:9;17272:4;17268:20;17264:1;17253:9;17249:17;17242:47;17306:131;17432:4;17306:131;:::i;:::-;17298:139;;17025:419;;;:::o;17450:194::-;17490:4;17510:20;17528:1;17510:20;:::i;:::-;17505:25;;17544:20;17562:1;17544:20;:::i;:::-;17539:25;;17588:1;17585;17581:9;17573:17;;17612:1;17606:4;17603:11;17600:37;;;17617:18;;:::i;:::-;17600:37;17450:194;;;;:::o;17650:170::-;17790:22;17786:1;17778:6;17774:14;17767:46;17650:170;:::o;17826:366::-;17968:3;17989:67;18053:2;18048:3;17989:67;:::i;:::-;17982:74;;18065:93;18154:3;18065:93;:::i;:::-;18183:2;18178:3;18174:12;18167:19;;17826:366;;;:::o;18198:419::-;18364:4;18402:2;18391:9;18387:18;18379:26;;18451:9;18445:4;18441:20;18437:1;18426:9;18422:17;18415:47;18479:131;18605:4;18479:131;:::i;:::-;18471:139;;18198:419;;;:::o;18623:191::-;18663:3;18682:20;18700:1;18682:20;:::i;:::-;18677:25;;18716:20;18734:1;18716:20;:::i;:::-;18711:25;;18759:1;18756;18752:9;18745:16;;18780:3;18777:1;18774:10;18771:36;;;18787:18;;:::i;:::-;18771:36;18623:191;;;;:::o;18820:249::-;18960:34;18956:1;18948:6;18944:14;18937:58;19029:32;19024:2;19016:6;19012:15;19005:57;18820:249;:::o;19075:366::-;19217:3;19238:67;19302:2;19297:3;19238:67;:::i;:::-;19231:74;;19314:93;19403:3;19314:93;:::i;:::-;19432:2;19427:3;19423:12;19416:19;;19075:366;;;:::o;19447:419::-;19613:4;19651:2;19640:9;19636:18;19628:26;;19700:9;19694:4;19690:20;19686:1;19675:9;19671:17;19664:47;19728:131;19854:4;19728:131;:::i;:::-;19720:139;;19447:419;;;:::o;19872:220::-;20012:34;20008:1;20000:6;19996:14;19989:58;20081:3;20076:2;20068:6;20064:15;20057:28;19872:220;:::o;20098:366::-;20240:3;20261:67;20325:2;20320:3;20261:67;:::i;:::-;20254:74;;20337:93;20426:3;20337:93;:::i;:::-;20455:2;20450:3;20446:12;20439:19;;20098:366;;;:::o;20470:419::-;20636:4;20674:2;20663:9;20659:18;20651:26;;20723:9;20717:4;20713:20;20709:1;20698:9;20694:17;20687:47;20751:131;20877:4;20751:131;:::i;:::-;20743:139;;20470:419;;;:::o;20895:177::-;21035:29;21031:1;21023:6;21019:14;21012:53;20895:177;:::o;21078:366::-;21220:3;21241:67;21305:2;21300:3;21241:67;:::i;:::-;21234:74;;21317:93;21406:3;21317:93;:::i;:::-;21435:2;21430:3;21426:12;21419:19;;21078:366;;;:::o;21450:419::-;21616:4;21654:2;21643:9;21639:18;21631:26;;21703:9;21697:4;21693:20;21689:1;21678:9;21674:17;21667:47;21731:131;21857:4;21731:131;:::i;:::-;21723:139;;21450:419;;;:::o;21875:167::-;22015:19;22011:1;22003:6;21999:14;21992:43;21875:167;:::o;22048:366::-;22190:3;22211:67;22275:2;22270:3;22211:67;:::i;:::-;22204:74;;22287:93;22376:3;22287:93;:::i;:::-;22405:2;22400:3;22396:12;22389:19;;22048:366;;;:::o;22420:419::-;22586:4;22624:2;22613:9;22609:18;22601:26;;22673:9;22667:4;22663:20;22659:1;22648:9;22644:17;22637:47;22701:131;22827:4;22701:131;:::i;:::-;22693:139;;22420:419;;;:::o;22845:180::-;22893:77;22890:1;22883:88;22990:4;22987:1;22980:15;23014:4;23011:1;23004:15;23031:180;23079:77;23076:1;23069:88;23176:4;23173:1;23166:15;23200:4;23197:1;23190:15;23217:85;23262:7;23291:5;23280:16;;23217:85;;;:::o;23308:158::-;23366:9;23399:61;23417:42;23426:32;23452:5;23426:32;:::i;:::-;23417:42;:::i;:::-;23399:61;:::i;:::-;23386:74;;23308:158;;;:::o;23472:147::-;23567:45;23606:5;23567:45;:::i;:::-;23562:3;23555:58;23472:147;;:::o;23625:114::-;23692:6;23726:5;23720:12;23710:22;;23625:114;;;:::o;23745:184::-;23844:11;23878:6;23873:3;23866:19;23918:4;23913:3;23909:14;23894:29;;23745:184;;;;:::o;23935:132::-;24002:4;24025:3;24017:11;;24055:4;24050:3;24046:14;24038:22;;23935:132;;;:::o;24073:108::-;24150:24;24168:5;24150:24;:::i;:::-;24145:3;24138:37;24073:108;;:::o;24187:179::-;24256:10;24277:46;24319:3;24311:6;24277:46;:::i;:::-;24355:4;24350:3;24346:14;24332:28;;24187:179;;;;:::o;24372:113::-;24442:4;24474;24469:3;24465:14;24457:22;;24372:113;;;:::o;24521:732::-;24640:3;24669:54;24717:5;24669:54;:::i;:::-;24739:86;24818:6;24813:3;24739:86;:::i;:::-;24732:93;;24849:56;24899:5;24849:56;:::i;:::-;24928:7;24959:1;24944:284;24969:6;24966:1;24963:13;24944:284;;;25045:6;25039:13;25072:63;25131:3;25116:13;25072:63;:::i;:::-;25065:70;;25158:60;25211:6;25158:60;:::i;:::-;25148:70;;25004:224;24991:1;24988;24984:9;24979:14;;24944:284;;;24948:14;25244:3;25237:10;;24645:608;;;24521:732;;;;:::o;25259:831::-;25522:4;25560:3;25549:9;25545:19;25537:27;;25574:71;25642:1;25631:9;25627:17;25618:6;25574:71;:::i;:::-;25655:80;25731:2;25720:9;25716:18;25707:6;25655:80;:::i;:::-;25782:9;25776:4;25772:20;25767:2;25756:9;25752:18;25745:48;25810:108;25913:4;25904:6;25810:108;:::i;:::-;25802:116;;25928:72;25996:2;25985:9;25981:18;25972:6;25928:72;:::i;:::-;26010:73;26078:3;26067:9;26063:19;26054:6;26010:73;:::i;:::-;25259:831;;;;;;;;:::o;26096:147::-;26197:11;26234:3;26219:18;;26096:147;;;;:::o;26249:114::-;;:::o;26369:398::-;26528:3;26549:83;26630:1;26625:3;26549:83;:::i;:::-;26542:90;;26641:93;26730:3;26641:93;:::i;:::-;26759:1;26754:3;26750:11;26743:18;;26369:398;;;:::o;26773:379::-;26957:3;26979:147;27122:3;26979:147;:::i;:::-;26972:154;;27143:3;27136:10;;26773:379;;;:::o;27158:807::-;27407:4;27445:3;27434:9;27430:19;27422:27;;27459:71;27527:1;27516:9;27512:17;27503:6;27459:71;:::i;:::-;27540:72;27608:2;27597:9;27593:18;27584:6;27540:72;:::i;:::-;27622:80;27698:2;27687:9;27683:18;27674:6;27622:80;:::i;:::-;27712;27788:2;27777:9;27773:18;27764:6;27712:80;:::i;:::-;27802:73;27870:3;27859:9;27855:19;27846:6;27802:73;:::i;:::-;27885;27953:3;27942:9;27938:19;27929:6;27885:73;:::i;:::-;27158:807;;;;;;;;;:::o;27971:663::-;28059:6;28067;28075;28124:2;28112:9;28103:7;28099:23;28095:32;28092:119;;;28130:79;;:::i;:::-;28092:119;28250:1;28275:64;28331:7;28322:6;28311:9;28307:22;28275:64;:::i;:::-;28265:74;;28221:128;28388:2;28414:64;28470:7;28461:6;28450:9;28446:22;28414:64;:::i;:::-;28404:74;;28359:129;28527:2;28553:64;28609:7;28600:6;28589:9;28585:22;28553:64;:::i;:::-;28543:74;;28498:129;27971:663;;;;;:::o;28640:332::-;28761:4;28799:2;28788:9;28784:18;28776:26;;28812:71;28880:1;28869:9;28865:17;28856:6;28812:71;:::i;:::-;28893:72;28961:2;28950:9;28946:18;28937:6;28893:72;:::i;:::-;28640:332;;;;;:::o
Swarm Source
ipfs://639dcd629ebc720c784c9ed632a55a2adfc649f3a5955d3281bc96a30dc8a786
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.