Token Critano
Overview CRC20
Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
389,565.93681 CRITANO
Holders:
21 addresses
Contract:
Decimals:
5
Balance
2,034.53531 CRITANOValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Critano
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-29 */ /** // https://t.me/critano_cro */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.7.4; library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } } 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IPancakeSwapPair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IPancakeSwapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IPancakeSwapFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } contract Ownable { address private _owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = msg.sender; } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner()); _; } function isOwner() public view returns (bool) { return msg.sender == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipRenounced(_owner); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } abstract contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } contract Critano is ERC20Detailed, Ownable { using SafeMath for uint256; using SafeMathInt for int256; event LogRebase(uint256 indexed epoch, uint256 totalSupply); string public _name = "Critano"; string public _symbol = "CRITANO"; uint8 public _decimals = 5; IPancakeSwapPair public pairContract; mapping(address => bool) _isFeeExempt; modifier validRecipient(address to) { require(to != address(0x0)); _; } uint256 public constant DECIMALS = 5; uint256 public constant MAX_UINT256 = ~uint256(0); uint8 public constant RATE_DECIMALS = 7; uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 389047 * 10**DECIMALS; uint256 public liquidityFee = 40; uint256 public treasuryFee = 25; uint256 public critanoInsuranceFundFee = 50; uint256 public sellFee = 20; uint256 public critanoPitFee = 25; uint256 public totalFee = liquidityFee.add(treasuryFee).add(critanoInsuranceFundFee).add( critanoPitFee ); uint256 public feeDenominator = 1000; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address public autoLiquidityReceiver; address public treasuryReceiver; address public critanoInsuranceFundReceiver; address public critanoPit; address public pairAddress; bool public swapEnabled = true; IPancakeSwapRouter public router; address public pair; bool inSwap = false; modifier swapping() { inSwap = true; _; inSwap = false; } uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY); uint256 private constant MAX_SUPPLY = 325 * 10**7 * 10**DECIMALS; bool public _autoRebase; bool public _autoAddLiquidity; uint256 public _initRebaseStartTime; uint256 public _lastRebasedTime; uint256 public _lastAddLiquidityTime; uint256 public _totalSupply; uint256 private _gonsPerFragment; mapping(address => uint256) private _gonBalances; mapping(address => mapping(address => uint256)) private _allowedFragments; mapping(address => bool) public blacklist; constructor() ERC20Detailed("Critano", "CRITANO", uint8(DECIMALS)) Ownable() { router = IPancakeSwapRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); pair = IPancakeSwapFactory(router.factory()).createPair( router.WETH(), address(this) ); autoLiquidityReceiver = 0x23b0f299cfea3cf6ad2F198920a98AE8a9676816; treasuryReceiver = 0xc0300cF3FC68159d4Dc7b6Da68EC366AD8a35B0A; critanoInsuranceFundReceiver = 0xb1a3c83E91198266801dc17556CdF9BAECbe3616; critanoPit = 0xc0300cF3FC68159d4Dc7b6Da68EC366AD8a35B0A; _allowedFragments[address(this)][address(router)] = uint256(-1); pairAddress = pair; pairContract = IPancakeSwapPair(pair); _totalSupply = INITIAL_FRAGMENTS_SUPPLY; _gonBalances[treasuryReceiver] = TOTAL_GONS; _gonsPerFragment = TOTAL_GONS.div(_totalSupply); _initRebaseStartTime = block.timestamp; _lastRebasedTime = block.timestamp; _autoRebase = true; _autoAddLiquidity = true; _isFeeExempt[treasuryReceiver] = true; _isFeeExempt[address(this)] = true; _transferOwnership(treasuryReceiver); emit Transfer(address(0x0), treasuryReceiver, _totalSupply); } function rebase() internal { if (inSwap) return; uint256 rebaseRate; uint256 deltaTimeFromInit = block.timestamp - _initRebaseStartTime; uint256 deltaTime = block.timestamp - _lastRebasedTime; uint256 times = deltaTime.div(15 minutes); uint256 epoch = times.mul(15); if (deltaTimeFromInit < (365 days)) { rebaseRate = 3333; } else if (deltaTimeFromInit >= (365 days)) { rebaseRate = 333; } else if (deltaTimeFromInit >= ((15 * 365 days) / 10)) { rebaseRate = 33; } else if (deltaTimeFromInit >= (7 * 365 days)) { rebaseRate = 3; } for (uint256 i = 0; i < times; i++) { _totalSupply = _totalSupply .mul((10**RATE_DECIMALS).add(rebaseRate)) .div(10**RATE_DECIMALS); } _gonsPerFragment = TOTAL_GONS.div(_totalSupply); _lastRebasedTime = _lastRebasedTime.add(times.mul(15 minutes)); pairContract.sync(); emit LogRebase(epoch, _totalSupply); } function transfer(address to, uint256 value) external override validRecipient(to) returns (bool) { _transferFrom(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external override validRecipient(to) returns (bool) { if (_allowedFragments[from][msg.sender] != uint256(-1)) { _allowedFragments[from][msg.sender] = _allowedFragments[from][ msg.sender ].sub(value, "Insufficient Allowance"); } _transferFrom(from, to, value); return true; } function _basicTransfer( address from, address to, uint256 amount ) internal returns (bool) { uint256 gonAmount = amount.mul(_gonsPerFragment); _gonBalances[from] = _gonBalances[from].sub(gonAmount); _gonBalances[to] = _gonBalances[to].add(gonAmount); return true; } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(!blacklist[sender] && !blacklist[recipient], "in_blacklist"); if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldRebase()) { rebase(); } if (shouldAddLiquidity()) { addLiquidity(); } if (shouldSwapBack()) { swapBack(); } uint256 gonAmount = amount.mul(_gonsPerFragment); _gonBalances[sender] = _gonBalances[sender].sub(gonAmount); uint256 gonAmountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, gonAmount) : gonAmount; _gonBalances[recipient] = _gonBalances[recipient].add( gonAmountReceived ); emit Transfer( sender, recipient, gonAmountReceived.div(_gonsPerFragment) ); return true; } function takeFee( address sender, address recipient, uint256 gonAmount ) internal returns (uint256) { uint256 _totalFee = totalFee; uint256 _treasuryFee = treasuryFee; if (recipient == pair) { _totalFee = totalFee.add(sellFee); _treasuryFee = treasuryFee.add(sellFee); } uint256 feeAmount = gonAmount.div(feeDenominator).mul(_totalFee); _gonBalances[critanoPit] = _gonBalances[critanoPit].add( gonAmount.div(feeDenominator).mul(critanoPitFee) ); _gonBalances[address(this)] = _gonBalances[address(this)].add( gonAmount.div(feeDenominator).mul( _treasuryFee.add(critanoInsuranceFundFee) ) ); _gonBalances[autoLiquidityReceiver] = _gonBalances[ autoLiquidityReceiver ].add(gonAmount.div(feeDenominator).mul(liquidityFee)); emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment)); return gonAmount.sub(feeAmount); } function addLiquidity() internal swapping { uint256 autoLiquidityAmount = _gonBalances[autoLiquidityReceiver].div( _gonsPerFragment ); _gonBalances[address(this)] = _gonBalances[address(this)].add( _gonBalances[autoLiquidityReceiver] ); _gonBalances[autoLiquidityReceiver] = 0; uint256 amountToLiquify = autoLiquidityAmount.div(2); uint256 amountToSwap = autoLiquidityAmount.sub(amountToLiquify); if (amountToSwap == 0) { return; } address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETHLiquidity = address(this).balance.sub(balanceBefore); if (amountToLiquify > 0 && amountETHLiquidity > 0) { router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); } _lastAddLiquidityTime = block.timestamp; } function swapBack() internal swapping { uint256 amountToSwap = _gonBalances[address(this)].div( _gonsPerFragment ); if (amountToSwap == 0) { return; } uint256 balanceBefore = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETHToTreasuryAndSIF = address(this).balance.sub( balanceBefore ); (bool success, ) = payable(treasuryReceiver).call{ value: amountETHToTreasuryAndSIF.mul(treasuryFee).div( treasuryFee.add(critanoInsuranceFundFee) ), gas: 30000 }(""); (success, ) = payable(critanoInsuranceFundReceiver).call{ value: amountETHToTreasuryAndSIF.mul(critanoInsuranceFundFee).div( treasuryFee.add(critanoInsuranceFundFee) ), gas: 30000 }(""); } function withdrawAllToTreasury() external swapping onlyOwner { uint256 amountToSwap = _gonBalances[address(this)].div( _gonsPerFragment ); require( amountToSwap > 0, "There is no Critano token deposited in token contract" ); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, treasuryReceiver, block.timestamp ); } function shouldTakeFee(address from, address to) internal view returns (bool) { return (pair == from || pair == to) && !_isFeeExempt[from]; } function shouldRebase() internal view returns (bool) { return _autoRebase && (_totalSupply < MAX_SUPPLY) && msg.sender != pair && !inSwap && block.timestamp >= (_lastRebasedTime + 15 minutes); } function shouldAddLiquidity() internal view returns (bool) { return _autoAddLiquidity && !inSwap && msg.sender != pair && block.timestamp >= (_lastAddLiquidityTime + 2 days); } function shouldSwapBack() internal view returns (bool) { return !inSwap && msg.sender != pair; } function setAutoRebase(bool _flag) external onlyOwner { if (_flag) { _autoRebase = _flag; _lastRebasedTime = block.timestamp; } else { _autoRebase = _flag; } } function setAutoAddLiquidity(bool _flag) external onlyOwner { if (_flag) { _autoAddLiquidity = _flag; _lastAddLiquidityTime = block.timestamp; } else { _autoAddLiquidity = _flag; } } function allowance(address owner_, address spender) external view override returns (uint256) { return _allowedFragments[owner_][spender]; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue.sub( subtractedValue ); } emit Approval( msg.sender, spender, _allowedFragments[msg.sender][spender] ); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][ spender ].add(addedValue); emit Approval( msg.sender, spender, _allowedFragments[msg.sender][spender] ); return true; } function approve(address spender, uint256 value) external override returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function checkFeeExempt(address _addr) external view returns (bool) { return _isFeeExempt[_addr]; } function getCirculatingSupply() public view returns (uint256) { return (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div( _gonsPerFragment ); } function isNotInSwap() external view returns (bool) { return !inSwap; } function manualSync() external { IPancakeSwapPair(pair).sync(); } function setFeeReceivers( address _autoLiquidityReceiver, address _treasuryReceiver, address _critanoInsuranceFundReceiver, address _critanoPit ) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; treasuryReceiver = _treasuryReceiver; critanoInsuranceFundReceiver = _critanoInsuranceFundReceiver; critanoPit = _critanoPit; } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment); return accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()); } function setWhitelist(address _addr) external onlyOwner { _isFeeExempt[_addr] = true; } function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner { require( isContract(_botAddress), "only contract address, not allowed exteranlly owned account" ); blacklist[_botAddress] = _flag; } function setPairAddress(address _pairAddress) public onlyOwner { pairAddress = _pairAddress; } function setLP(address _address) external onlyOwner { pairContract = IPancakeSwapPair(_address); } function totalSupply() external view override returns (uint256) { return _totalSupply; } function balanceOf(address who) external view override returns (uint256) { return _gonBalances[who].div(_gonsPerFragment); } function isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","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":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initRebaseStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastAddLiquidityTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastRebasedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"critanoInsuranceFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"critanoInsuranceFundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"critanoPit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"critanoPitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakeSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_critanoInsuranceFundReceiver","type":"address"},{"internalType":"address","name":"_critanoPit","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAllToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600781526020017f43726974616e6f00000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000dbc565b506040518060400160405280600781526020017f43524954414e4f00000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000dbc565b5060058060006101000a81548160ff021916908360ff1602179055506028600755601960085560326009556014600a556019600b5562000128600b54620001146009546200010060085460075462000b1b60201b62002c631790919060201c565b62000b1b60201b62002c631790919060201c565b62000b1b60201b62002c631790919060201c565b600c556103e8600d5561dead600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016014806101000a81548160ff0219169083151502179055506000601660146101000a81548160ff021916908315150217905550348015620001f857600080fd5b506040518060400160405280600781526020017f43726974616e6f000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f43524954414e4f00000000000000000000000000000000000000000000000000815250600582600090805190602001906200027f92919062000dbc565b5081600190805190602001906200029892919062000dbc565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073145677fc4d9b8f19b5d56d1820c48e0443049a30601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b657600080fd5b505afa158015620003cb573d6000803e3d6000fd5b505050506040513d6020811015620003e257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200047757600080fd5b505afa1580156200048c573d6000803e3d6000fd5b505050506040513d6020811015620004a357600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200051f57600080fd5b505af115801562000534573d6000803e3d6000fd5b505050506040513d60208110156200054b57600080fd5b8101908080519060200190929190505050601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507323b0f299cfea3cf6ad2f198920a98ae8a9676816601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c0300cf3fc68159d4dc7b6da68ec366ad8a35b0a601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b1a3c83e91198266801dc17556cdf9baecbe3616601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c0300cf3fc68159d4dc7b6da68ec366ad8a35b0a601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005600a0a6205efb702601a819055506005600a0a6205efb702600019816200089e57fe5b0660001903601c6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200093d601a546005600a0a6205efb702600019816200092457fe5b066000190362000ba460201b62002ceb1790919060201c565b601b8190555042601781905550426018819055506001601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550600160066000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a8b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000bf660201b60201c565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601a546040518082815260200191505060405180910390a362000e72565b60008082840190508381101562000b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600062000bee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cf160201b60201c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000c3157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829062000da1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000d6557808201518184015260208101905062000d48565b50505050905090810190601f16801562000d935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000dae57fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000df4576000855562000e40565b82601f1062000e0f57805160ff191683800117855562000e40565b8280016001018555821562000e40579182015b8281111562000e3f57825182559160200191906001019062000e22565b5b50905062000e4f919062000e53565b5090565b5b8082111562000e6e57600081600090555060010162000e54565b5090565b614a7c8062000e826000396000f3fe60806040526004361061037a5760003560e01c8063715018a6116101d1578063a9059cbb11610102578063d28d8852116100a0578063e15beb801161006f578063e15beb8014611236578063f2fde38b14611273578063f887ea40146112c4578063f9f92be41461130557610381565b8063d28d88521461106b578063d4399790146110fb578063d51ed1c814611162578063dd62ed3e146111b157610381565b8063bd595581116100dc578063bd59558114610fab578063ca33e64c14610fc2578063cc32d17614611003578063cfbac92f1461102e57610381565b8063a9059cbb14610e7d578063afb9cf6d14610eee578063b09f126614610f1b57610381565b806398118cb41161016f578063a22d483211610149578063a22d483214610d39578063a457c2d714610d8a578063a8aa1b3114610dfb578063a8b0898214610e3c57610381565b806398118cb414610cb85780639b2912cc14610ce35780639b87676c14610d0e57610381565b8063854cff2f116101ab578063854cff2f14610b695780638da5cb5b14610bba5780638f32d59b14610bfb57806395d89b4114610c2857610381565b8063715018a614610b0e578063753d02a114610b2557806383b4ac6814610b3c57610381565b8063313ce567116102ab5780633eaaf86b116102495780635c0c997f116102235780635c0c997f14610a245780636912652c14610a4f5780636ddd171314610a7c57806370a0823114610aa957610381565b80633eaaf86b1461098a5780634d709adf146109b55780635a604c52146109f657610381565b806333a581d21161028557806333a581d2146107e057806337c9be871461080b57806339509351146108685780633c8e556d146108d957610381565b8063313ce5671461075957806332424aa31461078757806332b75683146107b557610381565b80631df4ccfc116103185780632b112e49116102f25780632b112e49146106875780632b14ca56146106b25780632e0f2625146106dd5780632f34d2821461070857610381565b80631df4ccfc1461058a578063225e148f146105b557806323b872dd146105f657610381565b80630bd96187116103545780630bd96187146104c85780630f3d9b8214610509578063180b0d7e1461053457806318160ddd1461055f57610381565b806306fdde031461038657806308b1fd8f14610416578063095ea7b31461045757610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b61136c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103db5780820151818401526020810190506103c0565b50505050905090810190601f1680156104085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042257600080fd5b5061042b61140e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046357600080fd5b506104b06004803603604081101561047a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611434565b60405180821515815260200191505060405180910390f35b3480156104d457600080fd5b506104dd611526565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561051557600080fd5b5061051e61154c565b6040518082815260200191505060405180910390f35b34801561054057600080fd5b50610549611552565b6040518082815260200191505060405180910390f35b34801561056b57600080fd5b50610574611558565b6040518082815260200191505060405180910390f35b34801561059657600080fd5b5061059f611562565b6040518082815260200191505060405180910390f35b3480156105c157600080fd5b506105ca611568565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060257600080fd5b5061066f6004803603606081101561061957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061158e565b60405180821515815260200191505060405180910390f35b34801561069357600080fd5b5061069c6117cd565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106c76118e7565b6040518082815260200191505060405180910390f35b3480156106e957600080fd5b506106f26118ed565b6040518082815260200191505060405180910390f35b34801561071457600080fd5b506107576004803603602081101561072b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f2565b005b34801561076557600080fd5b5061076e611947565b604051808260ff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c61195e565b604051808260ff16815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611971565b6040518082815260200191505060405180910390f35b3480156107ec57600080fd5b506107f5611977565b6040518082815260200191505060405180910390f35b34801561081757600080fd5b506108666004803603604081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061197d565b005b34801561087457600080fd5b506108c16004803603604081101561088b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a47565b60405180821515815260200191505060405180910390f35b3480156108e557600080fd5b50610988600480360360808110156108fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c43565b005b34801561099657600080fd5b5061099f611d5e565b6040518082815260200191505060405180910390f35b3480156109c157600080fd5b506109ca611d64565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a0257600080fd5b50610a0b611d8a565b604051808260ff16815260200191505060405180910390f35b348015610a3057600080fd5b50610a39611d8f565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64611d95565b60405180821515815260200191505060405180910390f35b348015610a8857600080fd5b50610a91611da6565b60405180821515815260200191505060405180910390f35b348015610ab557600080fd5b50610af860048036036020811015610acc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db7565b6040518082815260200191505060405180910390f35b348015610b1a57600080fd5b50610b23611e14565b005b348015610b3157600080fd5b50610b3a611ece565b005b348015610b4857600080fd5b50610b51611f52565b60405180821515815260200191505060405180910390f35b348015610b7557600080fd5b50610bb860048036036020811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6a565b005b348015610bc657600080fd5b50610bcf611fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c0757600080fd5b50610c10612000565b60405180821515815260200191505060405180910390f35b348015610c3457600080fd5b50610c3d612058565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c7d578082015181840152602081019050610c62565b50505050905090810190601f168015610caa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cc457600080fd5b50610ccd6120fa565b6040518082815260200191505060405180910390f35b348015610cef57600080fd5b50610cf8612100565b6040518082815260200191505060405180910390f35b348015610d1a57600080fd5b50610d23612106565b6040518082815260200191505060405180910390f35b348015610d4557600080fd5b50610d8860048036036020811015610d5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210c565b005b348015610d9657600080fd5b50610de360048036036040811015610dad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612161565b60405180821515815260200191505060405180910390f35b348015610e0757600080fd5b50610e106123f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4857600080fd5b50610e51612417565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e8957600080fd5b50610ed660048036036040811015610ea057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243d565b60405180821515815260200191505060405180910390f35b348015610efa57600080fd5b50610f03612491565b60405180821515815260200191505060405180910390f35b348015610f2757600080fd5b50610f306124a4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f70578082015181840152602081019050610f55565b50505050905090810190601f168015610f9d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fb757600080fd5b50610fc0612542565b005b348015610fce57600080fd5b50610fd76128e3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561100f57600080fd5b50611018612909565b6040518082815260200191505060405180910390f35b34801561103a57600080fd5b506110696004803603602081101561105157600080fd5b8101908080351515906020019092919050505061290f565b005b34801561107757600080fd5b50611080612968565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110c05780820151818401526020810190506110a5565b50505050905090810190601f1680156110ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561110757600080fd5b5061114a6004803603602081101561111e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a06565b60405180821515815260200191505060405180910390f35b34801561116e57600080fd5b5061119b6004803603602081101561118557600080fd5b8101908080359060200190929190505050612a5c565b6040518082815260200191505060405180910390f35b3480156111bd57600080fd5b50611220600480360360408110156111d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b1e565b6040518082815260200191505060405180910390f35b34801561124257600080fd5b506112716004803603602081101561125957600080fd5b81019080803515159060200190929190505050612ba5565b005b34801561127f57600080fd5b506112c26004803603602081101561129657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c00565b005b3480156112d057600080fd5b506112d9612c1d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561131157600080fd5b506113546004803603602081101561132857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c43565b60405180821515815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114045780601f106113d957610100808354040283529160200191611404565b820191906000526020600020905b8154815290600101906020018083116113e757829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d5481565b6000601a54905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115cb57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146117b557611734836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d359092919063ffffffff16565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6117c0858585612df5565b5060019150509392505050565b60006118e2601b546118d4601c6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c6601c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600a0a6205efb702600019816118b357fe5b066000190361316490919063ffffffff16565b61316490919063ffffffff16565b612ceb90919063ffffffff16565b905090565b600a5481565b600581565b6118fa612000565b61190357600080fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b600560009054906101000a900460ff1681565b60185481565b60001981565b611985612000565b61198e57600080fd5b611997826131ae565b6119ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180614a0c603b913960400191505060405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611ad882601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b611c4b612000565b611c5457600080fd5b83601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b601a5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600781565b60095481565b60168054906101000a900460ff1681565b60148054906101000a900460ff1681565b6000611e0d601b54601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b9050919050565b611e1c612000565b611e2557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f3857600080fd5b505af1158015611f4c573d6000803e3d6000fd5b50505050565b6000601660149054906101000a900460ff1615905090565b611f72612000565b611f7b57600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120f05780601f106120c5576101008083540402835291602001916120f0565b820191906000526020600020905b8154815290600101906020018083116120d357829003601f168201915b5050505050905090565b60075481565b60195481565b60175481565b612114612000565b61211d57600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612271576000601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612305565b612284838261316490919063ffffffff16565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561247a57600080fd5b612485338585612df5565b50600191505092915050565b601660159054906101000a900460ff1681565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561253a5780601f1061250f5761010080835404028352916020019161253a565b820191906000526020600020905b81548152906001019060200180831161251d57829003601f168201915b505050505081565b6001601660146101000a81548160ff021916908315150217905550612565612000565b61256e57600080fd5b60006125c4601b54601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b90506000811161261f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806149b66035913960400191505060405180910390fd5b6060600267ffffffffffffffff8111801561263957600080fd5b506040519080825280602002602001820160405280156126685781602001602082028036833780820191505090505b509050308160008151811061267957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271b57600080fd5b505afa15801561272f573d6000803e3d6000fd5b505050506040513d602081101561274557600080fd5b81019080805190602001909291905050508160018151811061276357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612883578082015181840152602081019050612868565b505050509050019650505050505050600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050505050506000601660146101000a81548160ff021916908315150217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b612917612000565b61292057600080fd5b801561294b57806016806101000a81548160ff02191690831515021790555042601981905550612965565b806016806101000a81548160ff0219169083151502179055505b50565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129fe5780601f106129d3576101008083540402835291602001916129fe565b820191906000526020600020905b8154815290600101906020018083116129e157829003601f168201915b505050505081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612ad5601b54601c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b9050612b16612ae26117cd565b612b08612af96002856131c190919063ffffffff16565b866131c190919063ffffffff16565b612ceb90919063ffffffff16565b915050919050565b6000601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612bad612000565b612bb657600080fd5b8015612be25780601660156101000a81548160ff02191690831515021790555042601881905550612bfd565b80601660156101000a81548160ff0219169083151502179055505b50565b612c08612000565b612c1157600080fd5b612c1a81613247565b50565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b600080828401905083811015612ce1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612d2d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613341565b905092915050565b6000838311158290612de2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612da7578082015181840152602081019050612d8c565b50505050905090810190601f168015612dd45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e9b5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601660149054906101000a900460ff1615612f3457612f2d848484613407565b905061315d565b612f3c613557565b15612f4a57612f4961360a565b5b612f52613846565b15612f6057612f5f6138e1565b5b612f68613f32565b15612f7657612f75613fa4565b5b6000612f8d601b54846131c190919063ffffffff16565b9050612fe181601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316490919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006130308686614480565b61303a5781613046565b613045868684614589565b5b905061309a81601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613141601b5485612ceb90919063ffffffff16565b6040518082815260200191505060405180910390a36001925050505b9392505050565b60006131a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d35565b905092915050565b600080823b905060008111915050919050565b6000808314156131d45760009050613241565b60008284029050828482816131e557fe5b041461323c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806149eb6021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561328157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906133ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133b2578082015181840152602081019050613397565b50505050905090810190601f1680156133df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816133f957fe5b049050809150509392505050565b60008061341f601b54846131c190919063ffffffff16565b905061347381601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316490919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350881601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b6000601660159054906101000a900460ff16801561358057506005600a0a63c1b7108002601a54105b80156135da5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156135f35750601660149054906101000a900460ff16155b80156136055750610384601854014210155b905090565b601660149054906101000a900460ff161561362457613844565b60008060175442039050600060185442039050600061364e61038483612ceb90919063ffffffff16565b90506000613666600f836131c190919063ffffffff16565b90506301e1338084101561367e57610d0594506136ba565b6301e1338084106136935761014d94506136b9565b6302d1cd4084106136a757602194506136b8565b630d28688084106136b757600394505b5b5b5b60005b8281101561371f5761370c600760ff16600a0a6136fe6136ed89600760ff16600a0a612c6390919063ffffffff16565b601a546131c190919063ffffffff16565b612ceb90919063ffffffff16565b601a8190555080806001019150506136bd565b5061374d601a546005600a0a6205efb7026000198161373a57fe5b0660001903612ceb90919063ffffffff16565b601b8190555061377c61376b610384846131c190919063ffffffff16565b601854612c6390919063ffffffff16565b601881905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137ec57600080fd5b505af1158015613800573d6000803e3d6000fd5b50505050807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601a546040518082815260200191505060405180910390a250505050505b565b600060168054906101000a900460ff16801561386f5750601660149054906101000a900460ff16155b80156138c95750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156138dc57506202a300601954014210155b905090565b6001601660146101000a81548160ff0219169083151502179055506000613974601b54601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b9050613a29601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ae9600283612ceb90919063ffffffff16565b90506000613b00828461316490919063ffffffff16565b90506000811415613b1357505050613f15565b6060600267ffffffffffffffff81118015613b2d57600080fd5b50604051908082528060200260200182016040528015613b5c5781602001602082028036833780820191505090505b5090503081600081518110613b6d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c0f57600080fd5b505afa158015613c23573d6000803e3d6000fd5b505050506040513d6020811015613c3957600080fd5b810190808051906020019092919050505081600181518110613c5757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613d5a578082015181840152602081019050613d3f565b505050509050019650505050505050600060405180830381600087803b158015613d8357600080fd5b505af1158015613d97573d6000803e3d6000fd5b505050506000613db0824761316490919063ffffffff16565b9050600085118015613dc25750600081115b15613f0757601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823088600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015613eb357600080fd5b505af1158015613ec7573d6000803e3d6000fd5b50505050506040513d6060811015613ede57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505b426019819055505050505050505b6000601660146101000a81548160ff021916908315150217905550565b6000601660149054906101000a900460ff16158015613f9f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b905090565b6001601660146101000a81548160ff0219169083151502179055506000614015601b54601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b905060008114156140265750614463565b60004790506060600267ffffffffffffffff8111801561404557600080fd5b506040519080825280602002602001820160405280156140745781602001602082028036833780820191505090505b509050308160008151811061408557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412757600080fd5b505afa15801561413b573d6000803e3d6000fd5b505050506040513d602081101561415157600080fd5b81019080805190602001909291905050508160018151811061416f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561426d578082015181840152602081019050614252565b505050509050019650505050505050600060405180830381600087803b15801561429657600080fd5b505af11580156142aa573d6000803e3d6000fd5b5050505060006142c3834761316490919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661433d61431a600954600854612c6390919063ffffffff16565b61432f600854866131c190919063ffffffff16565b612ceb90919063ffffffff16565b61753090604051806000019050600060405180830381858888f193505050503d8060008114614388576040519150601f19603f3d011682016040523d82523d6000602084013e61438d565b606091505b50509050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166144076143e4600954600854612c6390919063ffffffff16565b6143f9600954866131c190919063ffffffff16565b612ceb90919063ffffffff16565b61753090604051806000019050600060405180830381858888f193505050503d8060008114614452576040519150601f19603f3d011682016040523d82523d6000602084013e614457565b606091505b50508091505050505050505b6000601660146101000a81548160ff021916908315150217905550565b60008273ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061452b57508173ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156145815750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600c54905060006008549050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561462157614605600a54600c54612c6390919063ffffffff16565b915061461e600a54600854612c6390919063ffffffff16565b90505b600061464a8361463c600d5488612ceb90919063ffffffff16565b6131c190919063ffffffff16565b90506146e8614678600b5461466a600d5489612ceb90919063ffffffff16565b6131c190919063ffffffff16565b601c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d961478b61476860095485612c6390919063ffffffff16565b61477d600d5489612ceb90919063ffffffff16565b6131c190919063ffffffff16565b601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b861484860075461483a600d5489612ceb90919063ffffffff16565b6131c190919063ffffffff16565b601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614981601b5485612ceb90919063ffffffff16565b6040518082815260200191505060405180910390a36149a9818661316490919063ffffffff16565b9350505050939250505056fe5468657265206973206e6f2043726974616e6f20746f6b656e206465706f736974656420696e20746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f776564206578746572616e6c6c79206f776e6564206163636f756e74a2646970667358221220c3f81623a42ef50f4e3ab435eca04861c1ac7c66272801e547fee928ed616f8a64736f6c63430007040033
Deployed Bytecode
0x60806040526004361061037a5760003560e01c8063715018a6116101d1578063a9059cbb11610102578063d28d8852116100a0578063e15beb801161006f578063e15beb8014611236578063f2fde38b14611273578063f887ea40146112c4578063f9f92be41461130557610381565b8063d28d88521461106b578063d4399790146110fb578063d51ed1c814611162578063dd62ed3e146111b157610381565b8063bd595581116100dc578063bd59558114610fab578063ca33e64c14610fc2578063cc32d17614611003578063cfbac92f1461102e57610381565b8063a9059cbb14610e7d578063afb9cf6d14610eee578063b09f126614610f1b57610381565b806398118cb41161016f578063a22d483211610149578063a22d483214610d39578063a457c2d714610d8a578063a8aa1b3114610dfb578063a8b0898214610e3c57610381565b806398118cb414610cb85780639b2912cc14610ce35780639b87676c14610d0e57610381565b8063854cff2f116101ab578063854cff2f14610b695780638da5cb5b14610bba5780638f32d59b14610bfb57806395d89b4114610c2857610381565b8063715018a614610b0e578063753d02a114610b2557806383b4ac6814610b3c57610381565b8063313ce567116102ab5780633eaaf86b116102495780635c0c997f116102235780635c0c997f14610a245780636912652c14610a4f5780636ddd171314610a7c57806370a0823114610aa957610381565b80633eaaf86b1461098a5780634d709adf146109b55780635a604c52146109f657610381565b806333a581d21161028557806333a581d2146107e057806337c9be871461080b57806339509351146108685780633c8e556d146108d957610381565b8063313ce5671461075957806332424aa31461078757806332b75683146107b557610381565b80631df4ccfc116103185780632b112e49116102f25780632b112e49146106875780632b14ca56146106b25780632e0f2625146106dd5780632f34d2821461070857610381565b80631df4ccfc1461058a578063225e148f146105b557806323b872dd146105f657610381565b80630bd96187116103545780630bd96187146104c85780630f3d9b8214610509578063180b0d7e1461053457806318160ddd1461055f57610381565b806306fdde031461038657806308b1fd8f14610416578063095ea7b31461045757610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b61136c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103db5780820151818401526020810190506103c0565b50505050905090810190601f1680156104085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042257600080fd5b5061042b61140e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561046357600080fd5b506104b06004803603604081101561047a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611434565b60405180821515815260200191505060405180910390f35b3480156104d457600080fd5b506104dd611526565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561051557600080fd5b5061051e61154c565b6040518082815260200191505060405180910390f35b34801561054057600080fd5b50610549611552565b6040518082815260200191505060405180910390f35b34801561056b57600080fd5b50610574611558565b6040518082815260200191505060405180910390f35b34801561059657600080fd5b5061059f611562565b6040518082815260200191505060405180910390f35b3480156105c157600080fd5b506105ca611568565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060257600080fd5b5061066f6004803603606081101561061957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061158e565b60405180821515815260200191505060405180910390f35b34801561069357600080fd5b5061069c6117cd565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506106c76118e7565b6040518082815260200191505060405180910390f35b3480156106e957600080fd5b506106f26118ed565b6040518082815260200191505060405180910390f35b34801561071457600080fd5b506107576004803603602081101561072b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f2565b005b34801561076557600080fd5b5061076e611947565b604051808260ff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c61195e565b604051808260ff16815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611971565b6040518082815260200191505060405180910390f35b3480156107ec57600080fd5b506107f5611977565b6040518082815260200191505060405180910390f35b34801561081757600080fd5b506108666004803603604081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061197d565b005b34801561087457600080fd5b506108c16004803603604081101561088b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a47565b60405180821515815260200191505060405180910390f35b3480156108e557600080fd5b50610988600480360360808110156108fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c43565b005b34801561099657600080fd5b5061099f611d5e565b6040518082815260200191505060405180910390f35b3480156109c157600080fd5b506109ca611d64565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a0257600080fd5b50610a0b611d8a565b604051808260ff16815260200191505060405180910390f35b348015610a3057600080fd5b50610a39611d8f565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64611d95565b60405180821515815260200191505060405180910390f35b348015610a8857600080fd5b50610a91611da6565b60405180821515815260200191505060405180910390f35b348015610ab557600080fd5b50610af860048036036020811015610acc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db7565b6040518082815260200191505060405180910390f35b348015610b1a57600080fd5b50610b23611e14565b005b348015610b3157600080fd5b50610b3a611ece565b005b348015610b4857600080fd5b50610b51611f52565b60405180821515815260200191505060405180910390f35b348015610b7557600080fd5b50610bb860048036036020811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6a565b005b348015610bc657600080fd5b50610bcf611fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c0757600080fd5b50610c10612000565b60405180821515815260200191505060405180910390f35b348015610c3457600080fd5b50610c3d612058565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c7d578082015181840152602081019050610c62565b50505050905090810190601f168015610caa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cc457600080fd5b50610ccd6120fa565b6040518082815260200191505060405180910390f35b348015610cef57600080fd5b50610cf8612100565b6040518082815260200191505060405180910390f35b348015610d1a57600080fd5b50610d23612106565b6040518082815260200191505060405180910390f35b348015610d4557600080fd5b50610d8860048036036020811015610d5c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210c565b005b348015610d9657600080fd5b50610de360048036036040811015610dad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612161565b60405180821515815260200191505060405180910390f35b348015610e0757600080fd5b50610e106123f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4857600080fd5b50610e51612417565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e8957600080fd5b50610ed660048036036040811015610ea057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243d565b60405180821515815260200191505060405180910390f35b348015610efa57600080fd5b50610f03612491565b60405180821515815260200191505060405180910390f35b348015610f2757600080fd5b50610f306124a4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f70578082015181840152602081019050610f55565b50505050905090810190601f168015610f9d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610fb757600080fd5b50610fc0612542565b005b348015610fce57600080fd5b50610fd76128e3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561100f57600080fd5b50611018612909565b6040518082815260200191505060405180910390f35b34801561103a57600080fd5b506110696004803603602081101561105157600080fd5b8101908080351515906020019092919050505061290f565b005b34801561107757600080fd5b50611080612968565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110c05780820151818401526020810190506110a5565b50505050905090810190601f1680156110ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561110757600080fd5b5061114a6004803603602081101561111e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a06565b60405180821515815260200191505060405180910390f35b34801561116e57600080fd5b5061119b6004803603602081101561118557600080fd5b8101908080359060200190929190505050612a5c565b6040518082815260200191505060405180910390f35b3480156111bd57600080fd5b50611220600480360360408110156111d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b1e565b6040518082815260200191505060405180910390f35b34801561124257600080fd5b506112716004803603602081101561125957600080fd5b81019080803515159060200190929190505050612ba5565b005b34801561127f57600080fd5b506112c26004803603602081101561129657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c00565b005b3480156112d057600080fd5b506112d9612c1d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561131157600080fd5b506113546004803603602081101561132857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c43565b60405180821515815260200191505060405180910390f35b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114045780601f106113d957610100808354040283529160200191611404565b820191906000526020600020905b8154815290600101906020018083116113e757829003601f168201915b5050505050905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d5481565b6000601a54905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115cb57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146117b557611734836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d359092919063ffffffff16565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6117c0858585612df5565b5060019150509392505050565b60006118e2601b546118d4601c6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118c6601c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600a0a6205efb702600019816118b357fe5b066000190361316490919063ffffffff16565b61316490919063ffffffff16565b612ceb90919063ffffffff16565b905090565b600a5481565b600581565b6118fa612000565b61190357600080fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900460ff16905090565b600560009054906101000a900460ff1681565b60185481565b60001981565b611985612000565b61198e57600080fd5b611997826131ae565b6119ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180614a0c603b913960400191505060405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611ad882601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b611c4b612000565b611c5457600080fd5b83601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b601a5481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600781565b60095481565b60168054906101000a900460ff1681565b60148054906101000a900460ff1681565b6000611e0d601b54601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b9050919050565b611e1c612000565b611e2557600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f3857600080fd5b505af1158015611f4c573d6000803e3d6000fd5b50505050565b6000601660149054906101000a900460ff1615905090565b611f72612000565b611f7b57600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120f05780601f106120c5576101008083540402835291602001916120f0565b820191906000526020600020905b8154815290600101906020018083116120d357829003601f168201915b5050505050905090565b60075481565b60195481565b60175481565b612114612000565b61211d57600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612271576000601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612305565b612284838261316490919063ffffffff16565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561247a57600080fd5b612485338585612df5565b50600191505092915050565b601660159054906101000a900460ff1681565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561253a5780601f1061250f5761010080835404028352916020019161253a565b820191906000526020600020905b81548152906001019060200180831161251d57829003601f168201915b505050505081565b6001601660146101000a81548160ff021916908315150217905550612565612000565b61256e57600080fd5b60006125c4601b54601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b90506000811161261f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806149b66035913960400191505060405180910390fd5b6060600267ffffffffffffffff8111801561263957600080fd5b506040519080825280602002602001820160405280156126685781602001602082028036833780820191505090505b509050308160008151811061267957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271b57600080fd5b505afa15801561272f573d6000803e3d6000fd5b505050506040513d602081101561274557600080fd5b81019080805190602001909291905050508160018151811061276357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612883578082015181840152602081019050612868565b505050509050019650505050505050600060405180830381600087803b1580156128ac57600080fd5b505af11580156128c0573d6000803e3d6000fd5b5050505050506000601660146101000a81548160ff021916908315150217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b612917612000565b61292057600080fd5b801561294b57806016806101000a81548160ff02191690831515021790555042601981905550612965565b806016806101000a81548160ff0219169083151502179055505b50565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129fe5780601f106129d3576101008083540402835291602001916129fe565b820191906000526020600020905b8154815290600101906020018083116129e157829003601f168201915b505050505081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612ad5601b54601c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b9050612b16612ae26117cd565b612b08612af96002856131c190919063ffffffff16565b866131c190919063ffffffff16565b612ceb90919063ffffffff16565b915050919050565b6000601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612bad612000565b612bb657600080fd5b8015612be25780601660156101000a81548160ff02191690831515021790555042601881905550612bfd565b80601660156101000a81548160ff0219169083151502179055505b50565b612c08612000565b612c1157600080fd5b612c1a81613247565b50565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b600080828401905083811015612ce1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612d2d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613341565b905092915050565b6000838311158290612de2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612da7578082015181840152602081019050612d8c565b50505050905090810190601f168015612dd45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e9b5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601660149054906101000a900460ff1615612f3457612f2d848484613407565b905061315d565b612f3c613557565b15612f4a57612f4961360a565b5b612f52613846565b15612f6057612f5f6138e1565b5b612f68613f32565b15612f7657612f75613fa4565b5b6000612f8d601b54846131c190919063ffffffff16565b9050612fe181601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316490919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006130308686614480565b61303a5781613046565b613045868684614589565b5b905061309a81601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613141601b5485612ceb90919063ffffffff16565b6040518082815260200191505060405180910390a36001925050505b9392505050565b60006131a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d35565b905092915050565b600080823b905060008111915050919050565b6000808314156131d45760009050613241565b60008284029050828482816131e557fe5b041461323c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806149eb6021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561328157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906133ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133b2578082015181840152602081019050613397565b50505050905090810190601f1680156133df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816133f957fe5b049050809150509392505050565b60008061341f601b54846131c190919063ffffffff16565b905061347381601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316490919063ffffffff16565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350881601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b6000601660159054906101000a900460ff16801561358057506005600a0a63c1b7108002601a54105b80156135da5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156135f35750601660149054906101000a900460ff16155b80156136055750610384601854014210155b905090565b601660149054906101000a900460ff161561362457613844565b60008060175442039050600060185442039050600061364e61038483612ceb90919063ffffffff16565b90506000613666600f836131c190919063ffffffff16565b90506301e1338084101561367e57610d0594506136ba565b6301e1338084106136935761014d94506136b9565b6302d1cd4084106136a757602194506136b8565b630d28688084106136b757600394505b5b5b5b60005b8281101561371f5761370c600760ff16600a0a6136fe6136ed89600760ff16600a0a612c6390919063ffffffff16565b601a546131c190919063ffffffff16565b612ceb90919063ffffffff16565b601a8190555080806001019150506136bd565b5061374d601a546005600a0a6205efb7026000198161373a57fe5b0660001903612ceb90919063ffffffff16565b601b8190555061377c61376b610384846131c190919063ffffffff16565b601854612c6390919063ffffffff16565b601881905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137ec57600080fd5b505af1158015613800573d6000803e3d6000fd5b50505050807f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601a546040518082815260200191505060405180910390a250505050505b565b600060168054906101000a900460ff16801561386f5750601660149054906101000a900460ff16155b80156138c95750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156138dc57506202a300601954014210155b905090565b6001601660146101000a81548160ff0219169083151502179055506000613974601b54601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b9050613a29601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613ae9600283612ceb90919063ffffffff16565b90506000613b00828461316490919063ffffffff16565b90506000811415613b1357505050613f15565b6060600267ffffffffffffffff81118015613b2d57600080fd5b50604051908082528060200260200182016040528015613b5c5781602001602082028036833780820191505090505b5090503081600081518110613b6d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c0f57600080fd5b505afa158015613c23573d6000803e3d6000fd5b505050506040513d6020811015613c3957600080fd5b810190808051906020019092919050505081600181518110613c5757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613d5a578082015181840152602081019050613d3f565b505050509050019650505050505050600060405180830381600087803b158015613d8357600080fd5b505af1158015613d97573d6000803e3d6000fd5b505050506000613db0824761316490919063ffffffff16565b9050600085118015613dc25750600081115b15613f0757601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823088600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015613eb357600080fd5b505af1158015613ec7573d6000803e3d6000fd5b50505050506040513d6060811015613ede57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505b426019819055505050505050505b6000601660146101000a81548160ff021916908315150217905550565b6000601660149054906101000a900460ff16158015613f9f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b905090565b6001601660146101000a81548160ff0219169083151502179055506000614015601b54601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ceb90919063ffffffff16565b905060008114156140265750614463565b60004790506060600267ffffffffffffffff8111801561404557600080fd5b506040519080825280602002602001820160405280156140745781602001602082028036833780820191505090505b509050308160008151811061408557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412757600080fd5b505afa15801561413b573d6000803e3d6000fd5b505050506040513d602081101561415157600080fd5b81019080805190602001909291905050508160018151811061416f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561426d578082015181840152602081019050614252565b505050509050019650505050505050600060405180830381600087803b15801561429657600080fd5b505af11580156142aa573d6000803e3d6000fd5b5050505060006142c3834761316490919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661433d61431a600954600854612c6390919063ffffffff16565b61432f600854866131c190919063ffffffff16565b612ceb90919063ffffffff16565b61753090604051806000019050600060405180830381858888f193505050503d8060008114614388576040519150601f19603f3d011682016040523d82523d6000602084013e61438d565b606091505b50509050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166144076143e4600954600854612c6390919063ffffffff16565b6143f9600954866131c190919063ffffffff16565b612ceb90919063ffffffff16565b61753090604051806000019050600060405180830381858888f193505050503d8060008114614452576040519150601f19603f3d011682016040523d82523d6000602084013e614457565b606091505b50508091505050505050505b6000601660146101000a81548160ff021916908315150217905550565b60008273ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061452b57508173ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156145815750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600c54905060006008549050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561462157614605600a54600c54612c6390919063ffffffff16565b915061461e600a54600854612c6390919063ffffffff16565b90505b600061464a8361463c600d5488612ceb90919063ffffffff16565b6131c190919063ffffffff16565b90506146e8614678600b5461466a600d5489612ceb90919063ffffffff16565b6131c190919063ffffffff16565b601c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d961478b61476860095485612c6390919063ffffffff16565b61477d600d5489612ceb90919063ffffffff16565b6131c190919063ffffffff16565b601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b861484860075461483a600d5489612ceb90919063ffffffff16565b6131c190919063ffffffff16565b601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c6390919063ffffffff16565b601c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614981601b5485612ceb90919063ffffffff16565b6040518082815260200191505060405180910390a36149a9818661316490919063ffffffff16565b9350505050939250505056fe5468657265206973206e6f2043726974616e6f20746f6b656e206465706f736974656420696e20746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f776564206578746572616e6c6c79206f776e6564206163636f756e74a2646970667358221220c3f81623a42ef50f4e3ab435eca04861c1ac7c66272801e547fee928ed616f8a64736f6c63430007040033
Deployed ByteCode Sourcemap
14199:16416:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13923:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15482:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27968:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15570:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15081:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15264:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30129:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15121:136;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15520:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19147:455;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28350:215;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15047:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14691:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30009:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14109:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14465:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16151:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14734:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29593:292;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27554:406;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28753:424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16232:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14500:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14790:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14997:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16073:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15635:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30239:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13134:126;;;;;;;;;;;;;:::i;:::-;;28666:79;;;;;;;;;;;;;:::i;:::-;;28573:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29484:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12869:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13034:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14014:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14920:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16189:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16109:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29893:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26950:596;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15711:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15602:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18924:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16043:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14425:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24770:627;;;;;;;;;;;;;:::i;:::-;;15439:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14959:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26487:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14387:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28229:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29185:291;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26748:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26249:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13268:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15672:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16442:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13923:83;13960:13;13993:5;13986:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13923:83;:::o;15482:31::-;;;;;;;;;;;;;:::o;27968:253::-;28071:4;28134:5;28093:17;:29;28111:10;28093:29;;;;;;;;;;;;;;;:38;28123:7;28093:38;;;;;;;;;;;;;;;:46;;;;28176:7;28155:36;;28164:10;28155:36;;;28185:5;28155:36;;;;;;;;;;;;;;;;;;28209:4;28202:11;;27968:253;;;;:::o;15570:25::-;;;;;;;;;;;;;:::o;15081:33::-;;;;:::o;15264:36::-;;;;:::o;30129:102::-;30184:7;30211:12;;30204:19;;30129:102;:::o;15121:136::-;;;;:::o;15520:43::-;;;;;;;;;;;;;:::o;19147:455::-;19290:4;19277:2;14658:3;14644:18;;:2;:18;;;;14636:27;;;;;;19358:2:::1;19311:17;:23;19329:4;19311:23;;;;;;;;;;;;;;;:35;19335:10;19311:35;;;;;;;;;;;;;;;;:50;19307:225;;19416:104;19488:5;19416:104;;;;;;;;;;;;;;;;::::0;:17:::1;:23;19434:4;19416:23;;;;;;;;;;;;;;;:67;19458:10;19416:67;;;;;;;;;;;;;;;;:71;;:104;;;;;:::i;:::-;19378:17;:23;19396:4;19378:23;;;;;;;;;;;;;;;:35;19402:10;19378:35;;;;;;;;;;;;;;;:142;;;;19307:225;19542:30;19556:4;19562:2;19566:5;19542:13;:30::i;:::-;;19590:4;19583:11;;19147:455:::0;;;;;;:::o;28350:215::-;28403:7;28443:114;28526:16;;28444:58;28483:12;:18;28496:4;;;;;;;;;;;28483:18;;;;;;;;;;;;;;;;28444:34;28459:12;:18;28472:4;;;;;;;;;;;28459:18;;;;;;;;;;;;;;;;14726:1;14899:2;:12;14890:6;:21;14781:1;14772:11;15922:38;;;;;;14781:1;14772:11;15907:54;28444:14;;:34;;;;:::i;:::-;:38;;:58;;;;:::i;:::-;28443:64;;:114;;;;:::i;:::-;28423:134;;28350:215;:::o;15047:27::-;;;;:::o;14691:36::-;14726:1;14691:36;:::o;30009:112::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;30104:8:::1;30072:12;;:41;;;;;;;;;;;;;;;;;;30009:112:::0;:::o;14109:83::-;14150:5;14175:9;;;;;;;;;;;14168:16;;14109:83;:::o;14465:26::-;;;;;;;;;;;;;:::o;16151:31::-;;;;:::o;14734:49::-;14781:1;14772:11;14734:49;:::o;29593:292::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;29726:23:::1;29737:11;29726:10;:23::i;:::-;29704:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29872:5;29847:9;:22;29857:11;29847:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;29593:292:::0;;:::o;27554:406::-;27654:4;27717:78;27784:10;27717:17;:29;27735:10;27717:29;;;;;;;;;;;;;;;:62;27761:7;27717:62;;;;;;;;;;;;;;;;:66;;:78;;;;:::i;:::-;27676:17;:29;27694:10;27676:29;;;;;;;;;;;;;;;:38;27706:7;27676:38;;;;;;;;;;;;;;;:119;;;;27859:7;27811:119;;27834:10;27811:119;;;27881:17;:29;27899:10;27881:29;;;;;;;;;;;;;;;:38;27911:7;27881:38;;;;;;;;;;;;;;;;27811:119;;;;;;;;;;;;;;;;;;27948:4;27941:11;;27554:406;;;;:::o;28753:424::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;28994:22:::1;28970:21;;:46;;;;;;;;;;;;;;;;;;29046:17;29027:16;;:36;;;;;;;;;;;;;;;;;;29105:29;29074:28;;:60;;;;;;;;;;;;;;;;;;29158:11;29145:10;;:24;;;;;;;;;;;;;;;;;;28753:424:::0;;;;:::o;16232:27::-;;;;:::o;14500:36::-;;;;;;;;;;;;;:::o;14790:39::-;14828:1;14790:39;:::o;14997:43::-;;;;:::o;16073:29::-;;;;;;;;;;;;:::o;15635:30::-;;;;;;;;;;;;:::o;30239:138::-;30303:7;30330:39;30352:16;;30330:12;:17;30343:3;30330:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;30323:46;;30239:138;;;:::o;13134:126::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;13215:6:::1;;;;;;;;;;;13196:26;;;;;;;;;;;;13250:1;13233:6;;:19;;;;;;;;;;;;;;;;;;13134:126::o:0;28666:79::-;28725:4;;;;;;;;;;;28708:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28666:79::o;28573:85::-;28619:4;28644:6;;;;;;;;;;;28643:7;28636:14;;28573:85;:::o;29484:101::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;29573:4:::1;29551:12;:19;29564:5;29551:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;29484:101:::0;:::o;12869:79::-;12907:7;12934:6;;;;;;;;;;;12927:13;;12869:79;:::o;13034:92::-;13074:4;13112:6;;;;;;;;;;;13098:20;;:10;:20;;;13091:27;;13034:92;:::o;14014:87::-;14053:13;14086:7;14079:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14014:87;:::o;14920:32::-;;;;:::o;16189:36::-;;;;:::o;16109:35::-;;;;:::o;29893:108::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;29981:12:::1;29967:11;;:26;;;;;;;;;;;;;;;;;;29893:108:::0;:::o;26950:596::-;27055:4;27077:16;27096:17;:29;27114:10;27096:29;;;;;;;;;;;;;;;:38;27126:7;27096:38;;;;;;;;;;;;;;;;27077:57;;27168:8;27149:15;:27;27145:237;;27234:1;27193:17;:29;27211:10;27193:29;;;;;;;;;;;;;;;:38;27223:7;27193:38;;;;;;;;;;;;;;;:42;;;;27145:237;;;27309:61;27340:15;27309:8;:12;;:61;;;;:::i;:::-;27268:17;:29;27286:10;27268:29;;;;;;;;;;;;;;;:38;27298:7;27268:38;;;;;;;;;;;;;;;:102;;;;27145:237;27445:7;27397:119;;27420:10;27397:119;;;27467:17;:29;27485:10;27467:29;;;;;;;;;;;;;;;:38;27497:7;27467:38;;;;;;;;;;;;;;;;27397:119;;;;;;;;;;;;;;;;;;27534:4;27527:11;;;26950:596;;;;:::o;15711:19::-;;;;;;;;;;;;;:::o;15602:26::-;;;;;;;;;;;;;:::o;18924:215::-;19051:4;19029:2;14658:3;14644:18;;:2;:18;;;;14636:27;;;;;;19073:36:::1;19087:10;19099:2;19103:5;19073:13;:36::i;:::-;;19127:4;19120:11;;18924:215:::0;;;;;:::o;16043:23::-;;;;;;;;;;;;;:::o;14425:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24770:627::-;15803:4;15794:6;;:13;;;;;;;;;;;;;;;;;;12996:9:::1;:7;:9::i;:::-;12988:18;;;::::0;::::1;;24842:20:::2;24865:73;24911:16;;24865:12;:27;24886:4;24865:27;;;;;;;;;;;;;;;;:31;;:73;;;;:::i;:::-;24842:96;;24986:1;24971:12;:16;24949:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25079:21;25117:1;25103:16;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25079:40;;25148:4;25130;25135:1;25130:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::2;25174:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;25164:4;25169:1;25164:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::2;25198:6;;;;;;;;;;;:57;;;25270:12;25297:1;25313:4;25332:16;;;;;;;;;;;25363:15;25198:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;13017:1;;15839:5:::0;15830:6;;:14;;;;;;;;;;;;;;;;;;24770:627::o;15439:36::-;;;;;;;;;;;;;:::o;14959:31::-;;;;:::o;26487:253::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;26562:5:::1;26558:175;;;26604:5;26584:17;::::0;:25:::1;;;;;;;;;;;;;;;;;;26648:15;26624:21;:39;;;;26558:175;;;26716:5;26696:17;::::0;:25:::1;;;;;;;;;;;;;;;;;;26558:175;26487:253:::0;:::o;14387:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28229:113::-;28291:4;28315:12;:19;28328:5;28315:19;;;;;;;;;;;;;;;;;;;;;;;;;28308:26;;28229:113;;;:::o;29185:291::-;29280:7;29305:24;29332:40;29355:16;;29332:12;:18;29345:4;;;;;;;;;;;29332:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;29305:67;;29403:65;29445:22;:20;:22::i;:::-;29403:37;29416:23;29437:1;29416:16;:20;;:23;;;;:::i;:::-;29403:8;:12;;:37;;;;:::i;:::-;:41;;:65;;;;:::i;:::-;29383:85;;;29185:291;;;:::o;26748:194::-;26868:7;26900:17;:25;26918:6;26900:25;;;;;;;;;;;;;;;:34;26926:7;26900:34;;;;;;;;;;;;;;;;26893:41;;26748:194;;;;:::o;26249:230::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;26318:5:::1;26314:158;;;26354:5;26340:11;;:19;;;;;;;;;;;;;;;;;;26393:15;26374:16;:34;;;;26314:158;;;26455:5;26441:11;;:19;;;;;;;;;;;;;;;;;;26314:158;26249:230:::0;:::o;13268:109::-;12996:9;:7;:9::i;:::-;12988:18;;;;;;13341:28:::1;13360:8;13341:18;:28::i;:::-;13268:109:::0;:::o;15672:32::-;;;;;;;;;;;;;:::o;16442:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1191:181::-;1249:7;1269:9;1285:1;1281;:5;1269:17;;1310:1;1305;:6;;1297:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:1;1356:8;;;1191:181;;;;:::o;2016:132::-;2074:7;2101:39;2105:1;2108;2101:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2094:46;;2016:132;;;;:::o;1524:226::-;1644:7;1677:1;1672;:6;;1680:12;1664:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1704:9;1720:1;1716;:5;1704:17;;1741:1;1734:8;;;1524:226;;;;;:::o;19957:1077::-;20083:4;20109:9;:17;20119:6;20109:17;;;;;;;;;;;;;;;;;;;;;;;;;20108:18;:43;;;;;20131:9;:20;20141:9;20131:20;;;;;;;;;;;;;;;;;;;;;;;;;20130:21;20108:43;20100:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20185:6;;;;;;;;;;;20181:87;;;20215:41;20230:6;20238:9;20249:6;20215:14;:41::i;:::-;20208:48;;;;20181:87;20282:14;:12;:14::i;:::-;20278:55;;;20313:8;:6;:8::i;:::-;20278:55;20349:20;:18;:20::i;:::-;20345:67;;;20386:14;:12;:14::i;:::-;20345:67;20428:16;:14;:16::i;:::-;20424:59;;;20461:10;:8;:10::i;:::-;20424:59;20495:17;20515:28;20526:16;;20515:6;:10;;:28;;;;:::i;:::-;20495:48;;20577:35;20602:9;20577:12;:20;20590:6;20577:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;20554:12;:20;20567:6;20554:20;;;;;;;;;;;;;;;:58;;;;20623:25;20651:32;20665:6;20673:9;20651:13;:32::i;:::-;:110;;20752:9;20651:110;;;20699:37;20707:6;20715:9;20726;20699:7;:37::i;:::-;20651:110;20623:138;;20798:70;20840:17;20798:12;:23;20811:9;20798:23;;;;;;;;;;;;;;;;:27;;:70;;;;:::i;:::-;20772:12;:23;20785:9;20772:23;;;;;;;;;;;;;;;:96;;;;20930:9;20886:118;;20909:6;20886:118;;;20954:39;20976:16;;20954:17;:21;;:39;;;;:::i;:::-;20886:118;;;;;;;;;;;;;;;;;;21022:4;21015:11;;;;19957:1077;;;;;;:::o;1380:136::-;1438:7;1465:43;1469:1;1472;1465:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1458:50;;1380:136;;;;:::o;30385:190::-;30442:4;30459:12;30526:4;30514:17;30506:25;;30566:1;30559:4;:8;30552:15;;;30385:190;;;:::o;1758:250::-;1816:7;1845:1;1840;:6;1836:47;;;1870:1;1863:8;;;;1836:47;1895:9;1911:1;1907;:5;1895:17;;1940:1;1935;1931;:5;;;;;;:10;1923:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:1;1992:8;;;1758:250;;;;;:::o;13385:187::-;13479:1;13459:22;;:8;:22;;;;13451:31;;;;;;13527:8;13498:38;;13519:6;;;;;;;;;;;13498:38;;;;;;;;;;;;13556:8;13547:6;;:17;;;;;;;;;;;;;;;;;;13385:187;:::o;2156:225::-;2276:7;2308:1;2304;:5;2311:12;2296:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2335:9;2351:1;2347;:5;;;;;;2335:17;;2372:1;2365:8;;;2156:225;;;;;:::o;19610:339::-;19728:4;19745:17;19765:28;19776:16;;19765:6;:10;;:28;;;;:::i;:::-;19745:48;;19825:33;19848:9;19825:12;:18;19838:4;19825:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;19804:12;:18;19817:4;19804:18;;;;;;;;;;;;;;;:54;;;;19888:31;19909:9;19888:12;:16;19901:2;19888:16;;;;;;;;;;;;;;;;:20;;:31;;;;:::i;:::-;19869:12;:16;19882:2;19869:16;;;;;;;;;;;;;;;:50;;;;19937:4;19930:11;;;19610:339;;;;;:::o;25600:273::-;25647:4;25684:11;;;;;;;;;;;:55;;;;;14726:1;16022:2;:12;16008:11;:26;25713:12;;:25;25684:55;:90;;;;;25770:4;;;;;;;;;;;25756:18;;:10;:18;;;;25684:90;:114;;;;;25792:6;;;;;;;;;;;25791:7;25684:114;:181;;;;;25854:10;25835:16;;:29;25815:15;:50;;25684:181;25664:201;;25600:273;:::o;17811:1105::-;17853:6;;;;;;;;;;;17849:19;;;17861:7;;17849:19;17878:18;17907:25;17953:20;;17935:15;:38;17907:66;;17984:17;18022:16;;18004:15;:34;17984:54;;18049:13;18065:25;18079:10;18065:9;:13;;:25;;;;:::i;:::-;18049:41;;18101:13;18117;18127:2;18117:5;:9;;:13;;;;:::i;:::-;18101:29;;18168:8;18147:17;:30;18143:351;;;18207:4;18194:17;;18143:351;;;18255:8;18233:17;:31;18229:265;;18294:3;18281:16;;18229:265;;;18341:20;18319:17;:43;18315:179;;18392:2;18379:15;;18315:179;;;18438:12;18416:17;:35;18412:82;;18481:1;18468:14;;18412:82;18315:179;18229:265;18143:351;18511:9;18506:190;18530:5;18526:1;:9;18506:190;;;18572:112;14828:1;18666:17;;:2;:17;18572:71;18607:35;18631:10;14828:1;18608:17;;:2;:17;18607:23;;:35;;;;:::i;:::-;18572:12;;:34;;:71;;;;:::i;:::-;:93;;:112;;;;:::i;:::-;18557:12;:127;;;;18537:3;;;;;;;18506:190;;;;18727:28;18742:12;;14726:1;14899:2;:12;14890:6;:21;14781:1;14772:11;15922:38;;;;;;14781:1;14772:11;15907:54;18727:14;;:28;;;;:::i;:::-;18708:16;:47;;;;18785:43;18806:21;18816:10;18806:5;:9;;:21;;;;:::i;:::-;18785:16;;:20;;:43;;;;:::i;:::-;18766:16;:62;;;;18841:12;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18888:5;18878:30;18895:12;;18878:30;;;;;;;;;;;;;;;;;;17811:1105;;;;;;:::o;25881:242::-;25934:4;25971:17;;;;;;;;;;:41;;;;;26006:6;;;;;;;;;;;26005:7;25971:41;:76;;;;;26043:4;;;;;;;;;;;26029:18;;:10;:18;;;;25971:76;:144;;;;;26108:6;26084:21;;:30;26064:15;:51;;25971:144;25951:164;;25881:242;:::o;22133:1404::-;15803:4;15794:6;;:13;;;;;;;;;;;;;;;;;;22186:27:::1;22216:81;22270:16;;22216:12;:35;22229:21;;;;;;;;;;;22216:35;;;;;;;;;;;;;;;;:39;;:81;;;;:::i;:::-;22186:111;;22338:92;22384:12;:35;22397:21;;;;;;;;;;;22384:35;;;;;;;;;;;;;;;;22338:12;:27;22359:4;22338:27;;;;;;;;;;;;;;;;:31;;:92;;;;:::i;:::-;22308:12;:27;22329:4;22308:27;;;;;;;;;;;;;;;:122;;;;22479:1;22441:12;:35;22454:21;;;;;;;;;;;22441:35;;;;;;;;;;;;;;;:39;;;;22491:23;22517:26;22541:1;22517:19;:23;;:26;;;;:::i;:::-;22491:52;;22554:20;22577:40;22601:15;22577:19;:23;;:40;;;;:::i;:::-;22554:63;;22650:1;22634:12;:17;22630:56;;;22668:7;;;;;22630:56;22696:21;22734:1;22720:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22696:40;;22765:4;22747;22752:1;22747:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;22791:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;22781:4;22786:1;22781:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;22817:21;22841;22817:45;;22875:6;;;;;;;;;;;:57;;;22947:12;22974:1;22990:4;23017;23037:15;22875:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23076:26;23105:40;23131:13;23105:21;:25;;:40;;;;:::i;:::-;23076:69;;23180:1;23162:15;:19;:45;;;;;23206:1;23185:18;:22;23162:45;23158:322;;;23224:6;;;;;;;;;;;:22;;;23254:18;23300:4;23324:15;23358:1;23378::::0;23398:21:::1;;;;;;;;;;;23438:15;23224:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23158:322;23514:15;23490:21;:39;;;;15818:1;;;;;;;15839:5:::0;15830:6;;:14;;;;;;;;;;;;;;;;;;22133:1404::o;26131:110::-;26180:4;26205:6;;;;;;;;;;;26204:7;:29;;;;;26229:4;;;;;;;;;;;26215:18;;:10;:18;;;;26204:29;26197:36;;26131:110;:::o;23545:1217::-;15803:4;15794:6;;:13;;;;;;;;;;;;;;;;;;23594:20:::1;23617:73;23663:16;;23617:12;:27;23638:4;23617:27;;;;;;;;;;;;;;;;:31;;:73;;;;:::i;:::-;23594:96;;23723:1;23707:12;:17;23703:56;;;23741:7;;;23703:56;23771:21;23795;23771:45;;23827:21;23865:1;23851:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23827:40;;23896:4;23878;23883:1;23878:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;23922:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;23912:4;23917:1;23912:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;23948:6;;;;;;;;;;;:57;;;24020:12;24047:1;24063:4;24090;24110:15;23948:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24149:33;24185:64;24225:13;24185:21;:25;;:64;;;;:::i;:::-;24149:100;;24263:12;24289:16;;;;;;;;;;;24281:30;;24333:120;24398:40;24414:23;;24398:11;;:15;;:40;;;;:::i;:::-;24333:42;24363:11;;24333:25;:29;;:42;;;;:::i;:::-;:46;;:120;;;;:::i;:::-;24473:5;24281:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24262:231;;;24526:28;;;;;;;;;;;24518:42;;24582:132;24659:40;24675:23;;24659:11;;:15;;:40;;;;:::i;:::-;24582:54;24612:23;;24582:25;:29;;:54;;;;:::i;:::-;:58;;:132;;;;:::i;:::-;24734:5;24518:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24504:250;;;;;15818:1;;;;;;15839:5:::0;15830:6;;:14;;;;;;;;;;;;;;;;;;23545:1217::o;25405:187::-;25504:4;25542;25534:12;;:4;;;;;;;;;;;:12;;;:26;;;;25558:2;25550:10;;:4;;;;;;;;;;;:10;;;25534:26;25533:51;;;;;25566:12;:18;25579:4;25566:18;;;;;;;;;;;;;;;;;;;;;;;;;25565:19;25533:51;25526:58;;25405:187;;;;:::o;21042:1083::-;21165:7;21185:17;21205:8;;21185:28;;21224:20;21247:11;;21224:34;;21288:4;;;;;;;;;;;21275:17;;:9;:17;;;21271:137;;;21321:21;21334:7;;21321:8;;:12;;:21;;;;:::i;:::-;21309:33;;21372:24;21388:7;;21372:11;;:15;;:24;;;;:::i;:::-;21357:39;;21271:137;21420:17;21440:44;21474:9;21440:29;21454:14;;21440:9;:13;;:29;;;;:::i;:::-;:33;;:44;;;;:::i;:::-;21420:64;;21524:102;21567:48;21601:13;;21567:29;21581:14;;21567:9;:13;;:29;;;;:::i;:::-;:33;;:48;;;;:::i;:::-;21524:12;:24;21537:10;;;;;;;;;;;21524:24;;;;;;;;;;;;;;;;:28;;:102;;;;:::i;:::-;21497:12;:24;21510:10;;;;;;;;;;;21497:24;;;;;;;;;;;;;;;:129;;;;21667:165;21713:108;21765:41;21782:23;;21765:12;:16;;:41;;;;:::i;:::-;21713:29;21727:14;;21713:9;:13;;:29;;;;:::i;:::-;:33;;:108;;;;:::i;:::-;21667:12;:27;21688:4;21667:27;;;;;;;;;;;;;;;;:31;;:165;;;;:::i;:::-;21637:12;:27;21658:4;21637:27;;;;;;;;;;;;;;;:195;;;;21881:112;21945:47;21979:12;;21945:29;21959:14;;21945:9;:13;;:29;;;;:::i;:::-;:33;;:47;;;;:::i;:::-;21881:12;:59;21908:21;;;;;;;;;;;21881:59;;;;;;;;;;;;;;;;:63;;:112;;;;:::i;:::-;21843:12;:35;21856:21;;;;;;;;;;;21843:35;;;;;;;;;;;;;;;:150;;;;22036:4;22011:64;;22020:6;22011:64;;;22043:31;22057:16;;22043:9;:13;;:31;;;;:::i;:::-;22011:64;;;;;;;;;;;;;;;;;;22093:24;22107:9;22093;:13;;:24;;;;:::i;:::-;22086:31;;;;;21042:1083;;;;;:::o
Swarm Source
ipfs://c3f81623a42ef50f4e3ab435eca04861c1ac7c66272801e547fee928ed616f8a