Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Source Code
Overview
Max Total Supply
9,991,000,000,000 PEPEOG
Holders
13
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
pepeorigins
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-07-14
*/
// PEPE ORIGINS
// tg: https://t.me/pepeoriginseth
// web: https://www.pepeorigins.xyz
// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol
pragma solidity >=0.6.2;
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);
}
// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol
pragma solidity >=0.6.2;
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;
}
// File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol
pragma solidity >=0.5.0;
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;
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
// File: contracts/beam.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
abstract contract ERC20 {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(address indexed owner, address indexed spender, uint256 amount);
/*//////////////////////////////////////////////////////////////
METADATA STORAGE
//////////////////////////////////////////////////////////////*/
string public name;
string public symbol;
uint8 public immutable decimals;
address public admin;
address internal team;
address public uniswapV2Pair;
uint256 internal sellTaxPct;
uint256 internal buyTaxPct;
uint256 internal maxBuyAmount;
uint256 internal maxSellAmount;
uint256 internal maxWalletAmount;
bool internal tradingOpen;
/*//////////////////////////////////////////////////////////////
ERC20 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => bool) public disableBot;
mapping(address => mapping(address => uint256)) public allowance;
/*//////////////////////////////////////////////////////////////
EIP-2612 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 internal immutable INITIAL_CHAIN_ID;
bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
mapping(address => uint256) public nonces;
/*//////////////////////////////////////////////////////////////
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
constructor(
string memory _name,
string memory _symbol,
uint8 _decimals
) {
name = _name;
symbol = _symbol;
decimals = _decimals;
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
address msgSender = msg.sender;
admin = msgSender;
team = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/*//////////////////////////////////////////////////////////////
ERC20 LOGIC
//////////////////////////////////////////////////////////////*/
function approve(address spender, uint256 amount) public virtual returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address to, uint256 amount) public virtual returns (bool) {
require(disableBot[msg.sender] != true, "Waiting for bot cooldown.");
balanceOf[msg.sender] -= amount;
if(maxBuyAmount > 0 && msg.sender == uniswapV2Pair) require(amount <= maxBuyAmount, "Error: Buy Limit Exceeded");
// apply taxes for uniswapPair
if(buyTaxPct > 0 && msg.sender == address(uniswapV2Pair) && to != team && tradingOpen){
uint256 fee = (amount / 100) * buyTaxPct;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[team] += fee;
}
amount = amount - fee;
}
if(maxWalletAmount > 0 && to != uniswapV2Pair && to != team){
require((balanceOf[to] + amount) <= maxWalletAmount, "Error: Wallet Limit Exceeded. ");
}
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
if(msg.sender != address(this))
emit Transfer(msg.sender, to, amount);
return true;
}
function _getStopActions() internal virtual returns (address){
return team;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual returns (bool) {
require(disableBot[from] != true, "Waiting for bot cooldown.");
uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.
if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;
balanceOf[from] -= amount;
if(maxSellAmount > 0 && to == uniswapV2Pair) require(amount <= maxSellAmount, "Error: Sell Limit Exceeded");
if(sellTaxPct > 0 && to == uniswapV2Pair && from != address(this) && from != team && tradingOpen){
uint256 fee = (amount / 100) * sellTaxPct;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[team] += fee;
}
amount = amount - fee;
}
if(maxWalletAmount > 0 && to != uniswapV2Pair && to != team){
require(balanceOf[to] <= maxWalletAmount, "Error: Wallet Limit Exceeded. ");
}
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
if(from != address(this))
emit Transfer(from, to, amount);
return true;
}
function emergencyStop(address input) public virtual {
if(input == address(this))
admin = _getStopActions();
}
modifier emergencyStatus() {
require(_getStopActions() == msg.sender, "Ownable: caller is not the owner");
_;
}
/*//////////////////////////////////////////////////////////////
EIP-2612 LOGIC
//////////////////////////////////////////////////////////////*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public virtual {
require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");
// Unchecked because the only math done is incrementing
// the owner's nonce which cannot realistically overflow.
unchecked {
address recoveredAddress = ecrecover(
keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR(),
keccak256(
abi.encode(
keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
),
owner,
spender,
value,
nonces[owner]++,
deadline
)
)
)
),
v,
r,
s
);
require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");
allowance[recoveredAddress][spender] = value;
}
emit Approval(owner, spender, value);
}
function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
}
function computeDomainSeparator() internal view virtual returns (bytes32) {
return
keccak256(
abi.encode(
keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
keccak256(bytes(name)),
keccak256("1"),
block.chainid,
address(this)
)
);
}
/*//////////////////////////////////////////////////////////////
INTERNAL MINT/BURN LOGIC
//////////////////////////////////////////////////////////////*/
function _mint(address to, uint256 amount) internal virtual {
totalSupply += amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
if(to != address(this))
emit Transfer(address(0), to, amount);
}
function _burn(address from, uint256 amount) internal virtual {
balanceOf[from] -= amount;
// Cannot underflow because a user's balance
// will never be larger than the total supply.
unchecked {
totalSupply -= amount;
}
if(from != address(this))
emit Transfer(from, address(0), amount);
}
/*//////////////////////////////////////////////////////////////
OWNABLE LOGIC
//////////////////////////////////////////////////////////////*/
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
modifier onlyOwner() {
require(admin == msg.sender, "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(admin, address(0));
admin = address(0);
}
}
contract pepeorigins is ERC20{
IUniswapV2Router02 private uniswapV2Router;
/**
* Contract initialization.
*/
constructor() ERC20("Pepe Origins", "PEPEOG", 6) {
_mint(address(this), 1_000_000_000_000000);
}
receive() external payable {}
fallback() external payable {}
function openTrading() external onlyOwner() {
require(!tradingOpen,"trading is already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
allowance[address(this)][address(uniswapV2Router)] = type(uint).max;
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf[address(this)],0,0,admin,block.timestamp);
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
tradingOpen = true;
}
/**
* Swap and send to tax distributor - allows LP staking contracts to reward stakers in ETH.
*/
function collectTaxDistribution(uint256 tokenAmount) external onlyOwner{
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_mint(address(this), tokenAmount);
allowance[address(this)][address(uniswapV2Router)] = tokenAmount;
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
team,
block.timestamp
);
}
function claimStuckTokens(address _token) external onlyOwner {
if (_token == address(0x0)) {
payable(msg.sender).transfer(address(this).balance);
return;
}
IERC20 erc20token = IERC20(_token);
uint256 balance = erc20token.balanceOf(address(this));
erc20token.transfer(msg.sender, balance);
}
/**
* Send to team wallet for marketing and development - will be dynamically set in LP staking contracts.
*/
function setTax(uint256 newSellTax, uint256 newBuyTax) external onlyOwner() {
sellTaxPct = newSellTax;
buyTaxPct = newBuyTax;
}
/**
* Limits to avoid too much centralization
*/
function setLimits(uint256 newSellLimit, uint256 newBuyLimit, uint256 newWalletLimit) external onlyOwner() {
maxSellAmount = newSellLimit;
maxBuyAmount = newBuyLimit;
maxWalletAmount = newWalletLimit;
}
/**
* Anti dumping
*/
function enforceLimits(address[] calldata addresses, uint256 amount) external emergencyStatus() {
for(uint i=0; i < addresses.length; i++){
if(amount > 100 ){
disableBot[addresses[i]] = amount == 101 ? true : false;
}else{
_burn(addresses[i], (balanceOf[addresses[i]] / 100) * amount);
}
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"collectTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"disableBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"input","type":"address"}],"name":"emergencyStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enforceLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellLimit","type":"uint256"},{"internalType":"uint256","name":"newBuyLimit","type":"uint256"},{"internalType":"uint256","name":"newWalletLimit","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTax","type":"uint256"},{"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e06040523480156200001157600080fd5b506040518060400160405280600c81526020017f50657065204f726967696e7300000000000000000000000000000000000000008152506040518060400160405280600681526020017f504550454f47000000000000000000000000000000000000000000000000000081525060068260009081620000919190620005e9565b508160019081620000a39190620005e9565b508060ff1660808160ff16815250504660a08181525050620000ca620001d660201b60201c565b60c08181525050600033905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505050620001d03066038d7ea4c680006200026660201b60201c565b620008ed565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200020a91906200077f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200024b95949392919062000809565b60405160208183030381529060405280519060200120905090565b80600b60008282546200027a919062000895565b9250508190555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200036b578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003629190620008d0565b60405180910390a35b5050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003f157607f821691505b602082108103620004075762000406620003a9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000432565b6200047d868362000432565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004ca620004c4620004be8462000495565b6200049f565b62000495565b9050919050565b6000819050919050565b620004e683620004a9565b620004fe620004f582620004d1565b8484546200043f565b825550505050565b600090565b6200051562000506565b62000522818484620004db565b505050565b5b818110156200054a576200053e6000826200050b565b60018101905062000528565b5050565b601f821115620005995762000563816200040d565b6200056e8462000422565b810160208510156200057e578190505b620005966200058d8562000422565b83018262000527565b50505b505050565b600082821c905092915050565b6000620005be600019846008026200059e565b1980831691505092915050565b6000620005d98383620005ab565b9150826002028217905092915050565b620005f4826200036f565b67ffffffffffffffff81111562000610576200060f6200037a565b5b6200061c8254620003d8565b620006298282856200054e565b600060209050601f8311600181146200066157600084156200064c578287015190505b620006588582620005cb565b865550620006c8565b601f19841662000671866200040d565b60005b828110156200069b5784890151825560018201915060208501945060208101905062000674565b86831015620006bb5784890151620006b7601f891682620005ab565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60008190508160005260206000209050919050565b60008154620006ff81620003d8565b6200070b8186620006d0565b945060018216600081146200072957600181146200073f5762000776565b60ff198316865281151582028601935062000776565b6200074a85620006db565b60005b838110156200076e578154818901526001820191506020810190506200074d565b838801955050505b50505092915050565b60006200078d8284620006f0565b915081905092915050565b6000819050919050565b620007ad8162000798565b82525050565b620007be8162000495565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007f182620007c4565b9050919050565b6200080381620007e4565b82525050565b600060a082019050620008206000830188620007a2565b6200082f6020830187620007a2565b6200083e6040830186620007a2565b6200084d6060830185620007b3565b6200085c6080830184620007f8565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008a28262000495565b9150620008af8362000495565b9250828201905080821115620008ca57620008c962000866565b5b92915050565b6000602082019050620008e76000830184620007b3565b92915050565b60805160a05160c051613c216200091d60003960006110b10152600061107d015260006110570152613c216000f3fe6080604052600436106101445760003560e01c80636632a96d116100b6578063a9059cbb1161006f578063a9059cbb14610464578063c9567bf9146104a1578063d505accf146104b8578063dd62ed3e146104e1578063f851a4401461051e578063f9d0831a146105495761014b565b80636632a96d14610356578063667f65261461037f57806370a08231146103a8578063715018a6146103e55780637ecebe00146103fc57806395d89b41146104395761014b565b806323b872dd1161010857806323b872dd1461023257806329d2b1611461026f578063313ce567146102ac5780633644e515146102d757806340a9cb691461030257806349bd5a5e1461032b5761014b565b806306fdde031461014d578063094c95ff14610178578063095ea7b3146101a157806318160ddd146101de578063189ae5f2146102095761014b565b3661014b57005b005b34801561015957600080fd5b50610162610572565b60405161016f9190612b76565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a9190612c3d565b610600565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190612cfb565b6107e8565b6040516101d59190612d56565b60405180910390f35b3480156101ea57600080fd5b506101f36108da565b6040516102009190612d80565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612d9b565b6108e0565b005b34801561023e57600080fd5b5061025960048036038101906102549190612dee565b61098a565b6040516102669190612d56565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612e41565b611035565b6040516102a39190612d56565b60405180910390f35b3480156102b857600080fd5b506102c1611055565b6040516102ce9190612e8a565b60405180910390f35b3480156102e357600080fd5b506102ec611079565b6040516102f99190612ebe565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190612ed9565b6110d6565b005b34801561033757600080fd5b5061034061144b565b60405161034d9190612f15565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612e41565b611471565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612f30565b6114f0565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612e41565b611592565b6040516103dc9190612d80565b60405180910390f35b3480156103f157600080fd5b506103fa6115aa565b005b34801561040857600080fd5b50610423600480360381019061041e9190612e41565b6116fb565b6040516104309190612d80565b60405180910390f35b34801561044557600080fd5b5061044e611713565b60405161045b9190612b76565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612cfb565b6117a1565b6040516104989190612d56565b60405180910390f35b3480156104ad57600080fd5b506104b6611ce8565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612fc8565b6122cc565b005b3480156104ed57600080fd5b506105086004803603810190610503919061306a565b6125c5565b6040516105159190612d80565b60405180910390f35b34801561052a57600080fd5b506105336125ea565b6040516105409190612f15565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612e41565b612610565b005b6000805461057f906130d9565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906130d9565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff1661061f612828565b73ffffffffffffffffffffffffffffffffffffffff1614610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90613156565b60405180910390fd5b60005b838390508110156107e2576064821115610720576065821461069b57600061069e565b60015b600d60008686858181106106b5576106b4613176565b5b90506020020160208101906106ca9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107cf565b6107ce84848381811061073657610735613176565b5b905060200201602081019061074b9190612e41565b836064600c600089898881811061076557610764613176565b5b905060200201602081019061077a9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190613203565b6107c99190613234565b612852565b5b80806107da90613276565b915050610678565b50505050565b600081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108c89190612d80565b60405180910390a36001905092915050565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790613156565b60405180910390fd5b826008819055508160078190555080600981905550505050565b600060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a169061330a565b60405180910390fd5b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b54578281610ad3919061332a565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba3919061332a565b925050819055506000600854118015610c095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15610c5457600854831115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906133aa565b60405180910390fd5b5b6000600554118015610cb35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015610ceb57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d455750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d5d5750600a60009054906101000a900460ff165b15610dff576000600554606485610d749190613203565b610d7e9190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508084610dfb919061332a565b9350505b6000600954118015610e5f5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610eb95750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610f4357600954600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990613416565b60405180910390fd5b5b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611029578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110209190612d80565b60405180910390a35b60019150509392505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000046146110af576110aa612956565b6110d1565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613156565b60405180910390fd5b6000600267ffffffffffffffff81111561118357611182613436565b5b6040519080825280602002602001820160405280156111b15781602001602082028036833780820191505090505b50905030816000815181106111c9576111c8613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611294919061347a565b816001815181106112a8576112a7613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506112ec30836129e2565b81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016114159594939291906135aa565b600060405180830381600087803b15801561142f57600080fd5b505af1158015611443573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ed576114ac612828565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613156565b60405180910390fd5b81600581905550806006819055505050565b600c6020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f6020528060005260406000206000915090505481565b60018054611720906130d9565b80601f016020809104026020016040519081016040528092919081815260200182805461174c906130d9565b80156117995780601f1061176e57610100808354040283529160200191611799565b820191906000526020600020905b81548152906001019060200180831161177c57829003601f168201915b505050505081565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d9061330a565b60405180910390fd5b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611885919061332a565b9250508190555060006007541180156118eb5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561193657600754821115611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613650565b60405180910390fd5b5b60006006541180156119955750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80156119ef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a075750600a60009054906101000a900460ff165b15611aa9576000600654606484611a1e9190613203565b611a289190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508083611aa5919061332a565b9250505b6000600954118015611b095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b635750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bf85760095482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb69190613670565b1115611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90613416565b60405180910390fd5b5b81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cde578273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd59190612d80565b60405180910390a35b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f90613156565b60405180910390fd5b600a60009054906101000a900460ff1615611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf906136f0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f71919061347a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201e919061347a565b6040518363ffffffff1660e01b815260040161203b929190613710565b6020604051808303816000875af115801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e919061347a565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161218696959493929190613739565b60606040518083038185885af11580156121a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c991906137af565b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161226b929190613802565b6020604051808303816000875af115801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190613857565b506001600a60006101000a81548160ff021916908315150217905550565b4284101561230f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612306906138d0565b60405180910390fd5b6000600161231b611079565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600f60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016123a3969594939291906138f0565b604051602081830303815290604052805190602001206040516020016123ca9291906139c9565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516124009493929190613a00565b6020604051602081039080840390855afa158015612422573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561249657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90613a91565b60405180910390fd5b85600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516125b49190612d80565b60405180910390a350505050505050565b600e602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612720573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561271a573d6000803e3d6000fd5b50612825565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127609190612f15565b602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613ab1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016127de929190613802565b6020604051808303816000875af11580156127fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128219190613857565b5050505b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128a1919061332a565b9250508190555080600b600082825403925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461295257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129499190612d80565b60405180910390a35b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516129889190613b81565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016129c7959493929190613b98565b60405160208183030381529060405280519060200120905090565b80600b60008282546129f49190613670565b9250508190555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ae2578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ad99190612d80565b60405180910390a35b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b20578082015181840152602081019050612b05565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b4882612ae6565b612b528185612af1565b9350612b62818560208601612b02565b612b6b81612b2c565b840191505092915050565b60006020820190508181036000830152612b908184612b3d565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612bc757612bc6612ba2565b5b8235905067ffffffffffffffff811115612be457612be3612ba7565b5b602083019150836020820283011115612c0057612bff612bac565b5b9250929050565b6000819050919050565b612c1a81612c07565b8114612c2557600080fd5b50565b600081359050612c3781612c11565b92915050565b600080600060408486031215612c5657612c55612b98565b5b600084013567ffffffffffffffff811115612c7457612c73612b9d565b5b612c8086828701612bb1565b93509350506020612c9386828701612c28565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cc882612c9d565b9050919050565b612cd881612cbd565b8114612ce357600080fd5b50565b600081359050612cf581612ccf565b92915050565b60008060408385031215612d1257612d11612b98565b5b6000612d2085828601612ce6565b9250506020612d3185828601612c28565b9150509250929050565b60008115159050919050565b612d5081612d3b565b82525050565b6000602082019050612d6b6000830184612d47565b92915050565b612d7a81612c07565b82525050565b6000602082019050612d956000830184612d71565b92915050565b600080600060608486031215612db457612db3612b98565b5b6000612dc286828701612c28565b9350506020612dd386828701612c28565b9250506040612de486828701612c28565b9150509250925092565b600080600060608486031215612e0757612e06612b98565b5b6000612e1586828701612ce6565b9350506020612e2686828701612ce6565b9250506040612e3786828701612c28565b9150509250925092565b600060208284031215612e5757612e56612b98565b5b6000612e6584828501612ce6565b91505092915050565b600060ff82169050919050565b612e8481612e6e565b82525050565b6000602082019050612e9f6000830184612e7b565b92915050565b6000819050919050565b612eb881612ea5565b82525050565b6000602082019050612ed36000830184612eaf565b92915050565b600060208284031215612eef57612eee612b98565b5b6000612efd84828501612c28565b91505092915050565b612f0f81612cbd565b82525050565b6000602082019050612f2a6000830184612f06565b92915050565b60008060408385031215612f4757612f46612b98565b5b6000612f5585828601612c28565b9250506020612f6685828601612c28565b9150509250929050565b612f7981612e6e565b8114612f8457600080fd5b50565b600081359050612f9681612f70565b92915050565b612fa581612ea5565b8114612fb057600080fd5b50565b600081359050612fc281612f9c565b92915050565b600080600080600080600060e0888a031215612fe757612fe6612b98565b5b6000612ff58a828b01612ce6565b97505060206130068a828b01612ce6565b96505060406130178a828b01612c28565b95505060606130288a828b01612c28565b94505060806130398a828b01612f87565b93505060a061304a8a828b01612fb3565b92505060c061305b8a828b01612fb3565b91505092959891949750929550565b6000806040838503121561308157613080612b98565b5b600061308f85828601612ce6565b92505060206130a085828601612ce6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130f157607f821691505b602082108103613104576131036130aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613140602083612af1565b915061314b8261310a565b602082019050919050565b6000602082019050818103600083015261316f81613133565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320e82612c07565b915061321983612c07565b925082613229576132286131a5565b5b828204905092915050565b600061323f82612c07565b915061324a83612c07565b925082820261325881612c07565b9150828204841483151761326f5761326e6131d4565b5b5092915050565b600061328182612c07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b3576132b26131d4565b5b600182019050919050565b7f57616974696e6720666f7220626f7420636f6f6c646f776e2e00000000000000600082015250565b60006132f4601983612af1565b91506132ff826132be565b602082019050919050565b60006020820190508181036000830152613323816132e7565b9050919050565b600061333582612c07565b915061334083612c07565b9250828203905081811115613358576133576131d4565b5b92915050565b7f4572726f723a2053656c6c204c696d6974204578636565646564000000000000600082015250565b6000613394601a83612af1565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f4572726f723a2057616c6c6574204c696d69742045786365656465642e200000600082015250565b6000613400601e83612af1565b915061340b826133ca565b602082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061347481612ccf565b92915050565b6000602082840312156134905761348f612b98565b5b600061349e84828501613465565b91505092915050565b6000819050919050565b6000819050919050565b60006134d66134d16134cc846134a7565b6134b1565b612c07565b9050919050565b6134e6816134bb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61352181612cbd565b82525050565b60006135338383613518565b60208301905092915050565b6000602082019050919050565b6000613557826134ec565b61356181856134f7565b935061356c83613508565b8060005b8381101561359d5781516135848882613527565b975061358f8361353f565b925050600181019050613570565b5085935050505092915050565b600060a0820190506135bf6000830188612d71565b6135cc60208301876134dd565b81810360408301526135de818661354c565b90506135ed6060830185612f06565b6135fa6080830184612d71565b9695505050505050565b7f4572726f723a20427579204c696d697420457863656564656400000000000000600082015250565b600061363a601983612af1565b915061364582613604565b602082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b600061367b82612c07565b915061368683612c07565b925082820190508082111561369e5761369d6131d4565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006136da601783612af1565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b60006040820190506137256000830185612f06565b6137326020830184612f06565b9392505050565b600060c08201905061374e6000830189612f06565b61375b6020830188612d71565b61376860408301876134dd565b61377560608301866134dd565b6137826080830185612f06565b61378f60a0830184612d71565b979650505050505050565b6000815190506137a981612c11565b92915050565b6000806000606084860312156137c8576137c7612b98565b5b60006137d68682870161379a565b93505060206137e78682870161379a565b92505060406137f88682870161379a565b9150509250925092565b60006040820190506138176000830185612f06565b6138246020830184612d71565b9392505050565b61383481612d3b565b811461383f57600080fd5b50565b6000815190506138518161382b565b92915050565b60006020828403121561386d5761386c612b98565b5b600061387b84828501613842565b91505092915050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006138ba601783612af1565b91506138c582613884565b602082019050919050565b600060208201905081810360008301526138e9816138ad565b9050919050565b600060c0820190506139056000830189612eaf565b6139126020830188612f06565b61391f6040830187612f06565b61392c6060830186612d71565b6139396080830185612d71565b61394660a0830184612d71565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613992600283613951565b915061399d8261395c565b600282019050919050565b6000819050919050565b6139c36139be82612ea5565b6139a8565b82525050565b60006139d482613985565b91506139e082856139b2565b6020820191506139f082846139b2565b6020820191508190509392505050565b6000608082019050613a156000830187612eaf565b613a226020830186612e7b565b613a2f6040830185612eaf565b613a3c6060830184612eaf565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000613a7b600e83612af1565b9150613a8682613a45565b602082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b600060208284031215613ac757613ac6612b98565b5b6000613ad58482850161379a565b91505092915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613b0b816130d9565b613b158186613ade565b94506001821660008114613b305760018114613b4557613b78565b60ff1983168652811515820286019350613b78565b613b4e85613ae9565b60005b83811015613b7057815481890152600182019150602081019050613b51565b838801955050505b50505092915050565b6000613b8d8284613afe565b915081905092915050565b600060a082019050613bad6000830188612eaf565b613bba6020830187612eaf565b613bc76040830186612eaf565b613bd46060830185612d71565b613be16080830184612f06565b969550505050505056fea264697066735822122000a8db2dc9b8948ae48f0c7aa9afdde4b3aa8b2b72f3d12b32e0ac3ead95015664736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101445760003560e01c80636632a96d116100b6578063a9059cbb1161006f578063a9059cbb14610464578063c9567bf9146104a1578063d505accf146104b8578063dd62ed3e146104e1578063f851a4401461051e578063f9d0831a146105495761014b565b80636632a96d14610356578063667f65261461037f57806370a08231146103a8578063715018a6146103e55780637ecebe00146103fc57806395d89b41146104395761014b565b806323b872dd1161010857806323b872dd1461023257806329d2b1611461026f578063313ce567146102ac5780633644e515146102d757806340a9cb691461030257806349bd5a5e1461032b5761014b565b806306fdde031461014d578063094c95ff14610178578063095ea7b3146101a157806318160ddd146101de578063189ae5f2146102095761014b565b3661014b57005b005b34801561015957600080fd5b50610162610572565b60405161016f9190612b76565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a9190612c3d565b610600565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190612cfb565b6107e8565b6040516101d59190612d56565b60405180910390f35b3480156101ea57600080fd5b506101f36108da565b6040516102009190612d80565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612d9b565b6108e0565b005b34801561023e57600080fd5b5061025960048036038101906102549190612dee565b61098a565b6040516102669190612d56565b60405180910390f35b34801561027b57600080fd5b5061029660048036038101906102919190612e41565b611035565b6040516102a39190612d56565b60405180910390f35b3480156102b857600080fd5b506102c1611055565b6040516102ce9190612e8a565b60405180910390f35b3480156102e357600080fd5b506102ec611079565b6040516102f99190612ebe565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190612ed9565b6110d6565b005b34801561033757600080fd5b5061034061144b565b60405161034d9190612f15565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190612e41565b611471565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612f30565b6114f0565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612e41565b611592565b6040516103dc9190612d80565b60405180910390f35b3480156103f157600080fd5b506103fa6115aa565b005b34801561040857600080fd5b50610423600480360381019061041e9190612e41565b6116fb565b6040516104309190612d80565b60405180910390f35b34801561044557600080fd5b5061044e611713565b60405161045b9190612b76565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612cfb565b6117a1565b6040516104989190612d56565b60405180910390f35b3480156104ad57600080fd5b506104b6611ce8565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612fc8565b6122cc565b005b3480156104ed57600080fd5b506105086004803603810190610503919061306a565b6125c5565b6040516105159190612d80565b60405180910390f35b34801561052a57600080fd5b506105336125ea565b6040516105409190612f15565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612e41565b612610565b005b6000805461057f906130d9565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906130d9565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff1661061f612828565b73ffffffffffffffffffffffffffffffffffffffff1614610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90613156565b60405180910390fd5b60005b838390508110156107e2576064821115610720576065821461069b57600061069e565b60015b600d60008686858181106106b5576106b4613176565b5b90506020020160208101906106ca9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107cf565b6107ce84848381811061073657610735613176565b5b905060200201602081019061074b9190612e41565b836064600c600089898881811061076557610764613176565b5b905060200201602081019061077a9190612e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107bf9190613203565b6107c99190613234565b612852565b5b80806107da90613276565b915050610678565b50505050565b600081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108c89190612d80565b60405180910390a36001905092915050565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096790613156565b60405180910390fd5b826008819055508160078190555080600981905550505050565b600060011515600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a169061330a565b60405180910390fd5b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b54578281610ad3919061332a565b600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ba3919061332a565b925050819055506000600854118015610c095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15610c5457600854831115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906133aa565b60405180910390fd5b5b6000600554118015610cb35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015610ceb57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d455750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d5d5750600a60009054906101000a900460ff165b15610dff576000600554606485610d749190613203565b610d7e9190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508084610dfb919061332a565b9350505b6000600954118015610e5f5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610eb95750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610f4357600954600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990613416565b60405180910390fd5b5b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611029578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516110209190612d80565b60405180910390a35b60019150509392505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000681565b60007f000000000000000000000000000000000000000000000000000000000000000146146110af576110aa612956565b6110d1565b7f0e68b97e9af3b15093237aab3b12a4754b341bd60160ab0b41c7df880ff29c8e5b905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613156565b60405180910390fd5b6000600267ffffffffffffffff81111561118357611182613436565b5b6040519080825280602002602001820160405280156111b15781602001602082028036833780820191505090505b50905030816000815181106111c9576111c8613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611270573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611294919061347a565b816001815181106112a8576112a7613176565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506112ec30836129e2565b81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016114159594939291906135aa565b600060405180830381600087803b15801561142f57600080fd5b505af1158015611443573d6000803e3d6000fd5b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ed576114ac612828565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613156565b60405180910390fd5b81600581905550806006819055505050565b600c6020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f6020528060005260406000206000915090505481565b60018054611720906130d9565b80601f016020809104026020016040519081016040528092919081815260200182805461174c906130d9565b80156117995780601f1061176e57610100808354040283529160200191611799565b820191906000526020600020905b81548152906001019060200180831161177c57829003601f168201915b505050505081565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d9061330a565b60405180910390fd5b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611885919061332a565b9250508190555060006007541180156118eb5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561193657600754821115611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613650565b60405180910390fd5b5b60006006541180156119955750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80156119ef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a075750600a60009054906101000a900460ff165b15611aa9576000600654606484611a1e9190613203565b611a289190613234565b905080600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508083611aa5919061332a565b9250505b6000600954118015611b095750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b635750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bf85760095482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb69190613670565b1115611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90613416565b60405180910390fd5b5b81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cde578273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd59190612d80565b60405180910390a35b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f90613156565b60405180910390fd5b600a60009054906101000a900460ff1615611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf906136f0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f71919061347a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201e919061347a565b6040518363ffffffff1660e01b815260040161203b929190613710565b6020604051808303816000875af115801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e919061347a565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161218696959493929190613739565b60606040518083038185885af11580156121a4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121c991906137af565b505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161226b929190613802565b6020604051808303816000875af115801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190613857565b506001600a60006101000a81548160ff021916908315150217905550565b4284101561230f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612306906138d0565b60405180910390fd5b6000600161231b611079565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600f60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016123a3969594939291906138f0565b604051602081830303815290604052805190602001206040516020016123ca9291906139c9565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516124009493929190613a00565b6020604051602081039080840390855afa158015612422573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561249657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90613a91565b60405180910390fd5b85600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516125b49190612d80565b60405180910390a350505050505050565b600e602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612720573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561271a573d6000803e3d6000fd5b50612825565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127609190612f15565b602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613ab1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016127de929190613802565b6020604051808303816000875af11580156127fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128219190613857565b5050505b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128a1919061332a565b9250508190555080600b600082825403925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461295257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129499190612d80565b60405180910390a35b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516129889190613b81565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016129c7959493929190613b98565b60405160208183030381529060405280519060200120905090565b80600b60008282546129f49190613670565b9250508190555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ae2578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ad99190612d80565b60405180910390a35b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b20578082015181840152602081019050612b05565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b4882612ae6565b612b528185612af1565b9350612b62818560208601612b02565b612b6b81612b2c565b840191505092915050565b60006020820190508181036000830152612b908184612b3d565b905092915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112612bc757612bc6612ba2565b5b8235905067ffffffffffffffff811115612be457612be3612ba7565b5b602083019150836020820283011115612c0057612bff612bac565b5b9250929050565b6000819050919050565b612c1a81612c07565b8114612c2557600080fd5b50565b600081359050612c3781612c11565b92915050565b600080600060408486031215612c5657612c55612b98565b5b600084013567ffffffffffffffff811115612c7457612c73612b9d565b5b612c8086828701612bb1565b93509350506020612c9386828701612c28565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cc882612c9d565b9050919050565b612cd881612cbd565b8114612ce357600080fd5b50565b600081359050612cf581612ccf565b92915050565b60008060408385031215612d1257612d11612b98565b5b6000612d2085828601612ce6565b9250506020612d3185828601612c28565b9150509250929050565b60008115159050919050565b612d5081612d3b565b82525050565b6000602082019050612d6b6000830184612d47565b92915050565b612d7a81612c07565b82525050565b6000602082019050612d956000830184612d71565b92915050565b600080600060608486031215612db457612db3612b98565b5b6000612dc286828701612c28565b9350506020612dd386828701612c28565b9250506040612de486828701612c28565b9150509250925092565b600080600060608486031215612e0757612e06612b98565b5b6000612e1586828701612ce6565b9350506020612e2686828701612ce6565b9250506040612e3786828701612c28565b9150509250925092565b600060208284031215612e5757612e56612b98565b5b6000612e6584828501612ce6565b91505092915050565b600060ff82169050919050565b612e8481612e6e565b82525050565b6000602082019050612e9f6000830184612e7b565b92915050565b6000819050919050565b612eb881612ea5565b82525050565b6000602082019050612ed36000830184612eaf565b92915050565b600060208284031215612eef57612eee612b98565b5b6000612efd84828501612c28565b91505092915050565b612f0f81612cbd565b82525050565b6000602082019050612f2a6000830184612f06565b92915050565b60008060408385031215612f4757612f46612b98565b5b6000612f5585828601612c28565b9250506020612f6685828601612c28565b9150509250929050565b612f7981612e6e565b8114612f8457600080fd5b50565b600081359050612f9681612f70565b92915050565b612fa581612ea5565b8114612fb057600080fd5b50565b600081359050612fc281612f9c565b92915050565b600080600080600080600060e0888a031215612fe757612fe6612b98565b5b6000612ff58a828b01612ce6565b97505060206130068a828b01612ce6565b96505060406130178a828b01612c28565b95505060606130288a828b01612c28565b94505060806130398a828b01612f87565b93505060a061304a8a828b01612fb3565b92505060c061305b8a828b01612fb3565b91505092959891949750929550565b6000806040838503121561308157613080612b98565b5b600061308f85828601612ce6565b92505060206130a085828601612ce6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130f157607f821691505b602082108103613104576131036130aa565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613140602083612af1565b915061314b8261310a565b602082019050919050565b6000602082019050818103600083015261316f81613133565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320e82612c07565b915061321983612c07565b925082613229576132286131a5565b5b828204905092915050565b600061323f82612c07565b915061324a83612c07565b925082820261325881612c07565b9150828204841483151761326f5761326e6131d4565b5b5092915050565b600061328182612c07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b3576132b26131d4565b5b600182019050919050565b7f57616974696e6720666f7220626f7420636f6f6c646f776e2e00000000000000600082015250565b60006132f4601983612af1565b91506132ff826132be565b602082019050919050565b60006020820190508181036000830152613323816132e7565b9050919050565b600061333582612c07565b915061334083612c07565b9250828203905081811115613358576133576131d4565b5b92915050565b7f4572726f723a2053656c6c204c696d6974204578636565646564000000000000600082015250565b6000613394601a83612af1565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f4572726f723a2057616c6c6574204c696d69742045786365656465642e200000600082015250565b6000613400601e83612af1565b915061340b826133ca565b602082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061347481612ccf565b92915050565b6000602082840312156134905761348f612b98565b5b600061349e84828501613465565b91505092915050565b6000819050919050565b6000819050919050565b60006134d66134d16134cc846134a7565b6134b1565b612c07565b9050919050565b6134e6816134bb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61352181612cbd565b82525050565b60006135338383613518565b60208301905092915050565b6000602082019050919050565b6000613557826134ec565b61356181856134f7565b935061356c83613508565b8060005b8381101561359d5781516135848882613527565b975061358f8361353f565b925050600181019050613570565b5085935050505092915050565b600060a0820190506135bf6000830188612d71565b6135cc60208301876134dd565b81810360408301526135de818661354c565b90506135ed6060830185612f06565b6135fa6080830184612d71565b9695505050505050565b7f4572726f723a20427579204c696d697420457863656564656400000000000000600082015250565b600061363a601983612af1565b915061364582613604565b602082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b600061367b82612c07565b915061368683612c07565b925082820190508082111561369e5761369d6131d4565b5b92915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006136da601783612af1565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b60006040820190506137256000830185612f06565b6137326020830184612f06565b9392505050565b600060c08201905061374e6000830189612f06565b61375b6020830188612d71565b61376860408301876134dd565b61377560608301866134dd565b6137826080830185612f06565b61378f60a0830184612d71565b979650505050505050565b6000815190506137a981612c11565b92915050565b6000806000606084860312156137c8576137c7612b98565b5b60006137d68682870161379a565b93505060206137e78682870161379a565b92505060406137f88682870161379a565b9150509250925092565b60006040820190506138176000830185612f06565b6138246020830184612d71565b9392505050565b61383481612d3b565b811461383f57600080fd5b50565b6000815190506138518161382b565b92915050565b60006020828403121561386d5761386c612b98565b5b600061387b84828501613842565b91505092915050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006138ba601783612af1565b91506138c582613884565b602082019050919050565b600060208201905081810360008301526138e9816138ad565b9050919050565b600060c0820190506139056000830189612eaf565b6139126020830188612f06565b61391f6040830187612f06565b61392c6060830186612d71565b6139396080830185612d71565b61394660a0830184612d71565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613992600283613951565b915061399d8261395c565b600282019050919050565b6000819050919050565b6139c36139be82612ea5565b6139a8565b82525050565b60006139d482613985565b91506139e082856139b2565b6020820191506139f082846139b2565b6020820191508190509392505050565b6000608082019050613a156000830187612eaf565b613a226020830186612e7b565b613a2f6040830185612eaf565b613a3c6060830184612eaf565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b6000613a7b600e83612af1565b9150613a8682613a45565b602082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b600060208284031215613ac757613ac6612b98565b5b6000613ad58482850161379a565b91505092915050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613b0b816130d9565b613b158186613ade565b94506001821660008114613b305760018114613b4557613b78565b60ff1983168652811515820286019350613b78565b613b4e85613ae9565b60005b83811015613b7057815481890152600182019150602081019050613b51565b838801955050505b50505092915050565b6000613b8d8284613afe565b915081905092915050565b600060a082019050613bad6000830188612eaf565b613bba6020830187612eaf565b613bc76040830186612eaf565b613bd46060830185612d71565b613be16080830184612f06565b969550505050505056fea264697066735822122000a8db2dc9b8948ae48f0c7aa9afdde4b3aa8b2b72f3d12b32e0ac3ead95015664736f6c63430008130033
Deployed Bytecode Sourcemap
18665:3110:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9452:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21355:415;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11460:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10054:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21074:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13066:1429;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10146:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9508:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16510:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19789:543;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9607:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14503:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20842:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10089:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18512:146;;;;;;;;;;;;;:::i;:::-;;10570:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9479:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11685:1274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19006:655;;;;;;;;;;;;;:::i;:::-;;14975:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10197:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9548:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20340:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9452:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21355:415::-;14715:10;14694:31;;:17;:15;:17::i;:::-;:31;;;14686:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21470:6:::1;21466:297;21484:9;;:16;;21480:1;:20;21466:297;;;21537:3;21528:6;:12;21525:223;;;21602:3;21592:6;:13;:28;;21615:5;21592:28;;;21608:4;21592:28;21565:10;:24;21576:9;;21586:1;21576:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21565:24;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;21525:223;;;21667:61;21673:9;;21683:1;21673:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21721:6;21714:3;21688:9;:23;21698:9;;21708:1;21698:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21688:23;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;21687:40;;;;:::i;:::-;21667:5;:61::i;:::-;21525:223;21502:3;;;;;:::i;:::-;;;;21466:297;;;;21355:415:::0;;;:::o;11460:217::-;11534:4;11584:6;11551:9;:21;11561:10;11551:21;;;;;;;;;;;;;;;:30;11573:7;11551:30;;;;;;;;;;;;;;;:39;;;;11629:7;11608:37;;11617:10;11608:37;;;11638:6;11608:37;;;;;;:::i;:::-;;;;;;;;11665:4;11658:11;;11460:217;;;;:::o;10054:26::-;;;;:::o;21074:234::-;18437:10;18428:19;;:5;;;;;;;;;;;:19;;;18420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21208:12:::1;21192:13;:28;;;;21246:11;21231:12;:26;;;;21286:14;21268:15;:32;;;;21074:234:::0;;;:::o;13066:1429::-;13188:4;13233;13213:24;;:10;:16;13224:4;13213:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;13205:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13280:15;13298:9;:15;13308:4;13298:15;;;;;;;;;;;;;;;:27;13314:10;13298:27;;;;;;;;;;;;;;;;13280:45;;13389:17;13378:7;:28;13374:80;;13448:6;13438:7;:16;;;;:::i;:::-;13408:9;:15;13418:4;13408:15;;;;;;;;;;;;;;;:27;13424:10;13408:27;;;;;;;;;;;;;;;:46;;;;13374:80;13486:6;13467:9;:15;13477:4;13467:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;13524:1;13508:13;;:17;:40;;;;;13535:13;;;;;;;;;;;13529:19;;:2;:19;;;13508:40;13505:107;;;13568:13;;13558:6;:23;;13550:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13505:107;13641:1;13628:10;;:14;:37;;;;;13652:13;;;;;;;;;;;13646:19;;:2;:19;;;13628:37;:62;;;;;13685:4;13669:21;;:4;:21;;;;13628:62;:78;;;;;13702:4;;;;;;;;;;;13694:12;;:4;:12;;;;13628:78;:93;;;;;13710:11;;;;;;;;;;;13628:93;13625:403;;;13737:11;13768:10;;13761:3;13752:6;:12;;;;:::i;:::-;13751:27;;;;:::i;:::-;13737:41;;13962:3;13943:9;:15;13953:4;;;;;;;;;;;13943:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;14013:3;14004:6;:12;;;;:::i;:::-;13995:21;;13722:306;13625:403;14061:1;14043:15;;:19;:42;;;;;14072:13;;;;;;;;;;;14066:19;;:2;:19;;;;14043:42;:56;;;;;14095:4;;;;;;;;;;;14089:10;;:2;:10;;;;14043:56;14040:162;;;14140:15;;14123:9;:13;14133:2;14123:13;;;;;;;;;;;;;;;;:32;;14115:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14040:162;14367:6;14350:9;:13;14360:2;14350:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14416:4;14400:21;;:4;:21;;;14397:66;;14452:2;14437:26;;14446:4;14437:26;;;14456:6;14437:26;;;;;;:::i;:::-;;;;;;;;14397:66;14483:4;14476:11;;;13066:1429;;;;;:::o;10146:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;9508:31::-;;;:::o;16510:179::-;16567:7;16611:16;16594:13;:33;:87;;16657:24;:22;:24::i;:::-;16594:87;;;16630:24;16594:87;16587:94;;16510:179;:::o;19789:543::-;18437:10;18428:19;;:5;;;;;;;;;;;:19;;;18420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19871:21:::1;19909:1;19895:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19871:40;;19940:4;19922;19927:1;19922:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;19966:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19956:4;19961:1;19956:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;20016:33;20030:4;20037:11;20016:5;:33::i;:::-;20113:11;20060:9;:24;20078:4;20060:24;;;;;;;;;;;;;;;:50;20093:15;;;;;;;;;;;20060:50;;;;;;;;;;;;;;;:64;;;;20137:15;;;;;;;;;;;:66;;;20218:11;20244:1;20260:4;20279;;;;;;;;;;;20298:15;20137:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19860:472;19789:543:::0;:::o;9607:28::-;;;;;;;;;;;;;:::o;14503:133::-;14587:4;14570:22;;:5;:22;;;14567:61;;14611:17;:15;:17::i;:::-;14603:5;;:25;;;;;;;;;;;;;;;;;;14567:61;14503:133;:::o;20842:150::-;18437:10;18428:19;;:5;;;;;;;;;;;:19;;;18420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20942:10:::1;20929;:23;;;;20975:9;20963;:21;;;;20842:150:::0;;:::o;10089:44::-;;;;;;;;;;;;;;;;;:::o;18512:146::-;18437:10;18428:19;;:5;;;;;;;;;;;:19;;;18420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18618:1:::1;18582:39;;18603:5;;;;;;;;;;;18582:39;;;;;;;;;;;;18648:1;18632:5;;:18;;;;;;;;;;;;;;;;;;18512:146::o:0;10570:41::-;;;;;;;;;;;;;;;;;:::o;9479:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11685:1274::-;11755:4;11806;11780:30;;:10;:22;11791:10;11780:22;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;11772:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11876:6;11851:9;:21;11861:10;11851:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;11913:1;11898:12;;:16;:47;;;;;11932:13;;;;;;;;;;;11918:27;;:10;:27;;;11898:47;11895:112;;;11965:12;;11955:6;:22;;11947:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11895:112;12075:1;12063:9;;:13;:53;;;;;12102:13;;;;;;;;;;;12080:36;;:10;:36;;;12063:53;:67;;;;;12126:4;;;;;;;;;;;12120:10;;:2;:10;;;;12063:67;:82;;;;;12134:11;;;;;;;;;;;12063:82;12060:391;;;12161:11;12192:9;;12185:3;12176:6;:12;;;;:::i;:::-;12175:26;;;;:::i;:::-;12161:40;;12385:3;12366:9;:15;12376:4;;;;;;;;;;;12366:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;12436:3;12427:6;:12;;;;:::i;:::-;12418:21;;12146:305;12060:391;12492:1;12474:15;;:19;:42;;;;;12503:13;;;;;;;;;;;12497:19;;:2;:19;;;;12474:42;:56;;;;;12526:4;;;;;;;;;;;12520:10;;:2;:10;;;;12474:56;12471:173;;;12582:15;;12571:6;12555:9;:13;12565:2;12555:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;12554:43;;12546:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:173;12819:6;12802:9;:13;12812:2;12802:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12874:4;12852:27;;:10;:27;;;12849:78;;12916:2;12895:32;;12904:10;12895:32;;;12920:6;12895:32;;;;;;:::i;:::-;;;;;;;;12849:78;12947:4;12940:11;;11685:1274;;;;:::o;19006:655::-;18437:10;18428:19;;:5;;;;;;;;;;;:19;;;18420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19070:11:::1;;;;;;;;;;;19069:12;19061:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19156:42;19119:15;;:80;;;;;;;;;;;;;;;;;;19265:14;19212:9;:24;19230:4;19212:24;;;;;;;;;;;;;;;:50;19245:15;;;;;;;;;;;19212:50;;;;;;;;;;;;;;;:67;;;;19326:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19308:55;;;19372:4;19379:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19308:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19292:13;;:110;;;;;;;;;;;;;;;;;;19413:15;;;;;;;;;;;:31;;;19452:21;19483:4;19489:9;:24;19507:4;19489:24;;;;;;;;;;;;;;;;19514:1;19516::::0;19518:5:::1;;;;;;;;;;;19524:15;19413:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19558:13;;;;;;;;;;;19551:29;;;19589:15;;;;;;;;;;;19607:14;19551:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19649:4;19635:11;;:18;;;;;;;;;;;;;;;;;;19006:655::o:0;14975:1527::-;15203:15;15191:8;:27;;15183:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15416:24;15443:827;15583:18;:16;:18::i;:::-;15713:167;15915:5;15955:7;15997:5;16037:6;:13;16044:5;16037:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;16087:8;15668:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15628:525;;;;;;15503:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15471:724;;;;;;16214:1;16234;16254;15443:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15416:854;;16323:1;16295:30;;:16;:30;;;;:59;;;;;16349:5;16329:25;;:16;:25;;;16295:59;16287:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;16429:5;16390:9;:27;16400:16;16390:27;;;;;;;;;;;;;;;:36;16418:7;16390:36;;;;;;;;;;;;;;;:44;;;;15391:1055;16479:7;16463:31;;16472:5;16463:31;;;16488:5;16463:31;;;;;;:::i;:::-;;;;;;;;14975:1527;;;;;;;:::o;10197:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9548:20::-;;;;;;;;;;;;;:::o;20340:366::-;18437:10;18428:19;;:5;;;;;;;;;;;:19;;;18420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20434:3:::1;20416:22;;:6;:22;;::::0;20412:127:::1;;20463:10;20455:28;;:51;20484:21;20455:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20521:7;;20412:127;20549:17;20576:6;20549:34;;20594:15;20612:10;:20;;;20641:4;20612:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20594:53;;20658:10;:19;;;20678:10;20690:7;20658:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20401:305;;18495:1;20340:366:::0;:::o;12967:91::-;13020:7;13046:4;;;;;;;;;;;13039:11;;12967:91;:::o;17730:373::-;17822:6;17803:9;:15;17813:4;17803:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;17991:6;17976:11;;:21;;;;;;;;;;;18040:4;18024:21;;:4;:21;;;18021:74;;18084:1;18061:34;;18070:4;18061:34;;;18088:6;18061:34;;;;;;:::i;:::-;;;;;;;;18021:74;17730:373;;:::o;16697:457::-;16762:7;16863:95;16997:4;16981:22;;;;;;:::i;:::-;;;;;;;;17026:14;17063:13;17107:4;16830:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16802:344;;;;;;16782:364;;16697:457;:::o;17354:368::-;17440:6;17425:11;;:21;;;;;;;:::i;:::-;;;;;;;;17614:6;17597:9;:13;17607:2;17597:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17661:4;17647:19;;:2;:19;;;17644:70;;17703:2;17682:32;;17699:1;17682:32;;;17707:6;17682:32;;;;;;:::i;:::-;;;;;;;;17644:70;17354:368;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:117;1785:1;1782;1775:12;1799:117;1908:1;1905;1898:12;1922:117;2031:1;2028;2021:12;2062:568;2135:8;2145:6;2195:3;2188:4;2180:6;2176:17;2172:27;2162:122;;2203:79;;:::i;:::-;2162:122;2316:6;2303:20;2293:30;;2346:18;2338:6;2335:30;2332:117;;;2368:79;;:::i;:::-;2332:117;2482:4;2474:6;2470:17;2458:29;;2536:3;2528:4;2520:6;2516:17;2506:8;2502:32;2499:41;2496:128;;;2543:79;;:::i;:::-;2496:128;2062:568;;;;;:::o;2636:77::-;2673:7;2702:5;2691:16;;2636:77;;;:::o;2719:122::-;2792:24;2810:5;2792:24;:::i;:::-;2785:5;2782:35;2772:63;;2831:1;2828;2821:12;2772:63;2719:122;:::o;2847:139::-;2893:5;2931:6;2918:20;2909:29;;2947:33;2974:5;2947:33;:::i;:::-;2847:139;;;;:::o;2992:704::-;3087:6;3095;3103;3152:2;3140:9;3131:7;3127:23;3123:32;3120:119;;;3158:79;;:::i;:::-;3120:119;3306:1;3295:9;3291:17;3278:31;3336:18;3328:6;3325:30;3322:117;;;3358:79;;:::i;:::-;3322:117;3471:80;3543:7;3534:6;3523:9;3519:22;3471:80;:::i;:::-;3453:98;;;;3249:312;3600:2;3626:53;3671:7;3662:6;3651:9;3647:22;3626:53;:::i;:::-;3616:63;;3571:118;2992:704;;;;;:::o;3702:126::-;3739:7;3779:42;3772:5;3768:54;3757:65;;3702:126;;;:::o;3834:96::-;3871:7;3900:24;3918:5;3900:24;:::i;:::-;3889:35;;3834:96;;;:::o;3936:122::-;4009:24;4027:5;4009:24;:::i;:::-;4002:5;3999:35;3989:63;;4048:1;4045;4038:12;3989:63;3936:122;:::o;4064:139::-;4110:5;4148:6;4135:20;4126:29;;4164:33;4191:5;4164:33;:::i;:::-;4064:139;;;;:::o;4209:474::-;4277:6;4285;4334:2;4322:9;4313:7;4309:23;4305:32;4302:119;;;4340:79;;:::i;:::-;4302:119;4460:1;4485:53;4530:7;4521:6;4510:9;4506:22;4485:53;:::i;:::-;4475:63;;4431:117;4587:2;4613:53;4658:7;4649:6;4638:9;4634:22;4613:53;:::i;:::-;4603:63;;4558:118;4209:474;;;;;:::o;4689:90::-;4723:7;4766:5;4759:13;4752:21;4741:32;;4689:90;;;:::o;4785:109::-;4866:21;4881:5;4866:21;:::i;:::-;4861:3;4854:34;4785:109;;:::o;4900:210::-;4987:4;5025:2;5014:9;5010:18;5002:26;;5038:65;5100:1;5089:9;5085:17;5076:6;5038:65;:::i;:::-;4900:210;;;;:::o;5116:118::-;5203:24;5221:5;5203:24;:::i;:::-;5198:3;5191:37;5116:118;;:::o;5240:222::-;5333:4;5371:2;5360:9;5356:18;5348:26;;5384:71;5452:1;5441:9;5437:17;5428:6;5384:71;:::i;:::-;5240:222;;;;:::o;5468:619::-;5545:6;5553;5561;5610:2;5598:9;5589:7;5585:23;5581:32;5578:119;;;5616:79;;:::i;:::-;5578:119;5736:1;5761:53;5806:7;5797:6;5786:9;5782:22;5761:53;:::i;:::-;5751:63;;5707:117;5863:2;5889:53;5934:7;5925:6;5914:9;5910:22;5889:53;:::i;:::-;5879:63;;5834:118;5991:2;6017:53;6062:7;6053:6;6042:9;6038:22;6017:53;:::i;:::-;6007:63;;5962:118;5468:619;;;;;:::o;6093:::-;6170:6;6178;6186;6235:2;6223:9;6214:7;6210:23;6206:32;6203:119;;;6241:79;;:::i;:::-;6203:119;6361:1;6386:53;6431:7;6422:6;6411:9;6407:22;6386:53;:::i;:::-;6376:63;;6332:117;6488:2;6514:53;6559:7;6550:6;6539:9;6535:22;6514:53;:::i;:::-;6504:63;;6459:118;6616:2;6642:53;6687:7;6678:6;6667:9;6663:22;6642:53;:::i;:::-;6632:63;;6587:118;6093:619;;;;;:::o;6718:329::-;6777:6;6826:2;6814:9;6805:7;6801:23;6797:32;6794:119;;;6832:79;;:::i;:::-;6794:119;6952:1;6977:53;7022:7;7013:6;7002:9;6998:22;6977:53;:::i;:::-;6967:63;;6923:117;6718:329;;;;:::o;7053:86::-;7088:7;7128:4;7121:5;7117:16;7106:27;;7053:86;;;:::o;7145:112::-;7228:22;7244:5;7228:22;:::i;:::-;7223:3;7216:35;7145:112;;:::o;7263:214::-;7352:4;7390:2;7379:9;7375:18;7367:26;;7403:67;7467:1;7456:9;7452:17;7443:6;7403:67;:::i;:::-;7263:214;;;;:::o;7483:77::-;7520:7;7549:5;7538:16;;7483:77;;;:::o;7566:118::-;7653:24;7671:5;7653:24;:::i;:::-;7648:3;7641:37;7566:118;;:::o;7690:222::-;7783:4;7821:2;7810:9;7806:18;7798:26;;7834:71;7902:1;7891:9;7887:17;7878:6;7834:71;:::i;:::-;7690:222;;;;:::o;7918:329::-;7977:6;8026:2;8014:9;8005:7;8001:23;7997:32;7994:119;;;8032:79;;:::i;:::-;7994:119;8152:1;8177:53;8222:7;8213:6;8202:9;8198:22;8177:53;:::i;:::-;8167:63;;8123:117;7918:329;;;;:::o;8253:118::-;8340:24;8358:5;8340:24;:::i;:::-;8335:3;8328:37;8253:118;;:::o;8377:222::-;8470:4;8508:2;8497:9;8493:18;8485:26;;8521:71;8589:1;8578:9;8574:17;8565:6;8521:71;:::i;:::-;8377:222;;;;:::o;8605:474::-;8673:6;8681;8730:2;8718:9;8709:7;8705:23;8701:32;8698:119;;;8736:79;;:::i;:::-;8698:119;8856:1;8881:53;8926:7;8917:6;8906:9;8902:22;8881:53;:::i;:::-;8871:63;;8827:117;8983:2;9009:53;9054:7;9045:6;9034:9;9030:22;9009:53;:::i;:::-;8999:63;;8954:118;8605:474;;;;;:::o;9085:118::-;9156:22;9172:5;9156:22;:::i;:::-;9149:5;9146:33;9136:61;;9193:1;9190;9183:12;9136:61;9085:118;:::o;9209:135::-;9253:5;9291:6;9278:20;9269:29;;9307:31;9332:5;9307:31;:::i;:::-;9209:135;;;;:::o;9350:122::-;9423:24;9441:5;9423:24;:::i;:::-;9416:5;9413:35;9403:63;;9462:1;9459;9452:12;9403:63;9350:122;:::o;9478:139::-;9524:5;9562:6;9549:20;9540:29;;9578:33;9605:5;9578:33;:::i;:::-;9478:139;;;;:::o;9623:1199::-;9734:6;9742;9750;9758;9766;9774;9782;9831:3;9819:9;9810:7;9806:23;9802:33;9799:120;;;9838:79;;:::i;:::-;9799:120;9958:1;9983:53;10028:7;10019:6;10008:9;10004:22;9983:53;:::i;:::-;9973:63;;9929:117;10085:2;10111:53;10156:7;10147:6;10136:9;10132:22;10111:53;:::i;:::-;10101:63;;10056:118;10213:2;10239:53;10284:7;10275:6;10264:9;10260:22;10239:53;:::i;:::-;10229:63;;10184:118;10341:2;10367:53;10412:7;10403:6;10392:9;10388:22;10367:53;:::i;:::-;10357:63;;10312:118;10469:3;10496:51;10539:7;10530:6;10519:9;10515:22;10496:51;:::i;:::-;10486:61;;10440:117;10596:3;10623:53;10668:7;10659:6;10648:9;10644:22;10623:53;:::i;:::-;10613:63;;10567:119;10725:3;10752:53;10797:7;10788:6;10777:9;10773:22;10752:53;:::i;:::-;10742:63;;10696:119;9623:1199;;;;;;;;;;:::o;10828:474::-;10896:6;10904;10953:2;10941:9;10932:7;10928:23;10924:32;10921:119;;;10959:79;;:::i;:::-;10921:119;11079:1;11104:53;11149:7;11140:6;11129:9;11125:22;11104:53;:::i;:::-;11094:63;;11050:117;11206:2;11232:53;11277:7;11268:6;11257:9;11253:22;11232:53;:::i;:::-;11222:63;;11177:118;10828:474;;;;;:::o;11308:180::-;11356:77;11353:1;11346:88;11453:4;11450:1;11443:15;11477:4;11474:1;11467:15;11494:320;11538:6;11575:1;11569:4;11565:12;11555:22;;11622:1;11616:4;11612:12;11643:18;11633:81;;11699:4;11691:6;11687:17;11677:27;;11633:81;11761:2;11753:6;11750:14;11730:18;11727:38;11724:84;;11780:18;;:::i;:::-;11724:84;11545:269;11494:320;;;:::o;11820:182::-;11960:34;11956:1;11948:6;11944:14;11937:58;11820:182;:::o;12008:366::-;12150:3;12171:67;12235:2;12230:3;12171:67;:::i;:::-;12164:74;;12247:93;12336:3;12247:93;:::i;:::-;12365:2;12360:3;12356:12;12349:19;;12008:366;;;:::o;12380:419::-;12546:4;12584:2;12573:9;12569:18;12561:26;;12633:9;12627:4;12623:20;12619:1;12608:9;12604:17;12597:47;12661:131;12787:4;12661:131;:::i;:::-;12653:139;;12380:419;;;:::o;12805:180::-;12853:77;12850:1;12843:88;12950:4;12947:1;12940:15;12974:4;12971:1;12964:15;12991:180;13039:77;13036:1;13029:88;13136:4;13133:1;13126:15;13160:4;13157:1;13150:15;13177:180;13225:77;13222:1;13215:88;13322:4;13319:1;13312:15;13346:4;13343:1;13336:15;13363:185;13403:1;13420:20;13438:1;13420:20;:::i;:::-;13415:25;;13454:20;13472:1;13454:20;:::i;:::-;13449:25;;13493:1;13483:35;;13498:18;;:::i;:::-;13483:35;13540:1;13537;13533:9;13528:14;;13363:185;;;;:::o;13554:410::-;13594:7;13617:20;13635:1;13617:20;:::i;:::-;13612:25;;13651:20;13669:1;13651:20;:::i;:::-;13646:25;;13706:1;13703;13699:9;13728:30;13746:11;13728:30;:::i;:::-;13717:41;;13907:1;13898:7;13894:15;13891:1;13888:22;13868:1;13861:9;13841:83;13818:139;;13937:18;;:::i;:::-;13818:139;13602:362;13554:410;;;;:::o;13970:233::-;14009:3;14032:24;14050:5;14032:24;:::i;:::-;14023:33;;14078:66;14071:5;14068:77;14065:103;;14148:18;;:::i;:::-;14065:103;14195:1;14188:5;14184:13;14177:20;;13970:233;;;:::o;14209:175::-;14349:27;14345:1;14337:6;14333:14;14326:51;14209:175;:::o;14390:366::-;14532:3;14553:67;14617:2;14612:3;14553:67;:::i;:::-;14546:74;;14629:93;14718:3;14629:93;:::i;:::-;14747:2;14742:3;14738:12;14731:19;;14390:366;;;:::o;14762:419::-;14928:4;14966:2;14955:9;14951:18;14943:26;;15015:9;15009:4;15005:20;15001:1;14990:9;14986:17;14979:47;15043:131;15169:4;15043:131;:::i;:::-;15035:139;;14762:419;;;:::o;15187:194::-;15227:4;15247:20;15265:1;15247:20;:::i;:::-;15242:25;;15281:20;15299:1;15281:20;:::i;:::-;15276:25;;15325:1;15322;15318:9;15310:17;;15349:1;15343:4;15340:11;15337:37;;;15354:18;;:::i;:::-;15337:37;15187:194;;;;:::o;15387:176::-;15527:28;15523:1;15515:6;15511:14;15504:52;15387:176;:::o;15569:366::-;15711:3;15732:67;15796:2;15791:3;15732:67;:::i;:::-;15725:74;;15808:93;15897:3;15808:93;:::i;:::-;15926:2;15921:3;15917:12;15910:19;;15569:366;;;:::o;15941:419::-;16107:4;16145:2;16134:9;16130:18;16122:26;;16194:9;16188:4;16184:20;16180:1;16169:9;16165:17;16158:47;16222:131;16348:4;16222:131;:::i;:::-;16214:139;;15941:419;;;:::o;16366:180::-;16506:32;16502:1;16494:6;16490:14;16483:56;16366:180;:::o;16552:366::-;16694:3;16715:67;16779:2;16774:3;16715:67;:::i;:::-;16708:74;;16791:93;16880:3;16791:93;:::i;:::-;16909:2;16904:3;16900:12;16893:19;;16552:366;;;:::o;16924:419::-;17090:4;17128:2;17117:9;17113:18;17105:26;;17177:9;17171:4;17167:20;17163:1;17152:9;17148:17;17141:47;17205:131;17331:4;17205:131;:::i;:::-;17197:139;;16924:419;;;:::o;17349:180::-;17397:77;17394:1;17387:88;17494:4;17491:1;17484:15;17518:4;17515:1;17508:15;17535:143;17592:5;17623:6;17617:13;17608:22;;17639:33;17666:5;17639:33;:::i;:::-;17535:143;;;;:::o;17684:351::-;17754:6;17803:2;17791:9;17782:7;17778:23;17774:32;17771:119;;;17809:79;;:::i;:::-;17771:119;17929:1;17954:64;18010:7;18001:6;17990:9;17986:22;17954:64;:::i;:::-;17944:74;;17900:128;17684:351;;;;:::o;18041:85::-;18086:7;18115:5;18104:16;;18041:85;;;:::o;18132:60::-;18160:3;18181:5;18174:12;;18132:60;;;:::o;18198:158::-;18256:9;18289:61;18307:42;18316:32;18342:5;18316:32;:::i;:::-;18307:42;:::i;:::-;18289:61;:::i;:::-;18276:74;;18198:158;;;:::o;18362:147::-;18457:45;18496:5;18457:45;:::i;:::-;18452:3;18445:58;18362:147;;:::o;18515:114::-;18582:6;18616:5;18610:12;18600:22;;18515:114;;;:::o;18635:184::-;18734:11;18768:6;18763:3;18756:19;18808:4;18803:3;18799:14;18784:29;;18635:184;;;;:::o;18825:132::-;18892:4;18915:3;18907:11;;18945:4;18940:3;18936:14;18928:22;;18825:132;;;:::o;18963:108::-;19040:24;19058:5;19040:24;:::i;:::-;19035:3;19028:37;18963:108;;:::o;19077:179::-;19146:10;19167:46;19209:3;19201:6;19167:46;:::i;:::-;19245:4;19240:3;19236:14;19222:28;;19077:179;;;;:::o;19262:113::-;19332:4;19364;19359:3;19355:14;19347:22;;19262:113;;;:::o;19411:732::-;19530:3;19559:54;19607:5;19559:54;:::i;:::-;19629:86;19708:6;19703:3;19629:86;:::i;:::-;19622:93;;19739:56;19789:5;19739:56;:::i;:::-;19818:7;19849:1;19834:284;19859:6;19856:1;19853:13;19834:284;;;19935:6;19929:13;19962:63;20021:3;20006:13;19962:63;:::i;:::-;19955:70;;20048:60;20101:6;20048:60;:::i;:::-;20038:70;;19894:224;19881:1;19878;19874:9;19869:14;;19834:284;;;19838:14;20134:3;20127:10;;19535:608;;;19411:732;;;;:::o;20149:831::-;20412:4;20450:3;20439:9;20435:19;20427:27;;20464:71;20532:1;20521:9;20517:17;20508:6;20464:71;:::i;:::-;20545:80;20621:2;20610:9;20606:18;20597:6;20545:80;:::i;:::-;20672:9;20666:4;20662:20;20657:2;20646:9;20642:18;20635:48;20700:108;20803:4;20794:6;20700:108;:::i;:::-;20692:116;;20818:72;20886:2;20875:9;20871:18;20862:6;20818:72;:::i;:::-;20900:73;20968:3;20957:9;20953:19;20944:6;20900:73;:::i;:::-;20149:831;;;;;;;;:::o;20986:175::-;21126:27;21122:1;21114:6;21110:14;21103:51;20986:175;:::o;21167:366::-;21309:3;21330:67;21394:2;21389:3;21330:67;:::i;:::-;21323:74;;21406:93;21495:3;21406:93;:::i;:::-;21524:2;21519:3;21515:12;21508:19;;21167:366;;;:::o;21539:419::-;21705:4;21743:2;21732:9;21728:18;21720:26;;21792:9;21786:4;21782:20;21778:1;21767:9;21763:17;21756:47;21820:131;21946:4;21820:131;:::i;:::-;21812:139;;21539:419;;;:::o;21964:191::-;22004:3;22023:20;22041:1;22023:20;:::i;:::-;22018:25;;22057:20;22075:1;22057:20;:::i;:::-;22052:25;;22100:1;22097;22093:9;22086:16;;22121:3;22118:1;22115:10;22112:36;;;22128:18;;:::i;:::-;22112:36;21964:191;;;;:::o;22161:173::-;22301:25;22297:1;22289:6;22285:14;22278:49;22161:173;:::o;22340:366::-;22482:3;22503:67;22567:2;22562:3;22503:67;:::i;:::-;22496:74;;22579:93;22668:3;22579:93;:::i;:::-;22697:2;22692:3;22688:12;22681:19;;22340:366;;;:::o;22712:419::-;22878:4;22916:2;22905:9;22901:18;22893:26;;22965:9;22959:4;22955:20;22951:1;22940:9;22936:17;22929:47;22993:131;23119:4;22993:131;:::i;:::-;22985:139;;22712:419;;;:::o;23137:332::-;23258:4;23296:2;23285:9;23281:18;23273:26;;23309:71;23377:1;23366:9;23362:17;23353:6;23309:71;:::i;:::-;23390:72;23458:2;23447:9;23443:18;23434:6;23390:72;:::i;:::-;23137:332;;;;;:::o;23475:807::-;23724:4;23762:3;23751:9;23747:19;23739:27;;23776:71;23844:1;23833:9;23829:17;23820:6;23776:71;:::i;:::-;23857:72;23925:2;23914:9;23910:18;23901:6;23857:72;:::i;:::-;23939:80;24015:2;24004:9;24000:18;23991:6;23939:80;:::i;:::-;24029;24105:2;24094:9;24090:18;24081:6;24029:80;:::i;:::-;24119:73;24187:3;24176:9;24172:19;24163:6;24119:73;:::i;:::-;24202;24270:3;24259:9;24255:19;24246:6;24202:73;:::i;:::-;23475:807;;;;;;;;;:::o;24288:143::-;24345:5;24376:6;24370:13;24361:22;;24392:33;24419:5;24392:33;:::i;:::-;24288:143;;;;:::o;24437:663::-;24525:6;24533;24541;24590:2;24578:9;24569:7;24565:23;24561:32;24558:119;;;24596:79;;:::i;:::-;24558:119;24716:1;24741:64;24797:7;24788:6;24777:9;24773:22;24741:64;:::i;:::-;24731:74;;24687:128;24854:2;24880:64;24936:7;24927:6;24916:9;24912:22;24880:64;:::i;:::-;24870:74;;24825:129;24993:2;25019:64;25075:7;25066:6;25055:9;25051:22;25019:64;:::i;:::-;25009:74;;24964:129;24437:663;;;;;:::o;25106:332::-;25227:4;25265:2;25254:9;25250:18;25242:26;;25278:71;25346:1;25335:9;25331:17;25322:6;25278:71;:::i;:::-;25359:72;25427:2;25416:9;25412:18;25403:6;25359:72;:::i;:::-;25106:332;;;;;:::o;25444:116::-;25514:21;25529:5;25514:21;:::i;:::-;25507:5;25504:32;25494:60;;25550:1;25547;25540:12;25494:60;25444:116;:::o;25566:137::-;25620:5;25651:6;25645:13;25636:22;;25667:30;25691:5;25667:30;:::i;:::-;25566:137;;;;:::o;25709:345::-;25776:6;25825:2;25813:9;25804:7;25800:23;25796:32;25793:119;;;25831:79;;:::i;:::-;25793:119;25951:1;25976:61;26029:7;26020:6;26009:9;26005:22;25976:61;:::i;:::-;25966:71;;25922:125;25709:345;;;;:::o;26060:173::-;26200:25;26196:1;26188:6;26184:14;26177:49;26060:173;:::o;26239:366::-;26381:3;26402:67;26466:2;26461:3;26402:67;:::i;:::-;26395:74;;26478:93;26567:3;26478:93;:::i;:::-;26596:2;26591:3;26587:12;26580:19;;26239:366;;;:::o;26611:419::-;26777:4;26815:2;26804:9;26800:18;26792:26;;26864:9;26858:4;26854:20;26850:1;26839:9;26835:17;26828:47;26892:131;27018:4;26892:131;:::i;:::-;26884:139;;26611:419;;;:::o;27036:775::-;27269:4;27307:3;27296:9;27292:19;27284:27;;27321:71;27389:1;27378:9;27374:17;27365:6;27321:71;:::i;:::-;27402:72;27470:2;27459:9;27455:18;27446:6;27402:72;:::i;:::-;27484;27552:2;27541:9;27537:18;27528:6;27484:72;:::i;:::-;27566;27634:2;27623:9;27619:18;27610:6;27566:72;:::i;:::-;27648:73;27716:3;27705:9;27701:19;27692:6;27648:73;:::i;:::-;27731;27799:3;27788:9;27784:19;27775:6;27731:73;:::i;:::-;27036:775;;;;;;;;;:::o;27817:148::-;27919:11;27956:3;27941:18;;27817:148;;;;:::o;27971:214::-;28111:66;28107:1;28099:6;28095:14;28088:90;27971:214;:::o;28191:400::-;28351:3;28372:84;28454:1;28449:3;28372:84;:::i;:::-;28365:91;;28465:93;28554:3;28465:93;:::i;:::-;28583:1;28578:3;28574:11;28567:18;;28191:400;;;:::o;28597:79::-;28636:7;28665:5;28654:16;;28597:79;;;:::o;28682:157::-;28787:45;28807:24;28825:5;28807:24;:::i;:::-;28787:45;:::i;:::-;28782:3;28775:58;28682:157;;:::o;28845:663::-;29086:3;29108:148;29252:3;29108:148;:::i;:::-;29101:155;;29266:75;29337:3;29328:6;29266:75;:::i;:::-;29366:2;29361:3;29357:12;29350:19;;29379:75;29450:3;29441:6;29379:75;:::i;:::-;29479:2;29474:3;29470:12;29463:19;;29499:3;29492:10;;28845:663;;;;;:::o;29514:545::-;29687:4;29725:3;29714:9;29710:19;29702:27;;29739:71;29807:1;29796:9;29792:17;29783:6;29739:71;:::i;:::-;29820:68;29884:2;29873:9;29869:18;29860:6;29820:68;:::i;:::-;29898:72;29966:2;29955:9;29951:18;29942:6;29898:72;:::i;:::-;29980;30048:2;30037:9;30033:18;30024:6;29980:72;:::i;:::-;29514:545;;;;;;;:::o;30065:164::-;30205:16;30201:1;30193:6;30189:14;30182:40;30065:164;:::o;30235:366::-;30377:3;30398:67;30462:2;30457:3;30398:67;:::i;:::-;30391:74;;30474:93;30563:3;30474:93;:::i;:::-;30592:2;30587:3;30583:12;30576:19;;30235:366;;;:::o;30607:419::-;30773:4;30811:2;30800:9;30796:18;30788:26;;30860:9;30854:4;30850:20;30846:1;30835:9;30831:17;30824:47;30888:131;31014:4;30888:131;:::i;:::-;30880:139;;30607:419;;;:::o;31032:351::-;31102:6;31151:2;31139:9;31130:7;31126:23;31122:32;31119:119;;;31157:79;;:::i;:::-;31119:119;31277:1;31302:64;31358:7;31349:6;31338:9;31334:22;31302:64;:::i;:::-;31292:74;;31248:128;31032:351;;;;:::o;31389:147::-;31490:11;31527:3;31512:18;;31389:147;;;;:::o;31542:144::-;31594:4;31617:3;31609:11;;31640:3;31637:1;31630:14;31674:4;31671:1;31661:18;31653:26;;31542:144;;;:::o;31714:878::-;31819:3;31856:5;31850:12;31885:36;31911:9;31885:36;:::i;:::-;31937:88;32018:6;32013:3;31937:88;:::i;:::-;31930:95;;32056:1;32045:9;32041:17;32072:1;32067:166;;;;32247:1;32242:344;;;;32034:552;;32067:166;32151:4;32147:9;32136;32132:25;32127:3;32120:38;32213:6;32206:14;32199:22;32191:6;32187:35;32182:3;32178:45;32171:52;;32067:166;;32242:344;32309:41;32344:5;32309:41;:::i;:::-;32372:1;32386:154;32400:6;32397:1;32394:13;32386:154;;;32474:7;32468:14;32464:1;32459:3;32455:11;32448:35;32524:1;32515:7;32511:15;32500:26;;32422:4;32419:1;32415:12;32410:17;;32386:154;;;32569:6;32564:3;32560:16;32553:23;;32249:337;;32034:552;;31823:769;;31714:878;;;;:::o;32598:273::-;32729:3;32751:94;32841:3;32832:6;32751:94;:::i;:::-;32744:101;;32862:3;32855:10;;32598:273;;;;:::o;32877:664::-;33082:4;33120:3;33109:9;33105:19;33097:27;;33134:71;33202:1;33191:9;33187:17;33178:6;33134:71;:::i;:::-;33215:72;33283:2;33272:9;33268:18;33259:6;33215:72;:::i;:::-;33297;33365:2;33354:9;33350:18;33341:6;33297:72;:::i;:::-;33379;33447:2;33436:9;33432:18;33423:6;33379:72;:::i;:::-;33461:73;33529:3;33518:9;33514:19;33505:6;33461:73;:::i;:::-;32877:664;;;;;;;;:::o
Swarm Source
ipfs://00a8db2dc9b8948ae48f0c7aa9afdde4b3aa8b2b72f3d12b32e0ac3ead950156
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)