ERC-20
Source Code
Overview
Max Total Supply
100,000,000,000 MRPEPE
Holders
45
Transfers
-
0
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x5b1e6438...F02070c5D The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MRPEPE
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2023-05-09
*/
pragma solidity 0.8.5;
// SPDX-License-Identifier: MIT
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IBEP20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) { return 0; }
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor (address initialOwner) {
_owner = initialOwner;
emit OwnershipTransferred(address(0), initialOwner);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is still locked");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
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(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint 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 (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint 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 (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
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 (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract MRPEPE is Context, IBEP20, Ownable {
using SafeMath for uint256;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcluded;
mapping (address => mapping (address => uint256)) private _allowances;
address[] private _excluded;
address public _marketingWallet;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 100000000000 * 10**18;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
string public constant name = "MRPEPE";
string public constant symbol = "MRPEPE";
uint8 public constant decimals = 18;
// transfer fee
uint256 public _taxFeeTransfer = 0;
uint256 public _liquidityFeeTransfer = 0;
uint256 public _marketingFeeTransfer = 0;
// buy fee
uint256 public _taxFeeBuy = 0;
uint256 public _liquidityFeeBuy = 0;
uint256 public _marketingFeeBuy = 0;
// sell fee
uint256 public _taxFeeSell = 0;
uint256 public _liquidityFeeSell = 0;
uint256 public _marketingFeeSell = 0;
uint256 public _sellPercentageOfLiquidityForCashback = 0;
uint256 public _maxTxAmount = _tTotal / 2;
uint256 public _minTokenBalance = _tTotal / 2000;
// liquidity
bool public _swapAndLiquifyEnabled = true;
bool private _inSwapAndLiquify;
IUniswapV2Router02 public _uniswapV2Router;
address public _uniswapV2Pair;
event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 bnbReceived,
uint256 tokensIntoLiqudity
);
modifier lockTheSwap {
_inSwapAndLiquify = true;
_;
_inSwapAndLiquify = false;
}
constructor (address cOwner, address marketingWallet) Ownable(cOwner) {
_marketingWallet = marketingWallet;
_rOwned[cOwner] = _rTotal;
// // Create a uniswap pair for this new token
IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
_uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
_uniswapV2Router = uniswapV2Router;
// exclude system addresses from fee
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_marketingWallet] = true;
emit Transfer(address(0), cOwner, _tTotal);
}
receive() external payable {}
// BEP20
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
return true;
}
// REFLECTION
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferFee) {
(, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(uint256 rAmount,,) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, currentRate);
return rAmount;
} else {
(, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(, uint256 rTransferAmount,) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, currentRate);
return rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function excludeFromReward(address account) public onlyOwner {
require(!_isExcluded[account], "Account is already excluded");
if (_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReward(address account) external onlyOwner {
require(_isExcluded[account], "Account is already excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function totalFees() public view returns (uint256) {
return _tFeeTotal;
}
// STATE
function setMarketingWallet(address marketingWallet) external onlyOwner {
_marketingWallet = marketingWallet;
}
function setExcludedFromFee(address account, bool e) external onlyOwner {
_isExcludedFromFee[account] = e;
}
function setTransferFee(uint256 taxFee, uint256 liquidityFee, uint256 marketingFee) external onlyOwner {
_taxFeeTransfer = taxFee;
_liquidityFeeTransfer = liquidityFee;
_marketingFeeTransfer = marketingFee;
}
function setBuyFee(uint256 taxFee, uint256 liquidityFee, uint256 marketingFee) external onlyOwner {
_taxFeeBuy = taxFee;
_liquidityFeeBuy = liquidityFee;
_marketingFeeBuy = marketingFee;
}
function setSellFee(uint256 taxFee, uint256 liquidityFee, uint256 marketingFee) external onlyOwner {
_taxFeeSell = taxFee;
_liquidityFeeSell = liquidityFee;
_marketingFeeSell = marketingFee;
}
function setCashbackPercent(uint256 cashbackPercent) external onlyOwner {
_sellPercentageOfLiquidityForCashback = cashbackPercent;
}
function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner {
_maxTxAmount = _tTotal.mul(maxTxPercent).div(100);
}
function setMinTokenBalance(uint256 minTokenBalance) external onlyOwner {
_minTokenBalance = minTokenBalance;
}
function setSwapAndLiquifyEnabled(bool enabled) public onlyOwner {
_swapAndLiquifyEnabled = enabled;
emit SwapAndLiquifyEnabledUpdated(enabled);
}
function isExcludedFromFee(address account) public view returns(bool) {
return _isExcludedFromFee[account];
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function setUniswapRouter(address r) external onlyOwner {
IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(r);
_uniswapV2Router = uniswapV2Router;
}
function setUniswapPair(address p) external onlyOwner {
_uniswapV2Pair = p;
}
function withdrawBnb(uint256 amount) external onlyOwner {
payable(owner()).transfer(amount);
}
function withdrawToken(address tokenAddress, uint256 amount) external onlyOwner {
IBEP20(tokenAddress).transfer(owner(), amount);
}
// TRANSFER
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "BEP20: transfer from the zero address");
require(to != address(0), "BEP20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if (from != owner() && to != owner()) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
/*
- swapAndLiquify will be initiated when token balance of this contract
has accumulated enough over the minimum number of tokens required.
- don't get caught in a circular liquidity event.
- don't swapAndLiquify if sender is uniswap pair.
*/
uint256 contractTokenBalance = balanceOf(address(this));
if (contractTokenBalance >= _maxTxAmount) {
contractTokenBalance = _maxTxAmount;
}
bool isOverMinTokenBalance = contractTokenBalance >= _minTokenBalance;
if (
isOverMinTokenBalance &&
!_inSwapAndLiquify &&
from != _uniswapV2Pair &&
_swapAndLiquifyEnabled
) {
contractTokenBalance = _minTokenBalance;
swapAndLiquify(contractTokenBalance);
}
bool takeFee = true;
if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
takeFee = false;
}
_tokenTransfer(from, to, amount, takeFee);
}
function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
// split contract balance into halves
uint256 half = contractTokenBalance.div(2);
uint256 otherHalf = contractTokenBalance.sub(half);
/*
capture the contract's current BNB balance.
this is so that we can capture exactly the amount of BNB that
the swap creates, and not make the liquidity event include any BNB
that has been manually sent to the contract.
*/
uint256 initialBalance = address(this).balance;
// swap tokens for BNB
swapTokensForBnb(half);
// this is the amount of BNB that we just swapped into
uint256 newBalance = address(this).balance.sub(initialBalance);
uint256 bnbForCashback = newBalance.mul(_sellPercentageOfLiquidityForCashback).div(100);
uint256 bnbForLiquidity = newBalance.sub(bnbForCashback);
// add liquidity to uniswap
addLiquidity(otherHalf, bnbForLiquidity);
emit SwapAndLiquify(half, bnbForLiquidity, otherHalf);
}
function swapTokensForBnb(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = _uniswapV2Router.WETH();
_approve(address(this), address(_uniswapV2Router), tokenAmount);
// make the swap
_uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of BNB
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(_uniswapV2Router), tokenAmount);
// add the liquidity
_uniswapV2Router.addLiquidityETH{value: bnbAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
uint256 previousTaxFee = _taxFeeTransfer;
uint256 previousLiquidityFee = _liquidityFeeTransfer;
uint256 previousMarketingFee = _marketingFeeTransfer;
bool isBuy = sender == _uniswapV2Pair && recipient != address(_uniswapV2Router);
bool isSell = recipient == _uniswapV2Pair;
if (!takeFee) {
_taxFeeTransfer = 0;
_liquidityFeeTransfer = 0;
_marketingFeeTransfer = 0;
} else if (isBuy) {
_taxFeeTransfer = _taxFeeBuy;
_liquidityFeeTransfer = _liquidityFeeBuy;
_marketingFeeTransfer = _marketingFeeBuy;
} else if (isSell) {
_taxFeeTransfer = _taxFeeSell;
_liquidityFeeTransfer = _liquidityFeeSell;
_marketingFeeTransfer = _marketingFeeSell;
}
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(sender, recipient, amount);
} else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
_transferStandard(sender, recipient, amount);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(sender, recipient, amount);
} else {
_transferStandard(sender, recipient, amount);
}
if (!takeFee || isBuy || isSell) {
_taxFeeTransfer = previousTaxFee;
_liquidityFeeTransfer = previousLiquidityFee;
_marketingFeeTransfer = previousMarketingFee;
}
}
function _transferStandard(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, currentRate);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
takeTransactionFee(sender, address(this), tLiquidity, currentRate);
takeTransactionFee(sender, address(_marketingWallet), tMarketing, currentRate);
reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, currentRate);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
takeTransactionFee(sender, address(this), tLiquidity, currentRate);
takeTransactionFee(sender, address(_marketingWallet), tMarketing, currentRate);
reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, currentRate);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
takeTransactionFee(sender, address(this), tLiquidity, currentRate);
takeTransactionFee(sender, address(_marketingWallet), tMarketing, currentRate);
reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
(uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing) = _getTValues(tAmount);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tMarketing, currentRate);
_tOwned[sender] = _tOwned[sender].sub(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
takeTransactionFee(sender, address(this), tLiquidity, currentRate);
takeTransactionFee(sender, address(_marketingWallet), tMarketing, currentRate);
reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
uint256 tFee = tAmount.mul(_taxFeeTransfer).div(10000);
uint256 tLiquidity = tAmount.mul(_liquidityFeeTransfer).div(10000);
uint256 tMarketing = tAmount.mul(_marketingFeeTransfer).div(10000);
uint256 tTransferAmount = tAmount.sub(tFee);
tTransferAmount = tTransferAmount.sub(tLiquidity);
tTransferAmount = tTransferAmount.sub(tMarketing);
return (tTransferAmount, tFee, tLiquidity, tMarketing);
}
function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rLiquidity = tLiquidity.mul(currentRate);
uint256 rMarketing = tMarketing.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee);
rTransferAmount = rTransferAmount.sub(rLiquidity);
rTransferAmount = rTransferAmount.sub(rMarketing);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply.sub(_rOwned[_excluded[i]]);
tSupply = tSupply.sub(_tOwned[_excluded[i]]);
}
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function takeTransactionFee(address from, address to, uint256 tAmount, uint256 currentRate) private {
if (tAmount <= 0) { return; }
uint256 rAmount = tAmount.mul(currentRate);
_rOwned[to] = _rOwned[to].add(rAmount);
if (_isExcluded[to]) {
_tOwned[to] = _tOwned[to].add(tAmount);
}
if (to != address(this)) {
emit Transfer(from, to, tAmount);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"cOwner","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"_liquidityFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellPercentageOfLiquidityForCashback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cashbackPercent","type":"uint256"}],"name":"setCashbackPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"e","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minTokenBalance","type":"uint256"}],"name":"setMinTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"p","type":"address"}],"name":"setUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"r","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawBnb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
0x60806040526c01431e0fae6d7217caa0000000600a55600a54600019620000279190620007b7565b6000196200003691906200073e565b600b556000600d556000600e556000600f5560006010556000601155600060125560006013556000601455600060155560006016556002600a546200007c919062000706565b6017556107d0600a5462000091919062000706565b6018556001601960006101000a81548160ff021916908315150217905550348015620000bc57600080fd5b5060405162006841380380620068418339818101604052810190620000e2919062000653565b81806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000731b02da8cb0d097eb8d57a175b88c7d8b4799750690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026657600080fd5b505afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000621565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030457600080fd5b505afa15801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f919062000621565b6040518363ffffffff1660e01b81526004016200035e929190620006bc565b602060405180830381600087803b1580156200037957600080fd5b505af11580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b4919062000621565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200044b620005e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620005d09190620006e9565b60405180910390a35050506200086c565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200061b8162000852565b92915050565b6000602082840312156200063a57620006396200084d565b5b60006200064a848285016200060a565b91505092915050565b600080604083850312156200066d576200066c6200084d565b5b60006200067d858286016200060a565b925050602062000690858286016200060a565b9150509250929050565b620006a58162000779565b82525050565b620006b681620007ad565b82525050565b6000604082019050620006d360008301856200069a565b620006e260208301846200069a565b9392505050565b6000602082019050620007006000830184620006ab565b92915050565b60006200071382620007ad565b91506200072083620007ad565b9250826200073357620007326200081e565b5b828204905092915050565b60006200074b82620007ad565b91506200075883620007ad565b9250828210156200076e576200076d620007ef565b5b828203905092915050565b600062000786826200078d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620007c482620007ad565b9150620007d183620007ad565b925082620007e457620007e36200081e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6200085d8162000779565b81146200086957600080fd5b50565b615fc5806200087c6000396000f3fe60806040526004361061031e5760003560e01c806388f82020116101ab578063bea9849e116100f7578063d8d89bc611610095578063e7c892321161006f578063e7c8923214610be7578063eeeb66b614610c10578063f2fde38b14610c39578063f773268914610c6257610325565b8063d8d89bc614610b56578063dd46706414610b81578063dd62ed3e14610baa57610325565b8063d4c70c8d116100d1578063d4c70c8d14610aae578063d543dbeb14610ad9578063d5aed6bf14610b02578063d7d31f5f14610b2b57610325565b8063bea9849e14610a31578063c49b9a8014610a5a578063cbecede014610a8357610325565b80639c74daf011610164578063a457c2d71161013e578063a457c2d714610977578063a69df4b5146109b4578063a9059cbb146109cb578063b0ac157114610a0857610325565b80639c74daf0146108f85780639e281a98146109235780639e3a94091461094c57610325565b806388f82020146107e457806389c6d350146108215780638d8bf5761461084c5780638da5cb5b1461087757806395d89b41146108a2578063962dfc75146108cd57610325565b8063459c979b1161026a578063602bc62b1161022357806370a08231116101fd57806370a082311461073a578063715018a6146107775780637921199f1461078e5780637d1db4a5146107b957610325565b8063602bc62b146106bb5780636612e66f146106e6578063706acf1e1461070f57610325565b8063459c979b146105ad57806352390c02146105d65780635342acb4146105ff578063565836e71461063c578063583e0568146106675780635d098b381461069257610325565b806325519cf2116102d75780633685d419116102b15780633685d419146104df5780633950935114610508578063429f1add146105455780634549b0391461057057610325565b806325519cf21461044e5780632d83811914610477578063313ce567146104b457610325565b806306fdde031461032a578063095ea7b31461035557806313114a9d1461039257806318160ddd146103bd5780631d865c30146103e857806323b872dd1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c8d565b60405161034c91906154df565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190614f32565b610cc6565b60405161038991906154a9565b60405180910390f35b34801561039e57600080fd5b506103a7610ce4565b6040516103b491906156e1565b60405180910390f35b3480156103c957600080fd5b506103d2610cee565b6040516103df91906156e1565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190615039565b610cf8565b005b34801561041d57600080fd5b5061043860048036038101906104339190614e9f565b610da7565b60405161044591906154a9565b60405180910390f35b34801561045a57600080fd5b5061047560048036038101906104709190615039565b610e80565b005b34801561048357600080fd5b5061049e60048036038101906104999190614fcc565b610f2f565b6040516104ab91906156e1565b60405180910390f35b3480156104c057600080fd5b506104c9610f9d565b6040516104d6919061578d565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190614e05565b610fa2565b005b34801561051457600080fd5b5061052f600480360381019061052a9190614f32565b6112f1565b60405161053c91906154a9565b60405180910390f35b34801561055157600080fd5b5061055a6113a4565b60405161056791906156e1565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190614ff9565b6113aa565b6040516105a491906156e1565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190614fcc565b61147a565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190614e05565b611560565b005b34801561060b57600080fd5b5061062660048036038101906106219190614e05565b611814565b60405161063391906154a9565b60405180910390f35b34801561064857600080fd5b5061065161186a565b60405161065e91906156e1565b60405180910390f35b34801561067357600080fd5b5061067c611870565b60405161068991906154c4565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190614e05565b611896565b005b3480156106c757600080fd5b506106d061196f565b6040516106dd91906156e1565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190614ef2565b611979565b005b34801561071b57600080fd5b50610724611a69565b60405161073191906156e1565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190614e05565b611a6f565b60405161076e91906156e1565b60405180910390f35b34801561078357600080fd5b5061078c611b5a565b005b34801561079a57600080fd5b506107a3611cad565b6040516107b091906156e1565b60405180910390f35b3480156107c557600080fd5b506107ce611cb3565b6040516107db91906156e1565b60405180910390f35b3480156107f057600080fd5b5061080b60048036038101906108069190614e05565b611cb9565b60405161081891906154a9565b60405180910390f35b34801561082d57600080fd5b50610836611d0f565b60405161084391906156e1565b60405180910390f35b34801561085857600080fd5b50610861611d15565b60405161086e91906156e1565b60405180910390f35b34801561088357600080fd5b5061088c611d1b565b6040516108999190615404565b60405180910390f35b3480156108ae57600080fd5b506108b7611d44565b6040516108c491906154df565b60405180910390f35b3480156108d957600080fd5b506108e2611d7d565b6040516108ef9190615404565b60405180910390f35b34801561090457600080fd5b5061090d611da3565b60405161091a9190615404565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190614f32565b611dc9565b005b34801561095857600080fd5b50610961611ef7565b60405161096e91906156e1565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614f32565b611efd565b6040516109ab91906154a9565b60405180910390f35b3480156109c057600080fd5b506109c9611fca565b005b3480156109d757600080fd5b506109f260048036038101906109ed9190614f32565b61219e565b6040516109ff91906154a9565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a9190614fcc565b6121bc565b005b348015610a3d57600080fd5b50610a586004803603810190610a539190614e05565b61225b565b005b348015610a6657600080fd5b50610a816004803603810190610a7c9190614f72565b61233a565b005b348015610a8f57600080fd5b50610a98612423565b604051610aa591906154a9565b60405180910390f35b348015610aba57600080fd5b50610ac3612436565b604051610ad091906156e1565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190614fcc565b61243c565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190614e05565b612502565b005b348015610b3757600080fd5b50610b406125db565b604051610b4d91906156e1565b60405180910390f35b348015610b6257600080fd5b50610b6b6125e1565b604051610b7891906156e1565b60405180910390f35b348015610b8d57600080fd5b50610ba86004803603810190610ba39190614fcc565b6125e7565b005b348015610bb657600080fd5b50610bd16004803603810190610bcc9190614e5f565b6127ae565b604051610bde91906156e1565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190615039565b612835565b005b348015610c1c57600080fd5b50610c376004803603810190610c329190614fcc565b6128e4565b005b348015610c4557600080fd5b50610c606004803603810190610c5b9190614e05565b612983565b005b348015610c6e57600080fd5b50610c77612b45565b604051610c8491906156e1565b60405180910390f35b6040518060400160405280600681526020017f4d5250455045000000000000000000000000000000000000000000000000000081525081565b6000610cda610cd3612b4b565b8484612b53565b6001905092915050565b6000600c54905090565b6000600a54905090565b610d00612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490615641565b60405180910390fd5b826013819055508160148190555080601581905550505050565b6000610db4848484612d1e565b610e7584610dc0612b4b565b610e7085604051806060016040528060288152602001615f4360289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e26612b4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308d9092919063ffffffff16565b612b53565b600190509392505050565b610e88612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c90615641565b60405180910390fd5b826010819055508160118190555080601281905550505050565b6000600b54821115610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90615561565b60405180910390fd5b6000610f806130f1565b9050610f95818461311c90919063ffffffff16565b915050919050565b601281565b610faa612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90615641565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba906155c1565b60405180910390fd5b60005b6008805490508110156112ed578173ffffffffffffffffffffffffffffffffffffffff16600882815481106110fe576110fd615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112da576008600160088054905061115991906158de565b8154811061116a57611169615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106111a9576111a8615aa6565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806112a05761129f615a77565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556112ed565b80806112e5906159d0565b9150506110c6565b5050565b600061139a6112fe612b4b565b84611395856007600061130f612b4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b612b53565b6001905092915050565b60125481565b6000600a548311156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e8906155e1565b60405180910390fd5b81611437576000806000611404866131c4565b9350935093505060006114156130f1565b9050600061142688868686866132a9565b505090508095505050505050611474565b6000806000611445866131c4565b9350935093505060006114566130f1565b9050600061146788868686866132a9565b5091505080955050505050505b92915050565b611482612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690615641565b60405180910390fd5b611517611d1b565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561155c573d6000803e3d6000fd5b5050565b611568612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec90615641565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611679906155c1565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561175657611712600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189e612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192290615641565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b611981612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590615641565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b0a57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b55565b611b52600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2f565b90505b919050565b611b62612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be690615641565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60135481565b60175481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600681526020017f4d5250455045000000000000000000000000000000000000000000000000000081525081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dd1612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590615641565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611e82611d1b565b836040518363ffffffff1660e01b8152600401611ea092919061541f565b602060405180830381600087803b158015611eba57600080fd5b505af1158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190614f9f565b505050565b60115481565b6000611fc0611f0a612b4b565b84611fbb85604051806060016040528060258152602001615f6b6025913960076000611f34612b4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308d9092919063ffffffff16565b612b53565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612051906156c1565b60405180910390fd5b600254421161209e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209590615521565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121b26121ab612b4b565b8484612d1e565b6001905092915050565b6121c4612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890615641565b60405180910390fd5b8060188190555050565b612263612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e790615641565b60405180910390fd5b600081905080601960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b612342612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c690615641565b60405180910390fd5b80601960006101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161241891906154a9565b60405180910390a150565b601960009054906101000a900460ff1681565b60105481565b612444612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c890615641565b60405180910390fd5b6124f960646124eb83600a5461336390919063ffffffff16565b61311c90919063ffffffff16565b60178190555050565b61250a612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e90615641565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60185481565b6125ef612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461267c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267390615641565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804261272a91906157fd565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61283d612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190615641565b60405180910390fd5b82600d8190555081600e8190555080600f81905550505050565b6128ec612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297090615641565b60405180910390fd5b8060168190555050565b61298b612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0f90615641565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7f90615581565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90615541565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a906156a1565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d1191906156e1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590615501565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df590615681565b60405180910390fd5b60008111612e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3890615661565b60405180910390fd5b612e49611d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eb75750612e87611d1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f0257601754811115612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef890615601565b60405180910390fd5b5b6000612f0d30611a6f565b90506017548110612f1e5760175490505b60006018548210159050808015612f425750601960019054906101000a900460ff16155b8015612f9c5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb45750601960009054906101000a900460ff165b15612fc8576018549150612fc7826133de565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061306f5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561307957600090505b613085868686846134f9565b505050505050565b60008383111582906130d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cc91906154df565b60405180910390fd5b50600083856130e491906158de565b9050809150509392505050565b60008060006130fe6139a5565b91509150613115818361311c90919063ffffffff16565b9250505090565b600061315e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c58565b905092915050565b600080828461317591906157fd565b9050838110156131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b1906155a1565b60405180910390fd5b8091505092915050565b60008060008060006131f56127106131e7600d548961336390919063ffffffff16565b61311c90919063ffffffff16565b90506000613222612710613214600e548a61336390919063ffffffff16565b61311c90919063ffffffff16565b9050600061324f612710613241600f548b61336390919063ffffffff16565b61311c90919063ffffffff16565b90506000613266848a613cbb90919063ffffffff16565b905061327b8382613cbb90919063ffffffff16565b90506132908282613cbb90919063ffffffff16565b9050808484849750975097509750505050509193509193565b6000806000806132c2858a61336390919063ffffffff16565b905060006132d9868a61336390919063ffffffff16565b905060006132f0878a61336390919063ffffffff16565b90506000613307888a61336390919063ffffffff16565b9050600061331e8486613cbb90919063ffffffff16565b90506133338382613cbb90919063ffffffff16565b90506133488282613cbb90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b60008083141561337657600090506133d8565b600082846133849190615884565b90508284826133939190615853565b146133d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ca90615621565b60405180910390fd5b809150505b92915050565b6001601960016101000a81548160ff021916908315150217905550600061340f60028361311c90919063ffffffff16565b905060006134268284613cbb90919063ffffffff16565b9050600047905061343683613d05565b600061344b8247613cbb90919063ffffffff16565b9050600061347760646134696016548561336390919063ffffffff16565b61311c90919063ffffffff16565b9050600061348e8284613cbb90919063ffffffff16565b905061349a8582613f57565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682876040516134cd93929190615756565b60405180910390a15050505050506000601960016101000a81548160ff02191690831515021790555050565b6000600d5490506000600e5490506000600f5490506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156135bb5750601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b90506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614905085613634576000600d819055506000600e819055506000600f8190555061367e565b811561365a57601054600d81905550601154600e81905550601254600f8190555061367d565b801561367c57601354600d81905550601454600e81905550601554600f819055505b5b5b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137215750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137365761373189898961404b565b61396d565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137d95750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137ee576137e98989896142fb565b61396c565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138925750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138a7576138a28989896145ab565b61396b565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139495750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561395e576139598989896147c6565b61396a565b6139698989896145ab565b5b5b5b5b8515806139775750815b8061397f5750805b1561399a5784600d8190555083600e8190555082600f819055505b505050505050505050565b6000806000600b5490506000600a54905060005b600880549050811015613c1b578260036000600884815481106139df576139de615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613acd5750816004600060088481548110613a6557613a64615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613ae457600b54600a5494509450505050613c54565b613b746003600060088481548110613aff57613afe615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613cbb90919063ffffffff16565b9250613c066004600060088481548110613b9157613b90615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613cbb90919063ffffffff16565b91508080613c13906159d0565b9150506139b9565b50613c33600a54600b5461311c90919063ffffffff16565b821015613c4b57600b54600a54935093505050613c54565b81819350935050505b9091565b60008083118290613c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c9691906154df565b60405180910390fd5b5060008385613cae9190615853565b9050809150509392505050565b6000613cfd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061308d565b905092915050565b6000600267ffffffffffffffff811115613d2257613d21615ad5565b5b604051908082528060200260200182016040528015613d505781602001602082028036833780820191505090505b5090503081600081518110613d6857613d67615aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0a57600080fd5b505afa158015613e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e429190614e32565b81600181518110613e5657613e55615aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ebd30601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b53565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f219594939291906156fc565b600060405180830381600087803b158015613f3b57600080fd5b505af1158015613f4f573d6000803e3d6000fd5b505050505050565b613f8430601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b53565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613fd0611d1b565b426040518863ffffffff1660e01b8152600401613ff296959493929190615448565b6060604051808303818588803b15801561400b57600080fd5b505af115801561401f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614044919061508c565b5050505050565b60008060008061405a856131c4565b9350935093509350600061406c6130f1565b9050600080600061408089888888886132a9565b9250925092506140d889600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061416d83600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061420282600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142518b308887614b0b565b61427f8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b6142898188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516142e691906156e1565b60405180910390a35050505050505050505050565b60008060008061430a856131c4565b9350935093509350600061431c6130f1565b9050600080600061433089888888886132a9565b92509250925061438883600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061441d88600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144b282600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145018b308887614b0b565b61452f8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b6145398188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405161459691906156e1565b60405180910390a35050505050505050505050565b6000806000806145ba856131c4565b935093509350935060006145cc6130f1565b905060008060006145e089888888886132a9565b92509250925061463883600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146cd82600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061471c8b308887614b0b565b61474a8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b6147548188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516147b191906156e1565b60405180910390a35050505050505050505050565b6000806000806147d5856131c4565b935093509350935060006147e76130f1565b905060008060006147fb89888888886132a9565b92509250925061485389600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e883600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061497d88600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1282600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a618b308887614b0b565b614a8f8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b614a998188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051614af691906156e1565b60405180910390a35050505050505050505050565b60008211614b1857614d47565b6000614b2d828461336390919063ffffffff16565b9050614b8181600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614cac57614c6883600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614614d45578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614d3c91906156e1565b60405180910390a35b505b50505050565b614d6282600b54613cbb90919063ffffffff16565b600b81905550614d7d81600c5461316690919063ffffffff16565b600c819055505050565b600081359050614d9681615efd565b92915050565b600081519050614dab81615efd565b92915050565b600081359050614dc081615f14565b92915050565b600081519050614dd581615f14565b92915050565b600081359050614dea81615f2b565b92915050565b600081519050614dff81615f2b565b92915050565b600060208284031215614e1b57614e1a615b04565b5b6000614e2984828501614d87565b91505092915050565b600060208284031215614e4857614e47615b04565b5b6000614e5684828501614d9c565b91505092915050565b60008060408385031215614e7657614e75615b04565b5b6000614e8485828601614d87565b9250506020614e9585828601614d87565b9150509250929050565b600080600060608486031215614eb857614eb7615b04565b5b6000614ec686828701614d87565b9350506020614ed786828701614d87565b9250506040614ee886828701614ddb565b9150509250925092565b60008060408385031215614f0957614f08615b04565b5b6000614f1785828601614d87565b9250506020614f2885828601614db1565b9150509250929050565b60008060408385031215614f4957614f48615b04565b5b6000614f5785828601614d87565b9250506020614f6885828601614ddb565b9150509250929050565b600060208284031215614f8857614f87615b04565b5b6000614f9684828501614db1565b91505092915050565b600060208284031215614fb557614fb4615b04565b5b6000614fc384828501614dc6565b91505092915050565b600060208284031215614fe257614fe1615b04565b5b6000614ff084828501614ddb565b91505092915050565b600080604083850312156150105761500f615b04565b5b600061501e85828601614ddb565b925050602061502f85828601614db1565b9150509250929050565b60008060006060848603121561505257615051615b04565b5b600061506086828701614ddb565b935050602061507186828701614ddb565b925050604061508286828701614ddb565b9150509250925092565b6000806000606084860312156150a5576150a4615b04565b5b60006150b386828701614df0565b93505060206150c486828701614df0565b92505060406150d586828701614df0565b9150509250925092565b60006150eb83836150f7565b60208301905092915050565b61510081615912565b82525050565b61510f81615912565b82525050565b6000615120826157b8565b61512a81856157db565b9350615135836157a8565b8060005b8381101561516657815161514d88826150df565b9750615158836157ce565b925050600181019050615139565b5085935050505092915050565b61517c81615924565b82525050565b61518b81615967565b82525050565b61519a8161598b565b82525050565b60006151ab826157c3565b6151b581856157ec565b93506151c581856020860161599d565b6151ce81615b09565b840191505092915050565b60006151e66025836157ec565b91506151f182615b1a565b604082019050919050565b60006152096018836157ec565b915061521482615b69565b602082019050919050565b600061522c6024836157ec565b915061523782615b92565b604082019050919050565b600061524f602a836157ec565b915061525a82615be1565b604082019050919050565b60006152726026836157ec565b915061527d82615c30565b604082019050919050565b6000615295601b836157ec565b91506152a082615c7f565b602082019050919050565b60006152b8601b836157ec565b91506152c382615ca8565b602082019050919050565b60006152db601f836157ec565b91506152e682615cd1565b602082019050919050565b60006152fe6028836157ec565b915061530982615cfa565b604082019050919050565b60006153216021836157ec565b915061532c82615d49565b604082019050919050565b60006153446020836157ec565b915061534f82615d98565b602082019050919050565b60006153676029836157ec565b915061537282615dc1565b604082019050919050565b600061538a6023836157ec565b915061539582615e10565b604082019050919050565b60006153ad6022836157ec565b91506153b882615e5f565b604082019050919050565b60006153d06023836157ec565b91506153db82615eae565b604082019050919050565b6153ef81615950565b82525050565b6153fe8161595a565b82525050565b60006020820190506154196000830184615106565b92915050565b60006040820190506154346000830185615106565b61544160208301846153e6565b9392505050565b600060c08201905061545d6000830189615106565b61546a60208301886153e6565b6154776040830187615191565b6154846060830186615191565b6154916080830185615106565b61549e60a08301846153e6565b979650505050505050565b60006020820190506154be6000830184615173565b92915050565b60006020820190506154d96000830184615182565b92915050565b600060208201905081810360008301526154f981846151a0565b905092915050565b6000602082019050818103600083015261551a816151d9565b9050919050565b6000602082019050818103600083015261553a816151fc565b9050919050565b6000602082019050818103600083015261555a8161521f565b9050919050565b6000602082019050818103600083015261557a81615242565b9050919050565b6000602082019050818103600083015261559a81615265565b9050919050565b600060208201905081810360008301526155ba81615288565b9050919050565b600060208201905081810360008301526155da816152ab565b9050919050565b600060208201905081810360008301526155fa816152ce565b9050919050565b6000602082019050818103600083015261561a816152f1565b9050919050565b6000602082019050818103600083015261563a81615314565b9050919050565b6000602082019050818103600083015261565a81615337565b9050919050565b6000602082019050818103600083015261567a8161535a565b9050919050565b6000602082019050818103600083015261569a8161537d565b9050919050565b600060208201905081810360008301526156ba816153a0565b9050919050565b600060208201905081810360008301526156da816153c3565b9050919050565b60006020820190506156f660008301846153e6565b92915050565b600060a08201905061571160008301886153e6565b61571e6020830187615191565b81810360408301526157308186615115565b905061573f6060830185615106565b61574c60808301846153e6565b9695505050505050565b600060608201905061576b60008301866153e6565b61577860208301856153e6565b61578560408301846153e6565b949350505050565b60006020820190506157a260008301846153f5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061580882615950565b915061581383615950565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561584857615847615a19565b5b828201905092915050565b600061585e82615950565b915061586983615950565b92508261587957615878615a48565b5b828204905092915050565b600061588f82615950565b915061589a83615950565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156158d3576158d2615a19565b5b828202905092915050565b60006158e982615950565b91506158f483615950565b92508282101561590757615906615a19565b5b828203905092915050565b600061591d82615930565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061597282615979565b9050919050565b600061598482615930565b9050919050565b600061599682615950565b9050919050565b60005b838110156159bb5780820151818401526020810190506159a0565b838111156159ca576000848401525b50505050565b60006159db82615950565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615a0e57615a0d615a19565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973207374696c6c206c6f636b65640000000000000000600082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b615f0681615912565b8114615f1157600080fd5b50565b615f1d81615924565b8114615f2857600080fd5b50565b615f3481615950565b8114615f3f57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205cb53879d6bf0cfef574fada38bf25310b4cf22b538fd10a47bdb3f05e82d8b164736f6c63430008050033000000000000000000000000352b19f5dbabf4fc1d465e5ad0ed6b230cfe12f0000000000000000000000000352b19f5dbabf4fc1d465e5ad0ed6b230cfe12f0
Deployed Bytecode
0x60806040526004361061031e5760003560e01c806388f82020116101ab578063bea9849e116100f7578063d8d89bc611610095578063e7c892321161006f578063e7c8923214610be7578063eeeb66b614610c10578063f2fde38b14610c39578063f773268914610c6257610325565b8063d8d89bc614610b56578063dd46706414610b81578063dd62ed3e14610baa57610325565b8063d4c70c8d116100d1578063d4c70c8d14610aae578063d543dbeb14610ad9578063d5aed6bf14610b02578063d7d31f5f14610b2b57610325565b8063bea9849e14610a31578063c49b9a8014610a5a578063cbecede014610a8357610325565b80639c74daf011610164578063a457c2d71161013e578063a457c2d714610977578063a69df4b5146109b4578063a9059cbb146109cb578063b0ac157114610a0857610325565b80639c74daf0146108f85780639e281a98146109235780639e3a94091461094c57610325565b806388f82020146107e457806389c6d350146108215780638d8bf5761461084c5780638da5cb5b1461087757806395d89b41146108a2578063962dfc75146108cd57610325565b8063459c979b1161026a578063602bc62b1161022357806370a08231116101fd57806370a082311461073a578063715018a6146107775780637921199f1461078e5780637d1db4a5146107b957610325565b8063602bc62b146106bb5780636612e66f146106e6578063706acf1e1461070f57610325565b8063459c979b146105ad57806352390c02146105d65780635342acb4146105ff578063565836e71461063c578063583e0568146106675780635d098b381461069257610325565b806325519cf2116102d75780633685d419116102b15780633685d419146104df5780633950935114610508578063429f1add146105455780634549b0391461057057610325565b806325519cf21461044e5780632d83811914610477578063313ce567146104b457610325565b806306fdde031461032a578063095ea7b31461035557806313114a9d1461039257806318160ddd146103bd5780631d865c30146103e857806323b872dd1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c8d565b60405161034c91906154df565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190614f32565b610cc6565b60405161038991906154a9565b60405180910390f35b34801561039e57600080fd5b506103a7610ce4565b6040516103b491906156e1565b60405180910390f35b3480156103c957600080fd5b506103d2610cee565b6040516103df91906156e1565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190615039565b610cf8565b005b34801561041d57600080fd5b5061043860048036038101906104339190614e9f565b610da7565b60405161044591906154a9565b60405180910390f35b34801561045a57600080fd5b5061047560048036038101906104709190615039565b610e80565b005b34801561048357600080fd5b5061049e60048036038101906104999190614fcc565b610f2f565b6040516104ab91906156e1565b60405180910390f35b3480156104c057600080fd5b506104c9610f9d565b6040516104d6919061578d565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190614e05565b610fa2565b005b34801561051457600080fd5b5061052f600480360381019061052a9190614f32565b6112f1565b60405161053c91906154a9565b60405180910390f35b34801561055157600080fd5b5061055a6113a4565b60405161056791906156e1565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190614ff9565b6113aa565b6040516105a491906156e1565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190614fcc565b61147a565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190614e05565b611560565b005b34801561060b57600080fd5b5061062660048036038101906106219190614e05565b611814565b60405161063391906154a9565b60405180910390f35b34801561064857600080fd5b5061065161186a565b60405161065e91906156e1565b60405180910390f35b34801561067357600080fd5b5061067c611870565b60405161068991906154c4565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190614e05565b611896565b005b3480156106c757600080fd5b506106d061196f565b6040516106dd91906156e1565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190614ef2565b611979565b005b34801561071b57600080fd5b50610724611a69565b60405161073191906156e1565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190614e05565b611a6f565b60405161076e91906156e1565b60405180910390f35b34801561078357600080fd5b5061078c611b5a565b005b34801561079a57600080fd5b506107a3611cad565b6040516107b091906156e1565b60405180910390f35b3480156107c557600080fd5b506107ce611cb3565b6040516107db91906156e1565b60405180910390f35b3480156107f057600080fd5b5061080b60048036038101906108069190614e05565b611cb9565b60405161081891906154a9565b60405180910390f35b34801561082d57600080fd5b50610836611d0f565b60405161084391906156e1565b60405180910390f35b34801561085857600080fd5b50610861611d15565b60405161086e91906156e1565b60405180910390f35b34801561088357600080fd5b5061088c611d1b565b6040516108999190615404565b60405180910390f35b3480156108ae57600080fd5b506108b7611d44565b6040516108c491906154df565b60405180910390f35b3480156108d957600080fd5b506108e2611d7d565b6040516108ef9190615404565b60405180910390f35b34801561090457600080fd5b5061090d611da3565b60405161091a9190615404565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190614f32565b611dc9565b005b34801561095857600080fd5b50610961611ef7565b60405161096e91906156e1565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614f32565b611efd565b6040516109ab91906154a9565b60405180910390f35b3480156109c057600080fd5b506109c9611fca565b005b3480156109d757600080fd5b506109f260048036038101906109ed9190614f32565b61219e565b6040516109ff91906154a9565b60405180910390f35b348015610a1457600080fd5b50610a2f6004803603810190610a2a9190614fcc565b6121bc565b005b348015610a3d57600080fd5b50610a586004803603810190610a539190614e05565b61225b565b005b348015610a6657600080fd5b50610a816004803603810190610a7c9190614f72565b61233a565b005b348015610a8f57600080fd5b50610a98612423565b604051610aa591906154a9565b60405180910390f35b348015610aba57600080fd5b50610ac3612436565b604051610ad091906156e1565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb9190614fcc565b61243c565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190614e05565b612502565b005b348015610b3757600080fd5b50610b406125db565b604051610b4d91906156e1565b60405180910390f35b348015610b6257600080fd5b50610b6b6125e1565b604051610b7891906156e1565b60405180910390f35b348015610b8d57600080fd5b50610ba86004803603810190610ba39190614fcc565b6125e7565b005b348015610bb657600080fd5b50610bd16004803603810190610bcc9190614e5f565b6127ae565b604051610bde91906156e1565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190615039565b612835565b005b348015610c1c57600080fd5b50610c376004803603810190610c329190614fcc565b6128e4565b005b348015610c4557600080fd5b50610c606004803603810190610c5b9190614e05565b612983565b005b348015610c6e57600080fd5b50610c77612b45565b604051610c8491906156e1565b60405180910390f35b6040518060400160405280600681526020017f4d5250455045000000000000000000000000000000000000000000000000000081525081565b6000610cda610cd3612b4b565b8484612b53565b6001905092915050565b6000600c54905090565b6000600a54905090565b610d00612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490615641565b60405180910390fd5b826013819055508160148190555080601581905550505050565b6000610db4848484612d1e565b610e7584610dc0612b4b565b610e7085604051806060016040528060288152602001615f4360289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e26612b4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308d9092919063ffffffff16565b612b53565b600190509392505050565b610e88612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c90615641565b60405180910390fd5b826010819055508160118190555080601281905550505050565b6000600b54821115610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90615561565b60405180910390fd5b6000610f806130f1565b9050610f95818461311c90919063ffffffff16565b915050919050565b601281565b610faa612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90615641565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba906155c1565b60405180910390fd5b60005b6008805490508110156112ed578173ffffffffffffffffffffffffffffffffffffffff16600882815481106110fe576110fd615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112da576008600160088054905061115991906158de565b8154811061116a57611169615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106111a9576111a8615aa6565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806112a05761129f615a77565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556112ed565b80806112e5906159d0565b9150506110c6565b5050565b600061139a6112fe612b4b565b84611395856007600061130f612b4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b612b53565b6001905092915050565b60125481565b6000600a548311156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e8906155e1565b60405180910390fd5b81611437576000806000611404866131c4565b9350935093505060006114156130f1565b9050600061142688868686866132a9565b505090508095505050505050611474565b6000806000611445866131c4565b9350935093505060006114566130f1565b9050600061146788868686866132a9565b5091505080955050505050505b92915050565b611482612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690615641565b60405180910390fd5b611517611d1b565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561155c573d6000803e3d6000fd5b5050565b611568612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec90615641565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611679906155c1565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561175657611712600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189e612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192290615641565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600254905090565b611981612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590615641565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b0a57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b55565b611b52600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2f565b90505b919050565b611b62612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be690615641565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60135481565b60175481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600681526020017f4d5250455045000000000000000000000000000000000000000000000000000081525081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dd1612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5590615641565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611e82611d1b565b836040518363ffffffff1660e01b8152600401611ea092919061541f565b602060405180830381600087803b158015611eba57600080fd5b505af1158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190614f9f565b505050565b60115481565b6000611fc0611f0a612b4b565b84611fbb85604051806060016040528060258152602001615f6b6025913960076000611f34612b4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308d9092919063ffffffff16565b612b53565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612051906156c1565b60405180910390fd5b600254421161209e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209590615521565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121b26121ab612b4b565b8484612d1e565b6001905092915050565b6121c4612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890615641565b60405180910390fd5b8060188190555050565b612263612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e790615641565b60405180910390fd5b600081905080601960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b612342612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c690615641565b60405180910390fd5b80601960006101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161241891906154a9565b60405180910390a150565b601960009054906101000a900460ff1681565b60105481565b612444612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c890615641565b60405180910390fd5b6124f960646124eb83600a5461336390919063ffffffff16565b61311c90919063ffffffff16565b60178190555050565b61250a612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e90615641565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60185481565b6125ef612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461267c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267390615641565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804261272a91906157fd565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61283d612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190615641565b60405180910390fd5b82600d8190555081600e8190555080600f81905550505050565b6128ec612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297090615641565b60405180910390fd5b8060168190555050565b61298b612b4b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0f90615641565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7f90615581565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90615541565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a906156a1565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d1191906156e1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8590615501565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df590615681565b60405180910390fd5b60008111612e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3890615661565b60405180910390fd5b612e49611d1b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eb75750612e87611d1b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f0257601754811115612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef890615601565b60405180910390fd5b5b6000612f0d30611a6f565b90506017548110612f1e5760175490505b60006018548210159050808015612f425750601960019054906101000a900460ff16155b8015612f9c5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb45750601960009054906101000a900460ff165b15612fc8576018549150612fc7826133de565b5b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061306f5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561307957600090505b613085868686846134f9565b505050505050565b60008383111582906130d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cc91906154df565b60405180910390fd5b50600083856130e491906158de565b9050809150509392505050565b60008060006130fe6139a5565b91509150613115818361311c90919063ffffffff16565b9250505090565b600061315e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c58565b905092915050565b600080828461317591906157fd565b9050838110156131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b1906155a1565b60405180910390fd5b8091505092915050565b60008060008060006131f56127106131e7600d548961336390919063ffffffff16565b61311c90919063ffffffff16565b90506000613222612710613214600e548a61336390919063ffffffff16565b61311c90919063ffffffff16565b9050600061324f612710613241600f548b61336390919063ffffffff16565b61311c90919063ffffffff16565b90506000613266848a613cbb90919063ffffffff16565b905061327b8382613cbb90919063ffffffff16565b90506132908282613cbb90919063ffffffff16565b9050808484849750975097509750505050509193509193565b6000806000806132c2858a61336390919063ffffffff16565b905060006132d9868a61336390919063ffffffff16565b905060006132f0878a61336390919063ffffffff16565b90506000613307888a61336390919063ffffffff16565b9050600061331e8486613cbb90919063ffffffff16565b90506133338382613cbb90919063ffffffff16565b90506133488282613cbb90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b60008083141561337657600090506133d8565b600082846133849190615884565b90508284826133939190615853565b146133d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ca90615621565b60405180910390fd5b809150505b92915050565b6001601960016101000a81548160ff021916908315150217905550600061340f60028361311c90919063ffffffff16565b905060006134268284613cbb90919063ffffffff16565b9050600047905061343683613d05565b600061344b8247613cbb90919063ffffffff16565b9050600061347760646134696016548561336390919063ffffffff16565b61311c90919063ffffffff16565b9050600061348e8284613cbb90919063ffffffff16565b905061349a8582613f57565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682876040516134cd93929190615756565b60405180910390a15050505050506000601960016101000a81548160ff02191690831515021790555050565b6000600d5490506000600e5490506000600f5490506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156135bb5750601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b90506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614905085613634576000600d819055506000600e819055506000600f8190555061367e565b811561365a57601054600d81905550601154600e81905550601254600f8190555061367d565b801561367c57601354600d81905550601454600e81905550601554600f819055505b5b5b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137215750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137365761373189898961404b565b61396d565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137d95750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137ee576137e98989896142fb565b61396c565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138925750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138a7576138a28989896145ab565b61396b565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139495750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561395e576139598989896147c6565b61396a565b6139698989896145ab565b5b5b5b5b8515806139775750815b8061397f5750805b1561399a5784600d8190555083600e8190555082600f819055505b505050505050505050565b6000806000600b5490506000600a54905060005b600880549050811015613c1b578260036000600884815481106139df576139de615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613acd5750816004600060088481548110613a6557613a64615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613ae457600b54600a5494509450505050613c54565b613b746003600060088481548110613aff57613afe615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613cbb90919063ffffffff16565b9250613c066004600060088481548110613b9157613b90615aa6565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613cbb90919063ffffffff16565b91508080613c13906159d0565b9150506139b9565b50613c33600a54600b5461311c90919063ffffffff16565b821015613c4b57600b54600a54935093505050613c54565b81819350935050505b9091565b60008083118290613c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c9691906154df565b60405180910390fd5b5060008385613cae9190615853565b9050809150509392505050565b6000613cfd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061308d565b905092915050565b6000600267ffffffffffffffff811115613d2257613d21615ad5565b5b604051908082528060200260200182016040528015613d505781602001602082028036833780820191505090505b5090503081600081518110613d6857613d67615aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0a57600080fd5b505afa158015613e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e429190614e32565b81600181518110613e5657613e55615aa6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ebd30601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b53565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f219594939291906156fc565b600060405180830381600087803b158015613f3b57600080fd5b505af1158015613f4f573d6000803e3d6000fd5b505050505050565b613f8430601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b53565b601960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613fd0611d1b565b426040518863ffffffff1660e01b8152600401613ff296959493929190615448565b6060604051808303818588803b15801561400b57600080fd5b505af115801561401f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614044919061508c565b5050505050565b60008060008061405a856131c4565b9350935093509350600061406c6130f1565b9050600080600061408089888888886132a9565b9250925092506140d889600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061416d83600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061420282600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142518b308887614b0b565b61427f8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b6142898188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516142e691906156e1565b60405180910390a35050505050505050505050565b60008060008061430a856131c4565b9350935093509350600061431c6130f1565b9050600080600061433089888888886132a9565b92509250925061438883600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061441d88600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144b282600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145018b308887614b0b565b61452f8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b6145398188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405161459691906156e1565b60405180910390a35050505050505050505050565b6000806000806145ba856131c4565b935093509350935060006145cc6130f1565b905060008060006145e089888888886132a9565b92509250925061463883600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146cd82600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061471c8b308887614b0b565b61474a8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b6147548188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516147b191906156e1565b60405180910390a35050505050505050505050565b6000806000806147d5856131c4565b935093509350935060006147e76130f1565b905060008060006147fb89888888886132a9565b92509250925061485389600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e883600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cbb90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061497d88600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a1282600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a618b308887614b0b565b614a8f8b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168787614b0b565b614a998188614d4d565b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051614af691906156e1565b60405180910390a35050505050505050505050565b60008211614b1857614d47565b6000614b2d828461336390919063ffffffff16565b9050614b8181600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614cac57614c6883600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614614d45578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614d3c91906156e1565b60405180910390a35b505b50505050565b614d6282600b54613cbb90919063ffffffff16565b600b81905550614d7d81600c5461316690919063ffffffff16565b600c819055505050565b600081359050614d9681615efd565b92915050565b600081519050614dab81615efd565b92915050565b600081359050614dc081615f14565b92915050565b600081519050614dd581615f14565b92915050565b600081359050614dea81615f2b565b92915050565b600081519050614dff81615f2b565b92915050565b600060208284031215614e1b57614e1a615b04565b5b6000614e2984828501614d87565b91505092915050565b600060208284031215614e4857614e47615b04565b5b6000614e5684828501614d9c565b91505092915050565b60008060408385031215614e7657614e75615b04565b5b6000614e8485828601614d87565b9250506020614e9585828601614d87565b9150509250929050565b600080600060608486031215614eb857614eb7615b04565b5b6000614ec686828701614d87565b9350506020614ed786828701614d87565b9250506040614ee886828701614ddb565b9150509250925092565b60008060408385031215614f0957614f08615b04565b5b6000614f1785828601614d87565b9250506020614f2885828601614db1565b9150509250929050565b60008060408385031215614f4957614f48615b04565b5b6000614f5785828601614d87565b9250506020614f6885828601614ddb565b9150509250929050565b600060208284031215614f8857614f87615b04565b5b6000614f9684828501614db1565b91505092915050565b600060208284031215614fb557614fb4615b04565b5b6000614fc384828501614dc6565b91505092915050565b600060208284031215614fe257614fe1615b04565b5b6000614ff084828501614ddb565b91505092915050565b600080604083850312156150105761500f615b04565b5b600061501e85828601614ddb565b925050602061502f85828601614db1565b9150509250929050565b60008060006060848603121561505257615051615b04565b5b600061506086828701614ddb565b935050602061507186828701614ddb565b925050604061508286828701614ddb565b9150509250925092565b6000806000606084860312156150a5576150a4615b04565b5b60006150b386828701614df0565b93505060206150c486828701614df0565b92505060406150d586828701614df0565b9150509250925092565b60006150eb83836150f7565b60208301905092915050565b61510081615912565b82525050565b61510f81615912565b82525050565b6000615120826157b8565b61512a81856157db565b9350615135836157a8565b8060005b8381101561516657815161514d88826150df565b9750615158836157ce565b925050600181019050615139565b5085935050505092915050565b61517c81615924565b82525050565b61518b81615967565b82525050565b61519a8161598b565b82525050565b60006151ab826157c3565b6151b581856157ec565b93506151c581856020860161599d565b6151ce81615b09565b840191505092915050565b60006151e66025836157ec565b91506151f182615b1a565b604082019050919050565b60006152096018836157ec565b915061521482615b69565b602082019050919050565b600061522c6024836157ec565b915061523782615b92565b604082019050919050565b600061524f602a836157ec565b915061525a82615be1565b604082019050919050565b60006152726026836157ec565b915061527d82615c30565b604082019050919050565b6000615295601b836157ec565b91506152a082615c7f565b602082019050919050565b60006152b8601b836157ec565b91506152c382615ca8565b602082019050919050565b60006152db601f836157ec565b91506152e682615cd1565b602082019050919050565b60006152fe6028836157ec565b915061530982615cfa565b604082019050919050565b60006153216021836157ec565b915061532c82615d49565b604082019050919050565b60006153446020836157ec565b915061534f82615d98565b602082019050919050565b60006153676029836157ec565b915061537282615dc1565b604082019050919050565b600061538a6023836157ec565b915061539582615e10565b604082019050919050565b60006153ad6022836157ec565b91506153b882615e5f565b604082019050919050565b60006153d06023836157ec565b91506153db82615eae565b604082019050919050565b6153ef81615950565b82525050565b6153fe8161595a565b82525050565b60006020820190506154196000830184615106565b92915050565b60006040820190506154346000830185615106565b61544160208301846153e6565b9392505050565b600060c08201905061545d6000830189615106565b61546a60208301886153e6565b6154776040830187615191565b6154846060830186615191565b6154916080830185615106565b61549e60a08301846153e6565b979650505050505050565b60006020820190506154be6000830184615173565b92915050565b60006020820190506154d96000830184615182565b92915050565b600060208201905081810360008301526154f981846151a0565b905092915050565b6000602082019050818103600083015261551a816151d9565b9050919050565b6000602082019050818103600083015261553a816151fc565b9050919050565b6000602082019050818103600083015261555a8161521f565b9050919050565b6000602082019050818103600083015261557a81615242565b9050919050565b6000602082019050818103600083015261559a81615265565b9050919050565b600060208201905081810360008301526155ba81615288565b9050919050565b600060208201905081810360008301526155da816152ab565b9050919050565b600060208201905081810360008301526155fa816152ce565b9050919050565b6000602082019050818103600083015261561a816152f1565b9050919050565b6000602082019050818103600083015261563a81615314565b9050919050565b6000602082019050818103600083015261565a81615337565b9050919050565b6000602082019050818103600083015261567a8161535a565b9050919050565b6000602082019050818103600083015261569a8161537d565b9050919050565b600060208201905081810360008301526156ba816153a0565b9050919050565b600060208201905081810360008301526156da816153c3565b9050919050565b60006020820190506156f660008301846153e6565b92915050565b600060a08201905061571160008301886153e6565b61571e6020830187615191565b81810360408301526157308186615115565b905061573f6060830185615106565b61574c60808301846153e6565b9695505050505050565b600060608201905061576b60008301866153e6565b61577860208301856153e6565b61578560408301846153e6565b949350505050565b60006020820190506157a260008301846153f5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061580882615950565b915061581383615950565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561584857615847615a19565b5b828201905092915050565b600061585e82615950565b915061586983615950565b92508261587957615878615a48565b5b828204905092915050565b600061588f82615950565b915061589a83615950565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156158d3576158d2615a19565b5b828202905092915050565b60006158e982615950565b91506158f483615950565b92508282101561590757615906615a19565b5b828203905092915050565b600061591d82615930565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061597282615979565b9050919050565b600061598482615930565b9050919050565b600061599682615950565b9050919050565b60005b838110156159bb5780820151818401526020810190506159a0565b838111156159ca576000848401525b50505050565b60006159db82615950565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615a0e57615a0d615a19565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973207374696c6c206c6f636b65640000000000000000600082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b615f0681615912565b8114615f1157600080fd5b50565b615f1d81615924565b8114615f2857600080fd5b50565b615f3481615950565b8114615f3f57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205cb53879d6bf0cfef574fada38bf25310b4cf22b538fd10a47bdb3f05e82d8b164736f6c63430008050033
Deployed Bytecode Sourcemap
12346:20880:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13002:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15840:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19089:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15213:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19941:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16350:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19709:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18004:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13100:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18604:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16669:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13417:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17189:809;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21311:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18264:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20775:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13523:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13895:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19198:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3742:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19329:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13265:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15314:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3334:148;;;;;;;;;;;;;:::i;:::-;;13479:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13678:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20904:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13613:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13170:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3120:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13051:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12765:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13944:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21425:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13374:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16893:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4078:298;;;;;;;;;;;;;:::i;:::-;;15518:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20469:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21030:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20600:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13809:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13331:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20329:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21214:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13567:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13730:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3840:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15691:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19457:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20177:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3490:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13217:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13002:42;;;;;;;;;;;;;;;;;;;:::o;15840:161::-;15915:4;15932:39;15941:12;:10;:12::i;:::-;15955:7;15964:6;15932:8;:39::i;:::-;15989:4;15982:11;;15840:161;;;;:::o;19089:87::-;19131:7;19158:10;;19151:17;;19089:87;:::o;15213:95::-;15266:7;15293;;15286:14;;15213:95;:::o;19941:230::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20071:6:::1;20051:11;:26;;;;20108:12;20088:17;:32;;;;20151:12;20131:17;:32;;;;19941:230:::0;;;:::o;16350:313::-;16448:4;16465:36;16475:6;16483:9;16494:6;16465:9;:36::i;:::-;16512:121;16521:6;16529:12;:10;:12::i;:::-;16543:89;16581:6;16543:89;;;;;;;;;;;;;;;;;:11;:19;16555:6;16543:19;;;;;;;;;;;;;;;:33;16563:12;:10;:12::i;:::-;16543:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16512:8;:121::i;:::-;16651:4;16644:11;;16350:313;;;;;:::o;19709:226::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19837:6:::1;19818:10;:25;;;;19873:12;19854:16;:31;;;;19915:12;19896:16;:31;;;;19709:226:::0;;;:::o;18004:254::-;18070:7;18109;;18098;:18;;18090:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18176:19;18198:10;:8;:10::i;:::-;18176:32;;18226:24;18238:11;18226:7;:11;;:24;;;;:::i;:::-;18219:31;;;18004:254;;;:::o;13100:36::-;13134:2;13100:36;:::o;18604:479::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18684:11:::1;:20;18696:7;18684:20;;;;;;;;;;;;;;;;;;;;;;;;;18676:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18754:9;18749:327;18773:9;:16;;;;18769:1;:20;18749:327;;;18831:7;18815:23;;:9;18825:1;18815:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;18811:254;;;18874:9;18903:1;18884:9;:16;;;;:20;;;;:::i;:::-;18874:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18859:9;18869:1;18859:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18943:1;18924:7;:16;18932:7;18924:16;;;;;;;;;;;;;;;:20;;;;18986:5;18963:11;:20;18975:7;18963:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19010:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;19044:5;;18811:254;18791:3;;;;;:::i;:::-;;;;18749:327;;;;18604:479:::0;:::o;16669:218::-;16757:4;16774:83;16783:12;:10;:12::i;:::-;16797:7;16806:50;16845:10;16806:11;:25;16818:12;:10;:12::i;:::-;16806:25;;;;;;;;;;;;;;;:34;16832:7;16806:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16774:8;:83::i;:::-;16875:4;16868:11;;16669:218;;;;:::o;13417:35::-;;;;:::o;17189:809::-;17279:7;17318;;17307;:18;;17299:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17379:17;17374:617;;17416:12;17430:18;17450;17472:20;17484:7;17472:11;:20::i;:::-;17413:79;;;;;;;17507:19;17529:10;:8;:10::i;:::-;17507:32;;17555:15;17576:63;17588:7;17597:4;17603:10;17615;17627:11;17576;:63::i;:::-;17554:85;;;;17663:7;17656:14;;;;;;;;;17374:617;17708:12;17722:18;17742;17764:20;17776:7;17764:11;:20::i;:::-;17705:79;;;;;;;17799:19;17821:10;:8;:10::i;:::-;17799:32;;17849:23;17877:63;17889:7;17898:4;17904:10;17916;17928:11;17877;:63::i;:::-;17846:94;;;;17964:15;17957:22;;;;;;;17189:809;;;;;:::o;21311:108::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21386:7:::1;:5;:7::i;:::-;21378:25;;:33;21404:6;21378:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21311:108:::0;:::o;18264:334::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18345:11:::1;:20;18357:7;18345:20;;;;;;;;;;;;;;;;;;;;;;;;;18344:21;18336:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18433:1;18414:7;:16;18422:7;18414:16;;;;;;;;;;;;;;;;:20;18410:109;;;18470:37;18490:7;:16;18498:7;18490:16;;;;;;;;;;;;;;;;18470:19;:37::i;:::-;18451:7;:16;18459:7;18451:16;;;;;;;;;;;;;;;:56;;;;18410:109;18552:4;18529:11;:20;18541:7;18529:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18567:9;18582:7;18567:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18264:334:::0;:::o;20775:123::-;20839:4;20863:18;:27;20882:7;20863:27;;;;;;;;;;;;;;;;;;;;;;;;;20856:34;;20775:123;;;:::o;13523:36::-;;;;:::o;13895:42::-;;;;;;;;;;;;;:::o;19198:125::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19300:15:::1;19281:16;;:34;;;;;;;;;;;;;;;;;;19198:125:::0;:::o;3742:90::-;3788:7;3815:9;;3808:16;;3742:90;:::o;19329:122::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19442:1:::1;19412:18;:27;19431:7;19412:27;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19329:122:::0;;:::o;13265:40::-;;;;:::o;15314:198::-;15380:7;15404:11;:20;15416:7;15404:20;;;;;;;;;;;;;;;;;;;;;;;;;15400:49;;;15433:7;:16;15441:7;15433:16;;;;;;;;;;;;;;;;15426:23;;;;15400:49;15467:37;15487:7;:16;15495:7;15487:16;;;;;;;;;;;;;;;;15467:19;:37::i;:::-;15460:44;;15314:198;;;;:::o;3334:148::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3441:1:::1;3404:40;;3425:6;::::0;::::1;;;;;;;;3404:40;;;;;;;;;;;;3472:1;3455:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3334:148::o:0;13479:36::-;;;;:::o;13678:45::-;;;;:::o;20904:120::-;20972:4;20996:11;:20;21008:7;20996:20;;;;;;;;;;;;;;;;;;;;;;;;;20989:27;;20904:120;;;:::o;13613:56::-;;;;:::o;13170:40::-;;;;:::o;3120:79::-;3158:7;3185:6;;;;;;;;;;;3178:13;;3120:79;:::o;13051:42::-;;;;;;;;;;;;;;;;;;;:::o;12765:31::-;;;;;;;;;;;;;:::o;13944:40::-;;;;;;;;;;;;;:::o;21425:145::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21523:12:::1;21516:29;;;21546:7;:5;:7::i;:::-;21555:6;21516:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21425:145:::0;;:::o;13374:35::-;;;;:::o;16893:269::-;16986:4;17003:129;17012:12;:10;:12::i;:::-;17026:7;17035:96;17074:15;17035:96;;;;;;;;;;;;;;;;;:11;:25;17047:12;:10;:12::i;:::-;17035:25;;;;;;;;;;;;;;;:34;17061:7;17035:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17003:8;:129::i;:::-;17150:4;17143:11;;16893:269;;;;:::o;4078:298::-;4148:10;4130:28;;:14;;;;;;;;;;;:28;;;4122:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;4235:9;;4217:15;:27;4209:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4319:14;;;;;;;;;;;4290:44;;4311:6;;;;;;;;;;4290:44;;;;;;;;;;;;4354:14;;;;;;;;;;;4345:6;;:23;;;;;;;;;;;;;;;;;;4078:298::o;15518:167::-;15596:4;15613:42;15623:12;:10;:12::i;:::-;15637:9;15648:6;15613:9;:42::i;:::-;15673:4;15666:11;;15518:167;;;;:::o;20469:125::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20571:15:::1;20552:16;:34;;;;20469:125:::0;:::o;21030:178::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21097:34:::1;21153:1;21097:58;;21185:15;21166:16;;:34;;;;;;;;;;;;;;;;;;21086:122;21030:178:::0;:::o;20600:169::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20701:7:::1;20676:22;;:32;;;;;;;;;;;;;;;;;;20724:37;20753:7;20724:37;;;;;;:::i;:::-;;;;;;;;20600:169:::0;:::o;13809:42::-;;;;;;;;;;;;;:::o;13331:35::-;;;;:::o;20329:134::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20421:34:::1;20451:3;20421:25;20433:12;20421:7;;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20406:12;:49;;;;20329:134:::0;:::o;21214:91::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21296:1:::1;21279:14;;:18;;;;;;;;;;;;;;;;;;21214:91:::0;:::o;13567:36::-;;;;:::o;13730:48::-;;;;:::o;3840:226::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3921:6:::1;::::0;::::1;;;;;;;;3904:14;;:23;;;;;;;;;;;;;;;;;;3955:1;3938:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3998:4;3980:15;:22;;;;:::i;:::-;3968:9;:34;;;;4055:1;4018:40;;4039:6;::::0;::::1;;;;;;;;4018:40;;;;;;;;;;;;3840:226:::0;:::o;15691:143::-;15772:7;15799:11;:18;15811:5;15799:18;;;;;;;;;;;;;;;:27;15818:7;15799:27;;;;;;;;;;;;;;;;15792:34;;15691:143;;;;:::o;19457:246::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19595:6:::1;19571:15;:30;;;;19636:12;19612:21;:36;;;;19683:12;19659:21;:36;;;;19457:246:::0;;;:::o;20177:146::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20300:15:::1;20260:37;:55;;;;20177:146:::0;:::o;3490:244::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3599:1:::1;3579:22;;:8;:22;;;;3571:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3689:8;3660:38;;3681:6;::::0;::::1;;;;;;;;3660:38;;;;;;;;;;;;3718:8;3709:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3490:244:::0;:::o;13217:40::-;;;;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;16007:337::-;16117:1;16100:19;;:5;:19;;;;16092:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16198:1;16179:21;;:7;:21;;;;16171:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16282:6;16252:11;:18;16264:5;16252:18;;;;;;;;;;;;;;;:27;16271:7;16252:27;;;;;;;;;;;;;;;:36;;;;16320:7;16304:32;;16313:5;16304:32;;;16329:6;16304:32;;;;;;:::i;:::-;;;;;;;;16007:337;;;:::o;21595:1581::-;21733:1;21717:18;;:4;:18;;;;21709:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21810:1;21796:16;;:2;:16;;;;21788:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21880:1;21871:6;:10;21863:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21952:7;:5;:7::i;:::-;21944:15;;:4;:15;;;;:32;;;;;21969:7;:5;:7::i;:::-;21963:13;;:2;:13;;;;21944:32;21940:140;;;22011:12;;22001:6;:22;;21993:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21940:140;22408:28;22439:24;22457:4;22439:9;:24::i;:::-;22408:55;;22512:12;;22488:20;:36;22484:104;;22564:12;;22541:35;;22484:104;22608:26;22661:16;;22637:20;:40;;22608:69;;22706:21;:56;;;;;22745:17;;;;;;;;;;;22744:18;22706:56;:95;;;;;22787:14;;;;;;;;;;;22779:22;;:4;:22;;;;22706:95;:134;;;;;22818:22;;;;;;;;;;;22706:134;22688:281;;;22890:16;;22867:39;;22921:36;22936:20;22921:14;:36::i;:::-;22688:281;22989:12;23004:4;22989:19;;23023:18;:24;23042:4;23023:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23051:18;:22;23070:2;23051:22;;;;;;;;;;;;;;;;;;;;;;;;;23023:50;23019:98;;;23100:5;23090:15;;23019:98;23127:41;23142:4;23148:2;23152:6;23160:7;23127:14;:41::i;:::-;21698:1478;;;21595:1581;;;:::o;1476:192::-;1562:7;1595:1;1590;:6;;1598:12;1582:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1622:9;1638:1;1634;:5;;;;:::i;:::-;1622:17;;1659:1;1652:8;;;1476:192;;;;;:::o;32046:163::-;32087:7;32108:15;32125;32144:19;:17;:19::i;:::-;32107:56;;;;32181:20;32193:7;32181;:11;;:20;;;;:::i;:::-;32174:27;;;;32046:163;:::o;1912:132::-;1970:7;1997:39;2001:1;2004;1997:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1990:46;;1912:132;;;;:::o;1143:181::-;1201:7;1221:9;1237:1;1233;:5;;;;:::i;:::-;1221:17;;1262:1;1257;:6;;1249:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1315:1;1308:8;;;1143:181;;;;:::o;30841:568::-;30901:7;30910;30919;30928;30948:12;30969:39;31002:5;30969:28;30981:15;;30969:7;:11;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;30948:60;;31019:18;31040:45;31079:5;31040:34;31052:21;;31040:7;:11;;:34;;;;:::i;:::-;:38;;:45;;;;:::i;:::-;31019:66;;31096:18;31117:45;31156:5;31117:34;31129:21;;31117:7;:11;;:34;;;;:::i;:::-;:38;;:45;;;;:::i;:::-;31096:66;;31173:23;31199:17;31211:4;31199:7;:11;;:17;;;;:::i;:::-;31173:43;;31245:31;31265:10;31245:15;:19;;:31;;;;:::i;:::-;31227:49;;31305:31;31325:10;31305:15;:19;;:31;;;;:::i;:::-;31287:49;;31355:15;31372:4;31378:10;31390;31347:54;;;;;;;;;;;;30841:568;;;;;:::o;31415:625::-;31550:7;31559;31568;31588:15;31610:24;31622:11;31610:7;:11;;:24;;;;:::i;:::-;31588:46;;31645:12;31667:21;31676:11;31667:4;:8;;:21;;;;:::i;:::-;31645:43;;31699:18;31721:27;31736:11;31721:10;:14;;:27;;;;:::i;:::-;31699:49;;31759:18;31781:27;31796:11;31781:10;:14;;:27;;;;:::i;:::-;31759:49;;31819:23;31845:17;31857:4;31845:7;:11;;:17;;;;:::i;:::-;31819:43;;31891:31;31911:10;31891:15;:19;;:31;;;;:::i;:::-;31873:49;;31951:31;31971:10;31951:15;:19;;:31;;;;:::i;:::-;31933:49;;32001:7;32010:15;32027:4;31993:39;;;;;;;;;;;31415:625;;;;;;;;;:::o;1676:228::-;1734:7;1763:1;1758;:6;1754:25;;;1775:1;1768:8;;;;1754:25;1791:9;1807:1;1803;:5;;;;:::i;:::-;1791:17;;1836:1;1831;1827;:5;;;;:::i;:::-;:10;1819:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1895:1;1888:8;;;1676:228;;;;;:::o;23182:1136::-;14305:4;14285:17;;:24;;;;;;;;;;;;;;;;;;23314:12:::1;23334:27;23359:1;23334:20;:24;;:27;;;;:::i;:::-;23314:47;;23372:17;23392:30;23417:4;23392:20;:24;;:30;;;;:::i;:::-;23372:50;;23729:22;23754:21;23729:46;;23820:22;23837:4;23820:16;:22::i;:::-;23919:18;23940:41;23966:14;23940:21;:25;;:41;;;;:::i;:::-;23919:62;;23992:22;24017:62;24075:3;24017:53;24032:37;;24017:10;:14;;:53;;;;:::i;:::-;:57;;:62;;;;:::i;:::-;23992:87;;24090:23;24116:30;24131:14;24116:10;:14;;:30;;;;:::i;:::-;24090:56;;24196:40;24209:9;24220:15;24196:12;:40::i;:::-;24262:48;24277:4;24283:15;24300:9;24262:48;;;;;;;;:::i;:::-;;;;;;;;23256:1062;;;;;;14352:5:::0;14332:17;;:25;;;;;;;;;;;;;;;;;;23182:1136;:::o;25445:1842::-;25553:22;25584:15;;25553:46;;25610:28;25641:21;;25610:52;;25673:28;25704:21;;25673:52;;25738:10;25762:14;;;;;;;;;;;25752:24;;:6;:24;;;:66;;;;;25801:16;;;;;;;;;;;25780:38;;:9;:38;;;;25752:66;25738:80;;25829:11;25856:14;;;;;;;;;;;25843:27;;:9;:27;;;25829:41;;25888:7;25883:532;;25936:1;25912:15;:25;;;;25976:1;25952:21;:25;;;;26016:1;25992:21;:25;;;;25883:532;;;26041:5;26037:378;;;26088:10;;26064:15;:34;;;;26137:16;;26113:21;:40;;;;26192:16;;26168:21;:40;;;;26037:378;;;26232:6;26228:187;;;26280:11;;26256:15;:35;;;;26330:17;;26306:21;:41;;;;26386:17;;26362:21;:41;;;;26228:187;26037:378;25883:532;26441:11;:19;26453:6;26441:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;26465:11;:22;26477:9;26465:22;;;;;;;;;;;;;;;;;;;;;;;;;26464:23;26441:46;26437:605;;;26504:48;26526:6;26534:9;26545:6;26504:21;:48::i;:::-;26437:605;;;26577:11;:19;26589:6;26577:19;;;;;;;;;;;;;;;;;;;;;;;;;26576:20;:46;;;;;26600:11;:22;26612:9;26600:22;;;;;;;;;;;;;;;;;;;;;;;;;26576:46;26572:470;;;26639:46;26659:6;26667:9;26678:6;26639:19;:46::i;:::-;26572:470;;;26710:11;:19;26722:6;26710:19;;;;;;;;;;;;;;;;;;;;;;;;;26709:20;:47;;;;;26734:11;:22;26746:9;26734:22;;;;;;;;;;;;;;;;;;;;;;;;;26733:23;26709:47;26705:337;;;26773:44;26791:6;26799:9;26810:6;26773:17;:44::i;:::-;26705:337;;;26841:11;:19;26853:6;26841:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;26864:11;:22;26876:9;26864:22;;;;;;;;;;;;;;;;;;;;;;;;;26841:45;26837:205;;;26903:48;26925:6;26933:9;26944:6;26903:21;:48::i;:::-;26837:205;;;26986:44;27004:6;27012:9;27023:6;26986:17;:44::i;:::-;26837:205;26705:337;26572:470;26437:605;27069:7;27068:8;:17;;;;27080:5;27068:17;:27;;;;27089:6;27068:27;27064:216;;;27136:14;27112:15;:38;;;;27189:20;27165:21;:44;;;;27248:20;27224:21;:44;;;;27064:216;25542:1745;;;;;25445:1842;;;;:::o;32215:561::-;32265:7;32274;32294:15;32312:7;;32294:25;;32330:15;32348:7;;32330:25;;32377:9;32372:289;32396:9;:16;;;;32392:1;:20;32372:289;;;32462:7;32438;:21;32446:9;32456:1;32446:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32438:21;;;;;;;;;;;;;;;;:31;:66;;;;32497:7;32473;:21;32481:9;32491:1;32481:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32473:21;;;;;;;;;;;;;;;;:31;32438:66;32434:97;;;32514:7;;32523;;32506:25;;;;;;;;;32434:97;32556:34;32568:7;:21;32576:9;32586:1;32576:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32568:21;;;;;;;;;;;;;;;;32556:7;:11;;:34;;;;:::i;:::-;32546:44;;32615:34;32627:7;:21;32635:9;32645:1;32635:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32627:21;;;;;;;;;;;;;;;;32615:7;:11;;:34;;;;:::i;:::-;32605:44;;32414:3;;;;;:::i;:::-;;;;32372:289;;;;32685:20;32697:7;;32685;;:11;;:20;;;;:::i;:::-;32675:7;:30;32671:61;;;32715:7;;32724;;32707:25;;;;;;;;32671:61;32751:7;32760;32743:25;;;;;;32215:561;;;:::o;2052:278::-;2138:7;2170:1;2166;:5;2173:12;2158:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2197:9;2213:1;2209;:5;;;;:::i;:::-;2197:17;;2321:1;2314:8;;;2052:278;;;;;:::o;1332:136::-;1390:7;1417:43;1421:1;1424;1417:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1410:50;;1332:136;;;;:::o;24324:592::-;24450:21;24488:1;24474:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24450:40;;24519:4;24501;24506:1;24501:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24545:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24535:4;24540:1;24535:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;24581:63;24598:4;24613:16;;;;;;;;;;;24632:11;24581:8;:63::i;:::-;24683:16;;;;;;;;;;;:67;;;24765:11;24791:1;24835:4;24862;24882:15;24683:225;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24379:537;24324:592;:::o;24922:515::-;25070:63;25087:4;25102:16;;;;;;;;;;;25121:11;25070:8;:63::i;:::-;25176:16;;;;;;;;;;;:32;;;25216:9;25249:4;25269:11;25295:1;25338;25381:7;:5;:7::i;:::-;25403:15;25176:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24922:515;;:::o;29844:836::-;29947:23;29972:12;29986:18;30006;30028:20;30040:7;30028:11;:20::i;:::-;29946:102;;;;;;;;30059:19;30081:10;:8;:10::i;:::-;30059:32;;30103:15;30120:23;30145:12;30161:63;30173:7;30182:4;30188:10;30200;30212:11;30161;:63::i;:::-;30102:122;;;;;;30255:28;30275:7;30255;:15;30263:6;30255:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30237:7;:15;30245:6;30237:15;;;;;;;;;;;;;;;:46;;;;30312:28;30332:7;30312;:15;30320:6;30312:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30294:7;:15;30302:6;30294:15;;;;;;;;;;;;;;;:46;;;;30372:39;30395:15;30372:7;:18;30380:9;30372:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30351:7;:18;30359:9;30351:18;;;;;;;;;;;;;;;:60;;;;30424:66;30443:6;30459:4;30466:10;30478:11;30424:18;:66::i;:::-;30501:78;30520:6;30536:16;;;;;;;;;;;30555:10;30567:11;30501:18;:78::i;:::-;30590:22;30601:4;30607;30590:10;:22::i;:::-;30645:9;30628:44;;30637:6;30628:44;;;30656:15;30628:44;;;;;;:::i;:::-;;;;;;;;29935:745;;;;;;;;29844:836;;;:::o;28990:848::-;29091:23;29116:12;29130:18;29150;29172:20;29184:7;29172:11;:20::i;:::-;29090:102;;;;;;;;29203:19;29225:10;:8;:10::i;:::-;29203:32;;29247:15;29264:23;29289:12;29305:63;29317:7;29326:4;29332:10;29344;29356:11;29305;:63::i;:::-;29246:122;;;;;;29399:28;29419:7;29399;:15;29407:6;29399:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29381:7;:15;29389:6;29381:15;;;;;;;;;;;;;;;:46;;;;29459:39;29482:15;29459:7;:18;29467:9;29459:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29438:7;:18;29446:9;29438:18;;;;;;;;;;;;;;;:60;;;;29530:39;29553:15;29530:7;:18;29538:9;29530:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29509:7;:18;29517:9;29509:18;;;;;;;;;;;;;;;:60;;;;29582:66;29601:6;29617:4;29624:10;29636:11;29582:18;:66::i;:::-;29659:78;29678:6;29694:16;;;;;;;;;;;29713:10;29725:11;29659:18;:78::i;:::-;29748:22;29759:4;29765;29748:10;:22::i;:::-;29803:9;29786:44;;29795:6;29786:44;;;29814:15;29786:44;;;;;;:::i;:::-;;;;;;;;29079:759;;;;;;;;28990:848;;;:::o;27293:778::-;27392:23;27417:12;27431:18;27451;27473:20;27485:7;27473:11;:20::i;:::-;27391:102;;;;;;;;27504:19;27526:10;:8;:10::i;:::-;27504:32;;27548:15;27565:23;27590:12;27606:63;27618:7;27627:4;27633:10;27645;27657:11;27606;:63::i;:::-;27547:122;;;;;;27703:28;27723:7;27703;:15;27711:6;27703:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27682:7;:15;27690:6;27682:15;;;;;;;;;;;;;;;:49;;;;27763:39;27786:15;27763:7;:18;27771:9;27763:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27742:7;:18;27750:9;27742:18;;;;;;;;;;;;;;;:60;;;;27815:66;27834:6;27850:4;27857:10;27869:11;27815:18;:66::i;:::-;27892:78;27911:6;27927:16;;;;;;;;;;;27946:10;27958:11;27892:18;:78::i;:::-;27981:22;27992:4;27998;27981:10;:22::i;:::-;28036:9;28019:44;;28028:6;28019:44;;;28047:15;28019:44;;;;;;:::i;:::-;;;;;;;;27380:691;;;;;;;;27293:778;;;:::o;28077:907::-;28180:23;28205:12;28219:18;28239;28261:20;28273:7;28261:11;:20::i;:::-;28179:102;;;;;;;;28292:19;28314:10;:8;:10::i;:::-;28292:32;;28336:15;28353:23;28378:12;28394:63;28406:7;28415:4;28421:10;28433;28445:11;28394;:63::i;:::-;28335:122;;;;;;28488:28;28508:7;28488;:15;28496:6;28488:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28470:7;:15;28478:6;28470:15;;;;;;;;;;;;;;;:46;;;;28545:28;28565:7;28545;:15;28553:6;28545:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28527:7;:15;28535:6;28527:15;;;;;;;;;;;;;;;:46;;;;28605:39;28628:15;28605:7;:18;28613:9;28605:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28584:7;:18;28592:9;28584:18;;;;;;;;;;;;;;;:60;;;;28676:39;28699:15;28676:7;:18;28684:9;28676:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28655:7;:18;28663:9;28655:18;;;;;;;;;;;;;;;:60;;;;28728:66;28747:6;28763:4;28770:10;28782:11;28728:18;:66::i;:::-;28805:78;28824:6;28840:16;;;;;;;;;;;28859:10;28871:11;28805:18;:78::i;:::-;28894:22;28905:4;28911;28894:10;:22::i;:::-;28949:9;28932:44;;28941:6;28932:44;;;28960:15;28932:44;;;;;;:::i;:::-;;;;;;;;28168:816;;;;;;;;28077:907;;;:::o;32782:441::-;32908:1;32897:7;:12;32893:29;;32913:7;;32893:29;32934:15;32952:24;32964:11;32952:7;:11;;:24;;;;:::i;:::-;32934:42;;33001:24;33017:7;33001;:11;33009:2;33001:11;;;;;;;;;;;;;;;;:15;;:24;;;;:::i;:::-;32987:7;:11;32995:2;32987:11;;;;;;;;;;;;;;;:38;;;;33040:11;:15;33052:2;33040:15;;;;;;;;;;;;;;;;;;;;;;;;;33036:86;;;33086:24;33102:7;33086;:11;33094:2;33086:11;;;;;;;;;;;;;;;;:15;;:24;;;;:::i;:::-;33072:7;:11;33080:2;33072:11;;;;;;;;;;;;;;;:38;;;;33036:86;33150:4;33136:19;;:2;:19;;;33132:84;;33192:2;33177:27;;33186:4;33177:27;;;33196:7;33177:27;;;;;;:::i;:::-;;;;;;;;33132:84;32882:341;32782:441;;;;;:::o;30686:149::-;30766:17;30778:4;30766:7;;:11;;:17;;;;:::i;:::-;30753:7;:30;;;;30807:20;30822:4;30807:10;;:14;;:20;;;;:::i;:::-;30794:10;:33;;;;30686:149;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:329::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;991:79;;:::i;:::-;953:2;1111:1;1136:53;1181:7;1172:6;1161:9;1157:22;1136:53;:::i;:::-;1126:63;;1082:117;943:263;;;;:::o;1212:351::-;1282:6;1331:2;1319:9;1310:7;1306:23;1302:32;1299:2;;;1337:79;;:::i;:::-;1299:2;1457:1;1482:64;1538:7;1529:6;1518:9;1514:22;1482:64;:::i;:::-;1472:74;;1428:128;1289:274;;;;:::o;1569:474::-;1637:6;1645;1694:2;1682:9;1673:7;1669:23;1665:32;1662:2;;;1700:79;;:::i;:::-;1662:2;1820:1;1845:53;1890:7;1881:6;1870:9;1866:22;1845:53;:::i;:::-;1835:63;;1791:117;1947:2;1973:53;2018:7;2009:6;1998:9;1994:22;1973:53;:::i;:::-;1963:63;;1918:118;1652:391;;;;;:::o;2049:619::-;2126:6;2134;2142;2191:2;2179:9;2170:7;2166:23;2162:32;2159:2;;;2197:79;;:::i;:::-;2159:2;2317:1;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2288:117;2444:2;2470:53;2515:7;2506:6;2495:9;2491:22;2470:53;:::i;:::-;2460:63;;2415:118;2572:2;2598:53;2643:7;2634:6;2623:9;2619:22;2598:53;:::i;:::-;2588:63;;2543:118;2149:519;;;;;:::o;2674:468::-;2739:6;2747;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2802:79;;:::i;:::-;2764:2;2922:1;2947:53;2992:7;2983:6;2972:9;2968:22;2947:53;:::i;:::-;2937:63;;2893:117;3049:2;3075:50;3117:7;3108:6;3097:9;3093:22;3075:50;:::i;:::-;3065:60;;3020:115;2754:388;;;;;:::o;3148:474::-;3216:6;3224;3273:2;3261:9;3252:7;3248:23;3244:32;3241:2;;;3279:79;;:::i;:::-;3241:2;3399:1;3424:53;3469:7;3460:6;3449:9;3445:22;3424:53;:::i;:::-;3414:63;;3370:117;3526:2;3552:53;3597:7;3588:6;3577:9;3573:22;3552:53;:::i;:::-;3542:63;;3497:118;3231:391;;;;;:::o;3628:323::-;3684:6;3733:2;3721:9;3712:7;3708:23;3704:32;3701:2;;;3739:79;;:::i;:::-;3701:2;3859:1;3884:50;3926:7;3917:6;3906:9;3902:22;3884:50;:::i;:::-;3874:60;;3830:114;3691:260;;;;:::o;3957:345::-;4024:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:2;;;4079:79;;:::i;:::-;4041:2;4199:1;4224:61;4277:7;4268:6;4257:9;4253:22;4224:61;:::i;:::-;4214:71;;4170:125;4031:271;;;;:::o;4308:329::-;4367:6;4416:2;4404:9;4395:7;4391:23;4387:32;4384:2;;;4422:79;;:::i;:::-;4384:2;4542:1;4567:53;4612:7;4603:6;4592:9;4588:22;4567:53;:::i;:::-;4557:63;;4513:117;4374:263;;;;:::o;4643:468::-;4708:6;4716;4765:2;4753:9;4744:7;4740:23;4736:32;4733:2;;;4771:79;;:::i;:::-;4733:2;4891:1;4916:53;4961:7;4952:6;4941:9;4937:22;4916:53;:::i;:::-;4906:63;;4862:117;5018:2;5044:50;5086:7;5077:6;5066:9;5062:22;5044:50;:::i;:::-;5034:60;;4989:115;4723:388;;;;;:::o;5117:619::-;5194:6;5202;5210;5259:2;5247:9;5238:7;5234:23;5230:32;5227:2;;;5265:79;;:::i;:::-;5227:2;5385:1;5410:53;5455:7;5446:6;5435:9;5431:22;5410:53;:::i;:::-;5400:63;;5356:117;5512:2;5538:53;5583:7;5574:6;5563:9;5559:22;5538:53;:::i;:::-;5528:63;;5483:118;5640:2;5666:53;5711:7;5702:6;5691:9;5687:22;5666:53;:::i;:::-;5656:63;;5611:118;5217:519;;;;;:::o;5742:663::-;5830:6;5838;5846;5895:2;5883:9;5874:7;5870:23;5866:32;5863:2;;;5901:79;;:::i;:::-;5863:2;6021:1;6046:64;6102:7;6093:6;6082:9;6078:22;6046:64;:::i;:::-;6036:74;;5992:128;6159:2;6185:64;6241:7;6232:6;6221:9;6217:22;6185:64;:::i;:::-;6175:74;;6130:129;6298:2;6324:64;6380:7;6371:6;6360:9;6356:22;6324:64;:::i;:::-;6314:74;;6269:129;5853:552;;;;;:::o;6411:179::-;6480:10;6501:46;6543:3;6535:6;6501:46;:::i;:::-;6579:4;6574:3;6570:14;6556:28;;6491:99;;;;:::o;6596:108::-;6673:24;6691:5;6673:24;:::i;:::-;6668:3;6661:37;6651:53;;:::o;6710:118::-;6797:24;6815:5;6797:24;:::i;:::-;6792:3;6785:37;6775:53;;:::o;6864:732::-;6983:3;7012:54;7060:5;7012:54;:::i;:::-;7082:86;7161:6;7156:3;7082:86;:::i;:::-;7075:93;;7192:56;7242:5;7192:56;:::i;:::-;7271:7;7302:1;7287:284;7312:6;7309:1;7306:13;7287:284;;;7388:6;7382:13;7415:63;7474:3;7459:13;7415:63;:::i;:::-;7408:70;;7501:60;7554:6;7501:60;:::i;:::-;7491:70;;7347:224;7334:1;7331;7327:9;7322:14;;7287:284;;;7291:14;7587:3;7580:10;;6988:608;;;;;;;:::o;7602:109::-;7683:21;7698:5;7683:21;:::i;:::-;7678:3;7671:34;7661:50;;:::o;7717:185::-;7831:64;7889:5;7831:64;:::i;:::-;7826:3;7819:77;7809:93;;:::o;7908:147::-;8003:45;8042:5;8003:45;:::i;:::-;7998:3;7991:58;7981:74;;:::o;8061:364::-;8149:3;8177:39;8210:5;8177:39;:::i;:::-;8232:71;8296:6;8291:3;8232:71;:::i;:::-;8225:78;;8312:52;8357:6;8352:3;8345:4;8338:5;8334:16;8312:52;:::i;:::-;8389:29;8411:6;8389:29;:::i;:::-;8384:3;8380:39;8373:46;;8153:272;;;;;:::o;8431:366::-;8573:3;8594:67;8658:2;8653:3;8594:67;:::i;:::-;8587:74;;8670:93;8759:3;8670:93;:::i;:::-;8788:2;8783:3;8779:12;8772:19;;8577:220;;;:::o;8803:366::-;8945:3;8966:67;9030:2;9025:3;8966:67;:::i;:::-;8959:74;;9042:93;9131:3;9042:93;:::i;:::-;9160:2;9155:3;9151:12;9144:19;;8949:220;;;:::o;9175:366::-;9317:3;9338:67;9402:2;9397:3;9338:67;:::i;:::-;9331:74;;9414:93;9503:3;9414:93;:::i;:::-;9532:2;9527:3;9523:12;9516:19;;9321:220;;;:::o;9547:366::-;9689:3;9710:67;9774:2;9769:3;9710:67;:::i;:::-;9703:74;;9786:93;9875:3;9786:93;:::i;:::-;9904:2;9899:3;9895:12;9888:19;;9693:220;;;:::o;9919:366::-;10061:3;10082:67;10146:2;10141:3;10082:67;:::i;:::-;10075:74;;10158:93;10247:3;10158:93;:::i;:::-;10276:2;10271:3;10267:12;10260:19;;10065:220;;;:::o;10291:366::-;10433:3;10454:67;10518:2;10513:3;10454:67;:::i;:::-;10447:74;;10530:93;10619:3;10530:93;:::i;:::-;10648:2;10643:3;10639:12;10632:19;;10437:220;;;:::o;10663:366::-;10805:3;10826:67;10890:2;10885:3;10826:67;:::i;:::-;10819:74;;10902:93;10991:3;10902:93;:::i;:::-;11020:2;11015:3;11011:12;11004:19;;10809:220;;;:::o;11035:366::-;11177:3;11198:67;11262:2;11257:3;11198:67;:::i;:::-;11191:74;;11274:93;11363:3;11274:93;:::i;:::-;11392:2;11387:3;11383:12;11376:19;;11181:220;;;:::o;11407:366::-;11549:3;11570:67;11634:2;11629:3;11570:67;:::i;:::-;11563:74;;11646:93;11735:3;11646:93;:::i;:::-;11764:2;11759:3;11755:12;11748:19;;11553:220;;;:::o;11779:366::-;11921:3;11942:67;12006:2;12001:3;11942:67;:::i;:::-;11935:74;;12018:93;12107:3;12018:93;:::i;:::-;12136:2;12131:3;12127:12;12120:19;;11925:220;;;:::o;12151:366::-;12293:3;12314:67;12378:2;12373:3;12314:67;:::i;:::-;12307:74;;12390:93;12479:3;12390:93;:::i;:::-;12508:2;12503:3;12499:12;12492:19;;12297:220;;;:::o;12523:366::-;12665:3;12686:67;12750:2;12745:3;12686:67;:::i;:::-;12679:74;;12762:93;12851:3;12762:93;:::i;:::-;12880:2;12875:3;12871:12;12864:19;;12669:220;;;:::o;12895:366::-;13037:3;13058:67;13122:2;13117:3;13058:67;:::i;:::-;13051:74;;13134:93;13223:3;13134:93;:::i;:::-;13252:2;13247:3;13243:12;13236:19;;13041:220;;;:::o;13267:366::-;13409:3;13430:67;13494:2;13489:3;13430:67;:::i;:::-;13423:74;;13506:93;13595:3;13506:93;:::i;:::-;13624:2;13619:3;13615:12;13608:19;;13413:220;;;:::o;13639:366::-;13781:3;13802:67;13866:2;13861:3;13802:67;:::i;:::-;13795:74;;13878:93;13967:3;13878:93;:::i;:::-;13996:2;13991:3;13987:12;13980:19;;13785:220;;;:::o;14011:118::-;14098:24;14116:5;14098:24;:::i;:::-;14093:3;14086:37;14076:53;;:::o;14135:112::-;14218:22;14234:5;14218:22;:::i;:::-;14213:3;14206:35;14196:51;;:::o;14253:222::-;14346:4;14384:2;14373:9;14369:18;14361:26;;14397:71;14465:1;14454:9;14450:17;14441:6;14397:71;:::i;:::-;14351:124;;;;:::o;14481:332::-;14602:4;14640:2;14629:9;14625:18;14617:26;;14653:71;14721:1;14710:9;14706:17;14697:6;14653:71;:::i;:::-;14734:72;14802:2;14791:9;14787:18;14778:6;14734:72;:::i;:::-;14607:206;;;;;:::o;14819:807::-;15068:4;15106:3;15095:9;15091:19;15083:27;;15120:71;15188:1;15177:9;15173:17;15164:6;15120:71;:::i;:::-;15201:72;15269:2;15258:9;15254:18;15245:6;15201:72;:::i;:::-;15283:80;15359:2;15348:9;15344:18;15335:6;15283:80;:::i;:::-;15373;15449:2;15438:9;15434:18;15425:6;15373:80;:::i;:::-;15463:73;15531:3;15520:9;15516:19;15507:6;15463:73;:::i;:::-;15546;15614:3;15603:9;15599:19;15590:6;15546:73;:::i;:::-;15073:553;;;;;;;;;:::o;15632:210::-;15719:4;15757:2;15746:9;15742:18;15734:26;;15770:65;15832:1;15821:9;15817:17;15808:6;15770:65;:::i;:::-;15724:118;;;;:::o;15848:276::-;15968:4;16006:2;15995:9;15991:18;15983:26;;16019:98;16114:1;16103:9;16099:17;16090:6;16019:98;:::i;:::-;15973:151;;;;:::o;16130:313::-;16243:4;16281:2;16270:9;16266:18;16258:26;;16330:9;16324:4;16320:20;16316:1;16305:9;16301:17;16294:47;16358:78;16431:4;16422:6;16358:78;:::i;:::-;16350:86;;16248:195;;;;:::o;16449:419::-;16615:4;16653:2;16642:9;16638:18;16630:26;;16702:9;16696:4;16692:20;16688:1;16677:9;16673:17;16666:47;16730:131;16856:4;16730:131;:::i;:::-;16722:139;;16620:248;;;:::o;16874:419::-;17040:4;17078:2;17067:9;17063:18;17055:26;;17127:9;17121:4;17117:20;17113:1;17102:9;17098:17;17091:47;17155:131;17281:4;17155:131;:::i;:::-;17147:139;;17045:248;;;:::o;17299:419::-;17465:4;17503:2;17492:9;17488:18;17480:26;;17552:9;17546:4;17542:20;17538:1;17527:9;17523:17;17516:47;17580:131;17706:4;17580:131;:::i;:::-;17572:139;;17470:248;;;:::o;17724:419::-;17890:4;17928:2;17917:9;17913:18;17905:26;;17977:9;17971:4;17967:20;17963:1;17952:9;17948:17;17941:47;18005:131;18131:4;18005:131;:::i;:::-;17997:139;;17895:248;;;:::o;18149:419::-;18315:4;18353:2;18342:9;18338:18;18330:26;;18402:9;18396:4;18392:20;18388:1;18377:9;18373:17;18366:47;18430:131;18556:4;18430:131;:::i;:::-;18422:139;;18320:248;;;:::o;18574:419::-;18740:4;18778:2;18767:9;18763:18;18755:26;;18827:9;18821:4;18817:20;18813:1;18802:9;18798:17;18791:47;18855:131;18981:4;18855:131;:::i;:::-;18847:139;;18745:248;;;:::o;18999:419::-;19165:4;19203:2;19192:9;19188:18;19180:26;;19252:9;19246:4;19242:20;19238:1;19227:9;19223:17;19216:47;19280:131;19406:4;19280:131;:::i;:::-;19272:139;;19170:248;;;:::o;19424:419::-;19590:4;19628:2;19617:9;19613:18;19605:26;;19677:9;19671:4;19667:20;19663:1;19652:9;19648:17;19641:47;19705:131;19831:4;19705:131;:::i;:::-;19697:139;;19595:248;;;:::o;19849:419::-;20015:4;20053:2;20042:9;20038:18;20030:26;;20102:9;20096:4;20092:20;20088:1;20077:9;20073:17;20066:47;20130:131;20256:4;20130:131;:::i;:::-;20122:139;;20020:248;;;:::o;20274:419::-;20440:4;20478:2;20467:9;20463:18;20455:26;;20527:9;20521:4;20517:20;20513:1;20502:9;20498:17;20491:47;20555:131;20681:4;20555:131;:::i;:::-;20547:139;;20445:248;;;:::o;20699:419::-;20865:4;20903:2;20892:9;20888:18;20880:26;;20952:9;20946:4;20942:20;20938:1;20927:9;20923:17;20916:47;20980:131;21106:4;20980:131;:::i;:::-;20972:139;;20870:248;;;:::o;21124:419::-;21290:4;21328:2;21317:9;21313:18;21305:26;;21377:9;21371:4;21367:20;21363:1;21352:9;21348:17;21341:47;21405:131;21531:4;21405:131;:::i;:::-;21397:139;;21295:248;;;:::o;21549:419::-;21715:4;21753:2;21742:9;21738:18;21730:26;;21802:9;21796:4;21792:20;21788:1;21777:9;21773:17;21766:47;21830:131;21956:4;21830:131;:::i;:::-;21822:139;;21720:248;;;:::o;21974:419::-;22140:4;22178:2;22167:9;22163:18;22155:26;;22227:9;22221:4;22217:20;22213:1;22202:9;22198:17;22191:47;22255:131;22381:4;22255:131;:::i;:::-;22247:139;;22145:248;;;:::o;22399:419::-;22565:4;22603:2;22592:9;22588:18;22580:26;;22652:9;22646:4;22642:20;22638:1;22627:9;22623:17;22616:47;22680:131;22806:4;22680:131;:::i;:::-;22672:139;;22570:248;;;:::o;22824:222::-;22917:4;22955:2;22944:9;22940:18;22932:26;;22968:71;23036:1;23025:9;23021:17;23012:6;22968:71;:::i;:::-;22922:124;;;;:::o;23052:831::-;23315:4;23353:3;23342:9;23338:19;23330:27;;23367:71;23435:1;23424:9;23420:17;23411:6;23367:71;:::i;:::-;23448:80;23524:2;23513:9;23509:18;23500:6;23448:80;:::i;:::-;23575:9;23569:4;23565:20;23560:2;23549:9;23545:18;23538:48;23603:108;23706:4;23697:6;23603:108;:::i;:::-;23595:116;;23721:72;23789:2;23778:9;23774:18;23765:6;23721:72;:::i;:::-;23803:73;23871:3;23860:9;23856:19;23847:6;23803:73;:::i;:::-;23320:563;;;;;;;;:::o;23889:442::-;24038:4;24076:2;24065:9;24061:18;24053:26;;24089:71;24157:1;24146:9;24142:17;24133:6;24089:71;:::i;:::-;24170:72;24238:2;24227:9;24223:18;24214:6;24170:72;:::i;:::-;24252;24320:2;24309:9;24305:18;24296:6;24252:72;:::i;:::-;24043:288;;;;;;:::o;24337:214::-;24426:4;24464:2;24453:9;24449:18;24441:26;;24477:67;24541:1;24530:9;24526:17;24517:6;24477:67;:::i;:::-;24431:120;;;;:::o;24638:132::-;24705:4;24728:3;24720:11;;24758:4;24753:3;24749:14;24741:22;;24710:60;;;:::o;24776:114::-;24843:6;24877:5;24871:12;24861:22;;24850:40;;;:::o;24896:99::-;24948:6;24982:5;24976:12;24966:22;;24955:40;;;:::o;25001:113::-;25071:4;25103;25098:3;25094:14;25086:22;;25076:38;;;:::o;25120:184::-;25219:11;25253:6;25248:3;25241:19;25293:4;25288:3;25284:14;25269:29;;25231:73;;;;:::o;25310:169::-;25394:11;25428:6;25423:3;25416:19;25468:4;25463:3;25459:14;25444:29;;25406:73;;;;:::o;25485:305::-;25525:3;25544:20;25562:1;25544:20;:::i;:::-;25539:25;;25578:20;25596:1;25578:20;:::i;:::-;25573:25;;25732:1;25664:66;25660:74;25657:1;25654:81;25651:2;;;25738:18;;:::i;:::-;25651:2;25782:1;25779;25775:9;25768:16;;25529:261;;;;:::o;25796:185::-;25836:1;25853:20;25871:1;25853:20;:::i;:::-;25848:25;;25887:20;25905:1;25887:20;:::i;:::-;25882:25;;25926:1;25916:2;;25931:18;;:::i;:::-;25916:2;25973:1;25970;25966:9;25961:14;;25838:143;;;;:::o;25987:348::-;26027:7;26050:20;26068:1;26050:20;:::i;:::-;26045:25;;26084:20;26102:1;26084:20;:::i;:::-;26079:25;;26272:1;26204:66;26200:74;26197:1;26194:81;26189:1;26182:9;26175:17;26171:105;26168:2;;;26279:18;;:::i;:::-;26168:2;26327:1;26324;26320:9;26309:20;;26035:300;;;;:::o;26341:191::-;26381:4;26401:20;26419:1;26401:20;:::i;:::-;26396:25;;26435:20;26453:1;26435:20;:::i;:::-;26430:25;;26474:1;26471;26468:8;26465:2;;;26479:18;;:::i;:::-;26465:2;26524:1;26521;26517:9;26509:17;;26386:146;;;;:::o;26538:96::-;26575:7;26604:24;26622:5;26604:24;:::i;:::-;26593:35;;26583:51;;;:::o;26640:90::-;26674:7;26717:5;26710:13;26703:21;26692:32;;26682:48;;;:::o;26736:126::-;26773:7;26813:42;26806:5;26802:54;26791:65;;26781:81;;;:::o;26868:77::-;26905:7;26934:5;26923:16;;26913:32;;;:::o;26951:86::-;26986:7;27026:4;27019:5;27015:16;27004:27;;26994:43;;;:::o;27043:180::-;27120:9;27153:64;27211:5;27153:64;:::i;:::-;27140:77;;27130:93;;;:::o;27229:140::-;27306:9;27339:24;27357:5;27339:24;:::i;:::-;27326:37;;27316:53;;;:::o;27375:121::-;27433:9;27466:24;27484:5;27466:24;:::i;:::-;27453:37;;27443:53;;;:::o;27502:307::-;27570:1;27580:113;27594:6;27591:1;27588:13;27580:113;;;27679:1;27674:3;27670:11;27664:18;27660:1;27655:3;27651:11;27644:39;27616:2;27613:1;27609:10;27604:15;;27580:113;;;27711:6;27708:1;27705:13;27702:2;;;27791:1;27782:6;27777:3;27773:16;27766:27;27702:2;27551:258;;;;:::o;27815:233::-;27854:3;27877:24;27895:5;27877:24;:::i;:::-;27868:33;;27923:66;27916:5;27913:77;27910:2;;;27993:18;;:::i;:::-;27910:2;28040:1;28033:5;28029:13;28022:20;;27858:190;;;:::o;28054:180::-;28102:77;28099:1;28092:88;28199:4;28196:1;28189:15;28223:4;28220:1;28213:15;28240:180;28288:77;28285:1;28278:88;28385:4;28382:1;28375:15;28409:4;28406:1;28399:15;28426:180;28474:77;28471:1;28464:88;28571:4;28568:1;28561:15;28595:4;28592:1;28585:15;28612:180;28660:77;28657:1;28650:88;28757:4;28754:1;28747:15;28781:4;28778:1;28771:15;28798:180;28846:77;28843:1;28836:88;28943:4;28940:1;28933:15;28967:4;28964:1;28957:15;29107:117;29216:1;29213;29206:12;29230:102;29271:6;29322:2;29318:7;29313:2;29306:5;29302:14;29298:28;29288:38;;29278:54;;;:::o;29338:224::-;29478:34;29474:1;29466:6;29462:14;29455:58;29547:7;29542:2;29534:6;29530:15;29523:32;29444:118;:::o;29568:174::-;29708:26;29704:1;29696:6;29692:14;29685:50;29674:68;:::o;29748:223::-;29888:34;29884:1;29876:6;29872:14;29865:58;29957:6;29952:2;29944:6;29940:15;29933:31;29854:117;:::o;29977:229::-;30117:34;30113:1;30105:6;30101:14;30094:58;30186:12;30181:2;30173:6;30169:15;30162:37;30083:123;:::o;30212:225::-;30352:34;30348:1;30340:6;30336:14;30329:58;30421:8;30416:2;30408:6;30404:15;30397:33;30318:119;:::o;30443:177::-;30583:29;30579:1;30571:6;30567:14;30560:53;30549:71;:::o;30626:177::-;30766:29;30762:1;30754:6;30750:14;30743:53;30732:71;:::o;30809:181::-;30949:33;30945:1;30937:6;30933:14;30926:57;30915:75;:::o;30996:227::-;31136:34;31132:1;31124:6;31120:14;31113:58;31205:10;31200:2;31192:6;31188:15;31181:35;31102:121;:::o;31229:220::-;31369:34;31365:1;31357:6;31353:14;31346:58;31438:3;31433:2;31425:6;31421:15;31414:28;31335:114;:::o;31455:182::-;31595:34;31591:1;31583:6;31579:14;31572:58;31561:76;:::o;31643:228::-;31783:34;31779:1;31771:6;31767:14;31760:58;31852:11;31847:2;31839:6;31835:15;31828:36;31749:122;:::o;31877:222::-;32017:34;32013:1;32005:6;32001:14;31994:58;32086:5;32081:2;32073:6;32069:15;32062:30;31983:116;:::o;32105:221::-;32245:34;32241:1;32233:6;32229:14;32222:58;32314:4;32309:2;32301:6;32297:15;32290:29;32211:115;:::o;32332:222::-;32472:34;32468:1;32460:6;32456:14;32449:58;32541:5;32536:2;32528:6;32524:15;32517:30;32438:116;:::o;32560:122::-;32633:24;32651:5;32633:24;:::i;:::-;32626:5;32623:35;32613:2;;32672:1;32669;32662:12;32613:2;32603:79;:::o;32688:116::-;32758:21;32773:5;32758:21;:::i;:::-;32751:5;32748:32;32738:2;;32794:1;32791;32784:12;32738:2;32728:76;:::o;32810:122::-;32883:24;32901:5;32883:24;:::i;:::-;32876:5;32873:35;32863:2;;32922:1;32919;32912:12;32863:2;32853:79;:::o
Swarm Source
ipfs://5cb53879d6bf0cfef574fada38bf25310b4cf22b538fd10a47bdb3f05e82d8b1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)