ERC-20
Source Code
Overview
Max Total Supply
3,330,000,000 ANGELICISM
Holders
32
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
ANGELICISM
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-07-08
*/
//https://linktr.ee/ANGELICISM______01
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.14;
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IERC20 {
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {owner = _owner;}
modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
function isOwner(address account) public view returns (bool) {return account == owner;}
function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
event OwnershipTransferred(address owner);
}
interface IFactory{
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline) external;
}
contract ANGELICISM is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = '01';
string private constant _symbol = 'ANGELICISM';
uint8 private constant _decimals = 9;
uint256 private _totalSupply = 3330000000 * (10 ** _decimals);
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) private isBot;
IRouter router;
address public pair;
bool private tradingAllowed = false;
bool private swapEnabled = true;
uint256 private swapTimes;
bool private swapping;
uint256 swapAmount = 1;
uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
modifier lockTheSwap {swapping = true; _; swapping = false;}
uint256 private liquidityFee = 0;
uint256 private marketingFee = 0;
uint256 private developmentFee = 0;
uint256 private burnFee = 0;
uint256 private totalFee = 1100;
uint256 private sellFee = 3300;
uint256 private transferFee = 3300;
uint256 private denominator = 10000;
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address internal development_receiver = 0xD79EF6EC008Fd9Cd717B094Aa3c274Ce7740A953;
address internal marketing_receiver = 0xD79EF6EC008Fd9Cd717B094Aa3c274Ce7740A953;
address internal liquidity_receiver = 0xD79EF6EC008Fd9Cd717B094Aa3c274Ce7740A953;
uint256 public _maxTxAmount = ( _totalSupply * 150 ) / 10000;
uint256 public _maxSellAmount = ( _totalSupply * 150 ) / 10000;
uint256 public maxWalletToken = ( _totalSupply * 150 ) / 10000;
constructor() Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router; pair = _pair;
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[development_receiver] = true;
isFeeExempt[msg.sender] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable {}
function name() public pure returns (string memory) {return _name;}
function symbol() public pure returns (string memory) {return _symbol;}
function decimals() public pure returns (uint8) {return _decimals;}
function OpenTrading() external onlyOwner {tradingAllowed = true;}
function getOwner() external view override returns (address) { return owner; }
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
bool aboveMin = amount >= minTokenAmount;
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
}
function AngelicismSetting(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000));
minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
}
function AngelicismTax(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
}
function AngelicismLimit(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
_maxTxAmount = newTx; _maxSellAmount = newTransfer; maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
}
function AngelicismERC20(address _address, uint256 percent) external onlyOwner {
uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
IERC20(_address).transfer(development_receiver, _amount);
}
function AngelicismAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
}
function manualSwap() external onlyOwner {
swapAndLiquify(swapThreshold);
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance.sub(initialBalance);
uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
uint256 contractBalance = address(this).balance;
if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
tokenAmount,
0,
0,
liquidity_receiver,
block.timestamp);
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp);
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
return !isFeeExempt[sender] && !isFeeExempt[recipient];
}
function getTotalFee(address sender, address recipient) internal view returns (uint256) {
if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
if(recipient == pair){return sellFee;}
if(sender == pair){return totalFee;}
return transferFee;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
if(getTotalFee(sender, recipient) > 0){
uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
return amount.sub(feeAmount);} return amount;
}
function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
require((_balances[recipient].add(amount)) <= maxWalletToken, "Exceeds maximum wallet amount.");}
if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
_balances[sender] = _balances[sender].sub(amount);
uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"AngelicismAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"AngelicismERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"AngelicismLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"AngelicismSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"AngelicismTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526009600a610012919061088a565b63c67bc48061002191906108d4565b6001555f600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860015461007291906108d4565b61007c9190610942565b600b55620186a0600a60015461009291906108d4565b61009c9190610942565b600c555f600d555f600e555f600f555f60105561044c601155610ce4601255610ce460135561271060145573d79ef6ec008fd9cd717b094aa3c274ce7740a95360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d79ef6ec008fd9cd717b094aa3c274ce7740a95360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d79ef6ec008fd9cd717b094aa3c274ce7740a95360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060966001546101d591906108d4565b6101df9190610942565b60185561271060966001546101f491906108d4565b6101fe9190610942565b601955612710609660015461021391906108d4565b61021d9190610942565b601a5534801561022b575f5ffd5b5033805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f391906109d0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610358573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037c91906109d0565b6040518363ffffffff1660e01b8152600401610399929190610a0a565b6020604051808303815f875af11580156103b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d991906109d0565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405161070a9190610a40565b60405180910390a35050610a59565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561079b5780860481111561077757610776610719565b5b60018516156107865780820291505b808102905061079485610746565b945061075b565b94509492505050565b5f826107b3576001905061086e565b816107c0575f905061086e565b81600181146107d657600281146107e05761080f565b600191505061086e565b60ff8411156107f2576107f1610719565b5b8360020a91508482111561080957610808610719565b5b5061086e565b5060208310610133831016604e8410600b84101617156108445782820a90508381111561083f5761083e610719565b5b61086e565b6108518484846001610752565b9250905081840481111561086857610867610719565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61089482610875565b915061089f8361087e565b92506108cc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107a4565b905092915050565b5f6108de82610875565b91506108e983610875565b92508282026108f781610875565b9150828204841483151761090e5761090d610719565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61094c82610875565b915061095783610875565b92508261096757610966610915565b5b828204905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61099f82610976565b9050919050565b6109af81610995565b81146109b9575f5ffd5b50565b5f815190506109ca816109a6565b92915050565b5f602082840312156109e5576109e4610972565b5b5f6109f2848285016109bc565b91505092915050565b610a0481610995565b82525050565b5f604082019050610a1d5f8301856109fb565b610a2a60208301846109fb565b9392505050565b610a3a81610875565b82525050565b5f602082019050610a535f830184610a31565b92915050565b61375a80610a665f395ff3fe608060405260043610610169575f3560e01c80637cca52fe116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610520578063e6c75f711461055c578063f2fde38b14610586578063f9f0b7c4146105ae57610170565b8063a9059cbb14610494578063b193616e146104d0578063dd2f2a81146104f857610170565b80637cca52fe1461039a5780637d1db4a5146103c4578063893d20e8146103ee57806395d89b41146104185780639fd4693314610442578063a8aa1b311461046a57610170565b80633609b9be116101225780633609b9be146102a65780633f4218e0146102ce57806348ff2b8b1461030a57806351bc3c851461033257806351cd7cc31461034857806370a082311461035e57610170565b806306fdde0314610174578063095ea7b31461019e57806318160ddd146101da57806323b872dd146102045780632f54bf6e14610240578063313ce5671461027c57610170565b3661017057005b5f5ffd5b34801561017f575f5ffd5b506101886105d6565b6040516101959190612836565b60405180910390f35b3480156101a9575f5ffd5b506101c460048036038101906101bf91906128e7565b610613565b6040516101d1919061293f565b60405180910390f35b3480156101e5575f5ffd5b506101ee610629565b6040516101fb9190612967565b60405180910390f35b34801561020f575f5ffd5b5061022a60048036038101906102259190612980565b610668565b604051610237919061293f565b60405180910390f35b34801561024b575f5ffd5b50610266600480360381019061026191906129d0565b61072e565b604051610273919061293f565b60405180910390f35b348015610287575f5ffd5b50610290610785565b60405161029d9190612a16565b60405180910390f35b3480156102b1575f5ffd5b506102cc60048036038101906102c791906128e7565b61078d565b005b3480156102d9575f5ffd5b506102f460048036038101906102ef91906129d0565b610917565b604051610301919061293f565b60405180910390f35b348015610315575f5ffd5b50610330600480360381019061032b9190612a59565b610934565b005b34801561033d575f5ffd5b506103466109d4565b005b348015610353575f5ffd5b5061035c610a29565b005b348015610369575f5ffd5b50610384600480360381019061037f91906129d0565b610a8e565b6040516103919190612967565b60405180910390f35b3480156103a5575f5ffd5b506103ae610ad4565b6040516103bb9190612967565b60405180910390f35b3480156103cf575f5ffd5b506103d8610ada565b6040516103e59190612967565b60405180910390f35b3480156103f9575f5ffd5b50610402610ae0565b60405161040f9190612aa6565b60405180910390f35b348015610423575f5ffd5b5061042c610b07565b6040516104399190612836565b60405180910390f35b34801561044d575f5ffd5b5061046860048036038101906104639190612abf565b610b44565b005b348015610475575f5ffd5b5061047e610cbb565b60405161048b9190612aa6565b60405180910390f35b34801561049f575f5ffd5b506104ba60048036038101906104b591906128e7565b610ce0565b6040516104c7919061293f565b60405180910390f35b3480156104db575f5ffd5b506104f660048036038101906104f19190612b0f565b610cf6565b005b348015610503575f5ffd5b5061051e60048036038101906105199190612bac565b610e18565b005b34801561052b575f5ffd5b5061054660048036038101906105419190612bfc565b611024565b6040516105539190612967565b60405180910390f35b348015610567575f5ffd5b506105706110a6565b60405161057d9190612967565b60405180910390f35b348015610591575f5ffd5b506105ac60048036038101906105a79190612c75565b6110ac565b005b3480156105b9575f5ffd5b506105d460048036038101906105cf9190612abf565b61116d565b005b60606040518060400160405280600281526020017f3031000000000000000000000000000000000000000000000000000000000000815250905090565b5f61061f338484611221565b6001905092915050565b5f6106636106365f610a8e565b61065561064461dead610a8e565b6001546113e490919063ffffffff16565b6113e490919063ffffffff16565b905090565b5f6106748484846113f9565b610723843361071e856040518060600160405280602881526020016136fd6028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c969092919063ffffffff16565b611221565b600190509392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6107963361072e565b6107d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cc90612cea565b60405180910390fd5b5f6108736064610865848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108189190612aa6565b602060405180830381865afa158015610833573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108579190612d1c565b611cea90919063ffffffff16565b611cff90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016108d1929190612d47565b6020604051808303815f875af11580156108ed573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109119190612d82565b50505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61093d3361072e565b61097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097390612cea565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6109dd3361072e565b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612cea565b60405180910390fd5b610a27600b54611d14565b565b610a323361072e565b610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890612cea565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60195481565b60185481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f414e47454c494349534d00000000000000000000000000000000000000000000815250905090565b610b4d3361072e565b610b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8390612cea565b60405180910390fd5b5f610bb6612710610ba886600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b90505f610be2612710610bd486600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b90505f610c0e612710610c0086600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b9050826018819055508160198190555080601a819055505f610c556103e8610c476005610c39610629565b611cea90919063ffffffff16565b611cff90919063ffffffff16565b9050808410158015610c675750808310155b8015610c735750808210155b610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990612e1d565b60405180910390fd5b50505050505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610cec3384846113f9565b6001905092915050565b610cff3361072e565b610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590612cea565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610d856001601454611cff90919063ffffffff16565b60115411158015610dad5750610da76001601454611cff90919063ffffffff16565b60125411155b8015610dd05750610dca6001601454611cff90919063ffffffff16565b60135411155b610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612eab565b60405180910390fd5b50505050505050565b610e213361072e565b610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612cea565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601a5481565b6110b53361072e565b6110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90612cea565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516111629190612f24565b60405180910390a150565b6111763361072e565b6111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90612cea565b60405180910390fd5b82600a819055506111e6620186a06111d884600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b600b81905550611216620186a061120883600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b600c81905550505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690612fad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f49061303b565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d79190612967565b60405180910390a3505050565b5f81836113f19190613086565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc906131b7565b60405180910390fd5b6114de83610a8e565b811115611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790613245565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115be575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561161357600760149054906101000a900460ff16611612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611609906132ad565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116b1575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561170a575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611744575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117de57601a5461179c8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6a90919063ffffffff16565b11156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490613315565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461191a5760195481111580611889575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806118da575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119109061337d565b60405180910390fd5b5b60185481111580611971575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806119c2575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f89061337d565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611aa4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ac357600160085f828254611abb919061339b565b925050819055505b611ace838383611f7f565b15611ae657611ade600b54611d14565b5f6008819055505b611b368160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113e490919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611b8284846120b2565b611b8c5781611b98565b611b97848484612159565b5b9050611bea8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c889190612967565b60405180910390a350505050565b5f838311158290611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd49190612836565b60405180910390fd5b5082840390509392505050565b5f8183611cf791906133ce565b905092915050565b5f8183611d0c919061343c565b905092915050565b600160095f6101000a81548160ff0219169083151502179055505f611d806002611d72600f54611d64600e54611d566001600d54611f6a90919063ffffffff16565b611f6a90919063ffffffff16565b611f6a90919063ffffffff16565b611cea90919063ffffffff16565b90505f611daa82611d9c600d5486611cea90919063ffffffff16565b611cff90919063ffffffff16565b90505f611dc082856113e490919063ffffffff16565b90505f479050611dcf82612310565b5f611de382476113e490919063ffffffff16565b90505f611e0d611dfe600d54886113e490919063ffffffff16565b83611cff90919063ffffffff16565b90505f611e25600d5483611cea90919063ffffffff16565b90505f811115611e3a57611e398682612546565b5b5f611e63600e54611e55600286611cea90919063ffffffff16565b611cea90919063ffffffff16565b90505f811115611ed35760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ed1573d5f5f3e3d5ffd5b505b5f4790505f811115611f455760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f43573d5f5f3e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f8183611f77919061339b565b905092915050565b5f5f600c5483101590505f600b54611f9630610a8e565b1015905060095f9054906101000a900460ff16158015611fc25750600760159054906101000a900460ff165b8015611fda5750600760149054906101000a900460ff165b8015611fe35750815b8015612036575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561208e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561209e5750600a5460085410155b80156120a75750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612151575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f5f6121658585612640565b1115612305575f61219c6121798686612640565b61218e60145486611cff90919063ffffffff16565b611cea90919063ffffffff16565b90506121ee8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6a90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228c9190612967565b60405180910390a35f6010541180156122af57506010546122ad8686612640565b115b156122ea576122e93061dead6122e46010546122d660145489611cff90919063ffffffff16565b611cea90919063ffffffff16565b6113f9565b5b6122fd81846113e490919063ffffffff16565b915050612309565b8190505b9392505050565b5f600267ffffffffffffffff81111561232c5761232b61346c565b5b60405190808252806020026020018201604052801561235a5781602001602082028036833780820191505090505b50905030815f8151811061237157612370613499565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612415573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243991906134da565b8160018151811061244d5761244c613499565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b33060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611221565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125159594939291906135f5565b5f604051808303815f87803b15801561252c575f5ffd5b505af115801561253e573d5f5f3e3d5ffd5b505050505050565b6125723060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611221565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125f89695949392919061364d565b60606040518083038185885af1158015612614573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061263991906136ac565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126dc575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156126fe576126f760646014546113e490919063ffffffff16565b90506127c0565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361275c5760125490506127c0565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ba5760115490506127c0565b60135490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612808826127c6565b61281281856127d0565b93506128228185602086016127e0565b61282b816127ee565b840191505092915050565b5f6020820190508181035f83015261284e81846127fe565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128838261285a565b9050919050565b61289381612879565b811461289d575f5ffd5b50565b5f813590506128ae8161288a565b92915050565b5f819050919050565b6128c6816128b4565b81146128d0575f5ffd5b50565b5f813590506128e1816128bd565b92915050565b5f5f604083850312156128fd576128fc612856565b5b5f61290a858286016128a0565b925050602061291b858286016128d3565b9150509250929050565b5f8115159050919050565b61293981612925565b82525050565b5f6020820190506129525f830184612930565b92915050565b612961816128b4565b82525050565b5f60208201905061297a5f830184612958565b92915050565b5f5f5f6060848603121561299757612996612856565b5b5f6129a4868287016128a0565b93505060206129b5868287016128a0565b92505060406129c6868287016128d3565b9150509250925092565b5f602082840312156129e5576129e4612856565b5b5f6129f2848285016128a0565b91505092915050565b5f60ff82169050919050565b612a10816129fb565b82525050565b5f602082019050612a295f830184612a07565b92915050565b612a3881612925565b8114612a42575f5ffd5b50565b5f81359050612a5381612a2f565b92915050565b5f5f60408385031215612a6f57612a6e612856565b5b5f612a7c858286016128a0565b9250506020612a8d85828601612a45565b9150509250929050565b612aa081612879565b82525050565b5f602082019050612ab95f830184612a97565b92915050565b5f5f5f60608486031215612ad657612ad5612856565b5b5f612ae3868287016128d3565b9350506020612af4868287016128d3565b9250506040612b05868287016128d3565b9150509250925092565b5f5f5f5f5f5f5f60e0888a031215612b2a57612b29612856565b5b5f612b378a828b016128d3565b9750506020612b488a828b016128d3565b9650506040612b598a828b016128d3565b9550506060612b6a8a828b016128d3565b9450506080612b7b8a828b016128d3565b93505060a0612b8c8a828b016128d3565b92505060c0612b9d8a828b016128d3565b91505092959891949750929550565b5f5f5f60608486031215612bc357612bc2612856565b5b5f612bd0868287016128a0565b9350506020612be1868287016128a0565b9250506040612bf2868287016128a0565b9150509250925092565b5f5f60408385031215612c1257612c11612856565b5b5f612c1f858286016128a0565b9250506020612c30858286016128a0565b9150509250929050565b5f612c448261285a565b9050919050565b612c5481612c3a565b8114612c5e575f5ffd5b50565b5f81359050612c6f81612c4b565b92915050565b5f60208284031215612c8a57612c89612856565b5b5f612c9784828501612c61565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612cd46006836127d0565b9150612cdf82612ca0565b602082019050919050565b5f6020820190508181035f830152612d0181612cc8565b9050919050565b5f81519050612d16816128bd565b92915050565b5f60208284031215612d3157612d30612856565b5b5f612d3e84828501612d08565b91505092915050565b5f604082019050612d5a5f830185612a97565b612d676020830184612958565b9392505050565b5f81519050612d7c81612a2f565b92915050565b5f60208284031215612d9757612d96612856565b5b5f612da484828501612d6e565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f612e07602e836127d0565b9150612e1282612dad565b604082019050919050565b5f6020820190508181035f830152612e3481612dfb565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f612e95602c836127d0565b9150612ea082612e3b565b604082019050919050565b5f6020820190508181035f830152612ec281612e89565b9050919050565b5f819050919050565b5f612eec612ee7612ee28461285a565b612ec9565b61285a565b9050919050565b5f612efd82612ed2565b9050919050565b5f612f0e82612ef3565b9050919050565b612f1e81612f04565b82525050565b5f602082019050612f375f830184612f15565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f976024836127d0565b9150612fa282612f3d565b604082019050919050565b5f6020820190508181035f830152612fc481612f8b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130256022836127d0565b915061303082612fcb565b604082019050919050565b5f6020820190508181035f83015261305281613019565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613090826128b4565b915061309b836128b4565b92508282039050818111156130b3576130b2613059565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131136025836127d0565b915061311e826130b9565b604082019050919050565b5f6020820190508181035f83015261314081613107565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131a16023836127d0565b91506131ac82613147565b604082019050919050565b5f6020820190508181035f8301526131ce81613195565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f61322f6031836127d0565b915061323a826131d5565b604082019050919050565b5f6020820190508181035f83015261325c81613223565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f613297600e836127d0565b91506132a282613263565b602082019050919050565b5f6020820190508181035f8301526132c48161328b565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f6132ff601e836127d0565b915061330a826132cb565b602082019050919050565b5f6020820190508181035f83015261332c816132f3565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f6133676011836127d0565b915061337282613333565b602082019050919050565b5f6020820190508181035f8301526133948161335b565b9050919050565b5f6133a5826128b4565b91506133b0836128b4565b92508282019050808211156133c8576133c7613059565b5b92915050565b5f6133d8826128b4565b91506133e3836128b4565b92508282026133f1816128b4565b9150828204841483151761340857613407613059565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613446826128b4565b9150613451836128b4565b9250826134615761346061340f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506134d48161288a565b92915050565b5f602082840312156134ef576134ee612856565b5b5f6134fc848285016134c6565b91505092915050565b5f819050919050565b5f61352861352361351e84613505565b612ec9565b6128b4565b9050919050565b6135388161350e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61357081612879565b82525050565b5f6135818383613567565b60208301905092915050565b5f602082019050919050565b5f6135a38261353e565b6135ad8185613548565b93506135b883613558565b805f5b838110156135e85781516135cf8882613576565b97506135da8361358d565b9250506001810190506135bb565b5085935050505092915050565b5f60a0820190506136085f830188612958565b613615602083018761352f565b81810360408301526136278186613599565b90506136366060830185612a97565b6136436080830184612958565b9695505050505050565b5f60c0820190506136605f830189612a97565b61366d6020830188612958565b61367a604083018761352f565b613687606083018661352f565b6136946080830185612a97565b6136a160a0830184612958565b979650505050505050565b5f5f5f606084860312156136c3576136c2612856565b5b5f6136d086828701612d08565b93505060206136e186828701612d08565b92505060406136f286828701612d08565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201482e13fc07d252719550869a5e2a760f533628ef468268973522f77d9cf5ae164736f6c634300081e0033
Deployed Bytecode
0x608060405260043610610169575f3560e01c80637cca52fe116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610520578063e6c75f711461055c578063f2fde38b14610586578063f9f0b7c4146105ae57610170565b8063a9059cbb14610494578063b193616e146104d0578063dd2f2a81146104f857610170565b80637cca52fe1461039a5780637d1db4a5146103c4578063893d20e8146103ee57806395d89b41146104185780639fd4693314610442578063a8aa1b311461046a57610170565b80633609b9be116101225780633609b9be146102a65780633f4218e0146102ce57806348ff2b8b1461030a57806351bc3c851461033257806351cd7cc31461034857806370a082311461035e57610170565b806306fdde0314610174578063095ea7b31461019e57806318160ddd146101da57806323b872dd146102045780632f54bf6e14610240578063313ce5671461027c57610170565b3661017057005b5f5ffd5b34801561017f575f5ffd5b506101886105d6565b6040516101959190612836565b60405180910390f35b3480156101a9575f5ffd5b506101c460048036038101906101bf91906128e7565b610613565b6040516101d1919061293f565b60405180910390f35b3480156101e5575f5ffd5b506101ee610629565b6040516101fb9190612967565b60405180910390f35b34801561020f575f5ffd5b5061022a60048036038101906102259190612980565b610668565b604051610237919061293f565b60405180910390f35b34801561024b575f5ffd5b50610266600480360381019061026191906129d0565b61072e565b604051610273919061293f565b60405180910390f35b348015610287575f5ffd5b50610290610785565b60405161029d9190612a16565b60405180910390f35b3480156102b1575f5ffd5b506102cc60048036038101906102c791906128e7565b61078d565b005b3480156102d9575f5ffd5b506102f460048036038101906102ef91906129d0565b610917565b604051610301919061293f565b60405180910390f35b348015610315575f5ffd5b50610330600480360381019061032b9190612a59565b610934565b005b34801561033d575f5ffd5b506103466109d4565b005b348015610353575f5ffd5b5061035c610a29565b005b348015610369575f5ffd5b50610384600480360381019061037f91906129d0565b610a8e565b6040516103919190612967565b60405180910390f35b3480156103a5575f5ffd5b506103ae610ad4565b6040516103bb9190612967565b60405180910390f35b3480156103cf575f5ffd5b506103d8610ada565b6040516103e59190612967565b60405180910390f35b3480156103f9575f5ffd5b50610402610ae0565b60405161040f9190612aa6565b60405180910390f35b348015610423575f5ffd5b5061042c610b07565b6040516104399190612836565b60405180910390f35b34801561044d575f5ffd5b5061046860048036038101906104639190612abf565b610b44565b005b348015610475575f5ffd5b5061047e610cbb565b60405161048b9190612aa6565b60405180910390f35b34801561049f575f5ffd5b506104ba60048036038101906104b591906128e7565b610ce0565b6040516104c7919061293f565b60405180910390f35b3480156104db575f5ffd5b506104f660048036038101906104f19190612b0f565b610cf6565b005b348015610503575f5ffd5b5061051e60048036038101906105199190612bac565b610e18565b005b34801561052b575f5ffd5b5061054660048036038101906105419190612bfc565b611024565b6040516105539190612967565b60405180910390f35b348015610567575f5ffd5b506105706110a6565b60405161057d9190612967565b60405180910390f35b348015610591575f5ffd5b506105ac60048036038101906105a79190612c75565b6110ac565b005b3480156105b9575f5ffd5b506105d460048036038101906105cf9190612abf565b61116d565b005b60606040518060400160405280600281526020017f3031000000000000000000000000000000000000000000000000000000000000815250905090565b5f61061f338484611221565b6001905092915050565b5f6106636106365f610a8e565b61065561064461dead610a8e565b6001546113e490919063ffffffff16565b6113e490919063ffffffff16565b905090565b5f6106748484846113f9565b610723843361071e856040518060600160405280602881526020016136fd6028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c969092919063ffffffff16565b611221565b600190509392505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6107963361072e565b6107d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cc90612cea565b60405180910390fd5b5f6108736064610865848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108189190612aa6565b602060405180830381865afa158015610833573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108579190612d1c565b611cea90919063ffffffff16565b611cff90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016108d1929190612d47565b6020604051808303815f875af11580156108ed573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109119190612d82565b50505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61093d3361072e565b61097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097390612cea565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6109dd3361072e565b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612cea565b60405180910390fd5b610a27600b54611d14565b565b610a323361072e565b610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890612cea565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60195481565b60185481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f414e47454c494349534d00000000000000000000000000000000000000000000815250905090565b610b4d3361072e565b610b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8390612cea565b60405180910390fd5b5f610bb6612710610ba886600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b90505f610be2612710610bd486600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b90505f610c0e612710610c0086600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b9050826018819055508160198190555080601a819055505f610c556103e8610c476005610c39610629565b611cea90919063ffffffff16565b611cff90919063ffffffff16565b9050808410158015610c675750808310155b8015610c735750808210155b610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990612e1d565b60405180910390fd5b50505050505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610cec3384846113f9565b6001905092915050565b610cff3361072e565b610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590612cea565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610d856001601454611cff90919063ffffffff16565b60115411158015610dad5750610da76001601454611cff90919063ffffffff16565b60125411155b8015610dd05750610dca6001601454611cff90919063ffffffff16565b60135411155b610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690612eab565b60405180910390fd5b50505050505050565b610e213361072e565b610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612cea565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601a5481565b6110b53361072e565b6110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90612cea565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516111629190612f24565b60405180910390a150565b6111763361072e565b6111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90612cea565b60405180910390fd5b82600a819055506111e6620186a06111d884600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b600b81905550611216620186a061120883600154611cea90919063ffffffff16565b611cff90919063ffffffff16565b600c81905550505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690612fad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f49061303b565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d79190612967565b60405180910390a3505050565b5f81836113f19190613086565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc906131b7565b60405180910390fd5b6114de83610a8e565b811115611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151790613245565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115be575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561161357600760149054906101000a900460ff16611612576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611609906132ad565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116b1575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561170a575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611744575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117de57601a5461179c8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6a90919063ffffffff16565b11156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490613315565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461191a5760195481111580611889575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806118da575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119109061337d565b60405180910390fd5b5b60185481111580611971575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806119c2575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f89061337d565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611aa4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ac357600160085f828254611abb919061339b565b925050819055505b611ace838383611f7f565b15611ae657611ade600b54611d14565b5f6008819055505b611b368160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113e490919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611b8284846120b2565b611b8c5781611b98565b611b97848484612159565b5b9050611bea8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c889190612967565b60405180910390a350505050565b5f838311158290611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd49190612836565b60405180910390fd5b5082840390509392505050565b5f8183611cf791906133ce565b905092915050565b5f8183611d0c919061343c565b905092915050565b600160095f6101000a81548160ff0219169083151502179055505f611d806002611d72600f54611d64600e54611d566001600d54611f6a90919063ffffffff16565b611f6a90919063ffffffff16565b611f6a90919063ffffffff16565b611cea90919063ffffffff16565b90505f611daa82611d9c600d5486611cea90919063ffffffff16565b611cff90919063ffffffff16565b90505f611dc082856113e490919063ffffffff16565b90505f479050611dcf82612310565b5f611de382476113e490919063ffffffff16565b90505f611e0d611dfe600d54886113e490919063ffffffff16565b83611cff90919063ffffffff16565b90505f611e25600d5483611cea90919063ffffffff16565b90505f811115611e3a57611e398682612546565b5b5f611e63600e54611e55600286611cea90919063ffffffff16565b611cea90919063ffffffff16565b90505f811115611ed35760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ed1573d5f5f3e3d5ffd5b505b5f4790505f811115611f455760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f43573d5f5f3e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f8183611f77919061339b565b905092915050565b5f5f600c5483101590505f600b54611f9630610a8e565b1015905060095f9054906101000a900460ff16158015611fc25750600760159054906101000a900460ff165b8015611fda5750600760149054906101000a900460ff165b8015611fe35750815b8015612036575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561208e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561209e5750600a5460085410155b80156120a75750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612151575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f5f6121658585612640565b1115612305575f61219c6121798686612640565b61218e60145486611cff90919063ffffffff16565b611cea90919063ffffffff16565b90506121ee8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f6a90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228c9190612967565b60405180910390a35f6010541180156122af57506010546122ad8686612640565b115b156122ea576122e93061dead6122e46010546122d660145489611cff90919063ffffffff16565b611cea90919063ffffffff16565b6113f9565b5b6122fd81846113e490919063ffffffff16565b915050612309565b8190505b9392505050565b5f600267ffffffffffffffff81111561232c5761232b61346c565b5b60405190808252806020026020018201604052801561235a5781602001602082028036833780820191505090505b50905030815f8151811061237157612370613499565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612415573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243991906134da565b8160018151811061244d5761244c613499565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124b33060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611221565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125159594939291906135f5565b5f604051808303815f87803b15801561252c575f5ffd5b505af115801561253e573d5f5f3e3d5ffd5b505050505050565b6125723060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611221565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125f89695949392919061364d565b60606040518083038185885af1158015612614573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061263991906136ac565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126dc575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156126fe576126f760646014546113e490919063ffffffff16565b90506127c0565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361275c5760125490506127c0565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127ba5760115490506127c0565b60135490505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612808826127c6565b61281281856127d0565b93506128228185602086016127e0565b61282b816127ee565b840191505092915050565b5f6020820190508181035f83015261284e81846127fe565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128838261285a565b9050919050565b61289381612879565b811461289d575f5ffd5b50565b5f813590506128ae8161288a565b92915050565b5f819050919050565b6128c6816128b4565b81146128d0575f5ffd5b50565b5f813590506128e1816128bd565b92915050565b5f5f604083850312156128fd576128fc612856565b5b5f61290a858286016128a0565b925050602061291b858286016128d3565b9150509250929050565b5f8115159050919050565b61293981612925565b82525050565b5f6020820190506129525f830184612930565b92915050565b612961816128b4565b82525050565b5f60208201905061297a5f830184612958565b92915050565b5f5f5f6060848603121561299757612996612856565b5b5f6129a4868287016128a0565b93505060206129b5868287016128a0565b92505060406129c6868287016128d3565b9150509250925092565b5f602082840312156129e5576129e4612856565b5b5f6129f2848285016128a0565b91505092915050565b5f60ff82169050919050565b612a10816129fb565b82525050565b5f602082019050612a295f830184612a07565b92915050565b612a3881612925565b8114612a42575f5ffd5b50565b5f81359050612a5381612a2f565b92915050565b5f5f60408385031215612a6f57612a6e612856565b5b5f612a7c858286016128a0565b9250506020612a8d85828601612a45565b9150509250929050565b612aa081612879565b82525050565b5f602082019050612ab95f830184612a97565b92915050565b5f5f5f60608486031215612ad657612ad5612856565b5b5f612ae3868287016128d3565b9350506020612af4868287016128d3565b9250506040612b05868287016128d3565b9150509250925092565b5f5f5f5f5f5f5f60e0888a031215612b2a57612b29612856565b5b5f612b378a828b016128d3565b9750506020612b488a828b016128d3565b9650506040612b598a828b016128d3565b9550506060612b6a8a828b016128d3565b9450506080612b7b8a828b016128d3565b93505060a0612b8c8a828b016128d3565b92505060c0612b9d8a828b016128d3565b91505092959891949750929550565b5f5f5f60608486031215612bc357612bc2612856565b5b5f612bd0868287016128a0565b9350506020612be1868287016128a0565b9250506040612bf2868287016128a0565b9150509250925092565b5f5f60408385031215612c1257612c11612856565b5b5f612c1f858286016128a0565b9250506020612c30858286016128a0565b9150509250929050565b5f612c448261285a565b9050919050565b612c5481612c3a565b8114612c5e575f5ffd5b50565b5f81359050612c6f81612c4b565b92915050565b5f60208284031215612c8a57612c89612856565b5b5f612c9784828501612c61565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612cd46006836127d0565b9150612cdf82612ca0565b602082019050919050565b5f6020820190508181035f830152612d0181612cc8565b9050919050565b5f81519050612d16816128bd565b92915050565b5f60208284031215612d3157612d30612856565b5b5f612d3e84828501612d08565b91505092915050565b5f604082019050612d5a5f830185612a97565b612d676020830184612958565b9392505050565b5f81519050612d7c81612a2f565b92915050565b5f60208284031215612d9757612d96612856565b5b5f612da484828501612d6e565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f612e07602e836127d0565b9150612e1282612dad565b604082019050919050565b5f6020820190508181035f830152612e3481612dfb565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f612e95602c836127d0565b9150612ea082612e3b565b604082019050919050565b5f6020820190508181035f830152612ec281612e89565b9050919050565b5f819050919050565b5f612eec612ee7612ee28461285a565b612ec9565b61285a565b9050919050565b5f612efd82612ed2565b9050919050565b5f612f0e82612ef3565b9050919050565b612f1e81612f04565b82525050565b5f602082019050612f375f830184612f15565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f976024836127d0565b9150612fa282612f3d565b604082019050919050565b5f6020820190508181035f830152612fc481612f8b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130256022836127d0565b915061303082612fcb565b604082019050919050565b5f6020820190508181035f83015261305281613019565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613090826128b4565b915061309b836128b4565b92508282039050818111156130b3576130b2613059565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131136025836127d0565b915061311e826130b9565b604082019050919050565b5f6020820190508181035f83015261314081613107565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6131a16023836127d0565b91506131ac82613147565b604082019050919050565b5f6020820190508181035f8301526131ce81613195565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f61322f6031836127d0565b915061323a826131d5565b604082019050919050565b5f6020820190508181035f83015261325c81613223565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f613297600e836127d0565b91506132a282613263565b602082019050919050565b5f6020820190508181035f8301526132c48161328b565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f6132ff601e836127d0565b915061330a826132cb565b602082019050919050565b5f6020820190508181035f83015261332c816132f3565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f6133676011836127d0565b915061337282613333565b602082019050919050565b5f6020820190508181035f8301526133948161335b565b9050919050565b5f6133a5826128b4565b91506133b0836128b4565b92508282019050808211156133c8576133c7613059565b5b92915050565b5f6133d8826128b4565b91506133e3836128b4565b92508282026133f1816128b4565b9150828204841483151761340857613407613059565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613446826128b4565b9150613451836128b4565b9250826134615761346061340f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506134d48161288a565b92915050565b5f602082840312156134ef576134ee612856565b5b5f6134fc848285016134c6565b91505092915050565b5f819050919050565b5f61352861352361351e84613505565b612ec9565b6128b4565b9050919050565b6135388161350e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61357081612879565b82525050565b5f6135818383613567565b60208301905092915050565b5f602082019050919050565b5f6135a38261353e565b6135ad8185613548565b93506135b883613558565b805f5b838110156135e85781516135cf8882613576565b97506135da8361358d565b9250506001810190506135bb565b5085935050505092915050565b5f60a0820190506136085f830188612958565b613615602083018761352f565b81810360408301526136278186613599565b90506136366060830185612a97565b6136436080830184612958565b9695505050505050565b5f60c0820190506136605f830189612a97565b61366d6020830188612958565b61367a604083018761352f565b613687606083018661352f565b6136946080830185612a97565b6136a160a0830184612958565b979650505050505050565b5f5f5f606084860312156136c3576136c2612856565b5b5f6136d086828701612d08565b93505060206136e186828701612d08565b92505060406136f286828701612d08565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201482e13fc07d252719550869a5e2a760f533628ef468268973522f77d9cf5ae164736f6c634300081e0033
Deployed Bytecode Sourcemap
4712:11142:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7148:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8028:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8167:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15197:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3616:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7298:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10116:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5119:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7914:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10717:89;;;;;;;;;;;;;:::i;:::-;;7371:66;;;;;;;;;;;;;:::i;:::-;;7527:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6363:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6296:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7443:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7221:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9558:550;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5237:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7636:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9039:511;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10370:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7781:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6432:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3709:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8718:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7148:67;7185:13;7208:5;;;;;;;;;;;;;;;;;7201:12;;7148:67;:::o;8028:133::-;8103:4;8110:37;8119:10;8131:7;8140:6;8110:8;:37::i;:::-;8155:4;8148:11;;8028:133;;;;:::o;8167:132::-;8220:7;8237:60;8275:21;8293:1;8275:9;:21::i;:::-;8237:33;8254:15;5983:42;8254:9;:15::i;:::-;8237:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8230:67;;8167:132;:::o;15197:309::-;15295:4;15312:36;15322:6;15330:9;15341:6;15312:9;:36::i;:::-;15359:117;15368:6;15376:10;15388:87;15424:6;15388:87;;;;;;;;;;;;;;;;;:11;:19;15400:6;15388:19;;;;;;;;;;;;;;;:31;15408:10;15388:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15359:8;:117::i;:::-;15494:4;15487:11;;15197:309;;;;;:::o;3616:87::-;3671:4;3696:5;;;;;;;;;;;3685:16;;:7;:16;;;3678:23;;3616:87;;;:::o;7298:67::-;7339:5;4922:1;7347:16;;7298:67;:::o;10116:246::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10206:15:::1;10224:63;10283:3;10224:54;10270:7;10231:8;10224:26;;;10259:4;10224:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10206:81;;10305:8;10298:25;;;10324:20;;;;;;;;;;;10346:7;10298:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10195:167;10116:246:::0;;:::o;5119:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7914:108::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8012:8:::1;7988:11;:21;8000:8;7988:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7914:108:::0;;:::o;10717:89::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10769:29:::1;10784:13;;10769:14;:29::i;:::-;10717:89::o:0;7371:66::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7431:4:::1;7414:14;;:21;;;;;;;;;;;;;;;;;;7371:66::o:0;7527:103::-;7593:7;7610:9;:18;7620:7;7610:18;;;;;;;;;;;;;;;;7603:25;;7527:103;;;:::o;6363:62::-;;;;:::o;6296:60::-;;;;:::o;7443:78::-;7495:7;7513:5;;;;;;;;;;;7506:12;;7443:78;:::o;7221:71::-;7260:13;7283:7;;;;;;;;;;;;;;;;;7276:14;;7221:71;:::o;9558:550::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9659:13:::1;9675:33;9702:5;9675:22;9692:4;9675:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9659:49;;9710:19;9732:34;9760:5;9732:23;9749:5;9732:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9710:56;;9768:17;9788:36;9818:5;9788:25;9805:7;9788:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9768:56;;9850:5;9835:12;:20;;;;9874:11;9857:14;:28;;;;9904:9;9887:14;:26;;;;9924:13;9940:30;9965:4;9940:20;9958:1;9940:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9924:46;;9998:5;9989;:14;;:38;;;;;10022:5;10007:11;:20;;9989:38;:60;;;;;10044:5;10031:9;:18;;9989:60;9981:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9648:460;;;;9558:550:::0;;;:::o;5237:19::-;;;;;;;;;;;;;:::o;7636:139::-;7714:4;7721:40;7731:10;7743:9;7754:6;7721:9;:40::i;:::-;7769:4;7762:11;;7636:139;;;;:::o;9039:511::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9231:10:::1;9216:12;:25;;;;9258:10;9243:12;:25;;;;9280:5;9270:7;:15;;;;9304:12;9287:14;:29;;;;9329:6;9318:8;:17;;;;9347:5;9337:7;:15;;;;9368:6;9354:11;:20;;;;9405:18;9421:1;9405:11;;:15;;:18;;;;:::i;:::-;9393:8;;:30;;:63;;;;;9438:18;9454:1;9438:11;;:15;;:18;;;;:::i;:::-;9427:7;;:29;;9393:63;:100;;;;;9475:18;9491:1;9475:11;;:15;;:18;;;;:::i;:::-;9460:11;;:33;;9393:100;9385:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;9039:511:::0;;;;;;;:::o;10370:337::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10512:10:::1;10491:18;;:31;;;;;;;;;;;;;;;;;;10545:10;10524:18;;:31;;;;;;;;;;;;;;;;;;10580:12;10557:20;;:35;;;;;;;;;;;;;;;;;;10629:4;10603:11;:23;10615:10;10603:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10661:4;10635:11;:23;10647:10;10635:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10695:4;10667:11;:25;10679:12;10667:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10370:337:::0;;;:::o;7781:127::-;7862:7;7879:11;:18;7891:5;7879:18;;;;;;;;;;;;;;;:27;7898:7;7879:27;;;;;;;;;;;;;;;;7872:34;;7781:127;;;;:::o;6432:62::-;;;;:::o;3709:111::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3783:3:::1;3775:5;;:11;;;;;;;;;;;;;;;;;;3793:25;3814:3;3793:25;;;;;;:::i;:::-;;;;;;;;3709:111:::0;:::o;8718:313::-;3575:19;3583:10;3575:7;:19::i;:::-;3567:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8858:11:::1;8845:10;:24;;;;8887:53;8932:6;8887:32;8904:14;8887:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8871:13;:69;;;;8969:54;9015:6;8969:33;8986:15;8969:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;8952:14;:71;;;;8718:313:::0;;;:::o;15514:335::-;15624:1;15607:19;;:5;:19;;;15599:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15705:1;15686:21;;:7;:21;;;15678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15787:6;15757:11;:18;15769:5;15757:18;;;;;;;;;;;;;;;:27;15776:7;15757:27;;;;;;;;;;;;;;;:36;;;;15825:7;15809:32;;15818:5;15809:32;;;15834:6;15809:32;;;;;;:::i;:::-;;;;;;;;15514:335;;;:::o;1355:98::-;1413:7;1444:1;1440;:5;;;;:::i;:::-;1433:12;;1355:98;;;;:::o;13757:1432::-;13872:1;13854:20;;:6;:20;;;13846:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13956:1;13935:23;;:9;:23;;;13927:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14027:17;14037:6;14027:9;:17::i;:::-;14017:6;:27;;14009:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14112:11;:19;14124:6;14112:19;;;;;;;;;;;;;;;;;;;;;;;;;14111:20;:47;;;;;14136:11;:22;14148:9;14136:22;;;;;;;;;;;;;;;;;;;;;;;;;14135:23;14111:47;14108:95;;;14168:14;;;;;;;;;;;14160:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14108:95;14217:11;:19;14229:6;14217:19;;;;;;;;;;;;;;;;;;;;;;;;;14216:20;:47;;;;;14241:11;:22;14253:9;14241:22;;;;;;;;;;;;;;;;;;;;;;;;;14240:23;14216:47;:77;;;;;14288:4;;;;;;;;;;;14267:26;;:9;:26;;;;14216:77;:107;;;;;5983:42;14297:26;;:9;:26;;;;14216:107;14213:219;;;14381:14;;14344:32;14369:6;14344:9;:20;14354:9;14344:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14343:52;;14335:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;14213:219;14455:4;;;;;;;;;;;14445:14;;:6;:14;;;14442:124;;14479:14;;14469:6;:24;;:47;;;;14497:11;:19;14509:6;14497:19;;;;;;;;;;;;;;;;;;;;;;;;;14469:47;:73;;;;14520:11;:22;14532:9;14520:22;;;;;;;;;;;;;;;;;;;;;;;;;14469:73;14461:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14442:124;14594:12;;14584:6;:22;;:45;;;;14610:11;:19;14622:6;14610:19;;;;;;;;;;;;;;;;;;;;;;;;;14584:45;:71;;;;14633:11;:22;14645:9;14633:22;;;;;;;;;;;;;;;;;;;;;;;;;14584:71;14576:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14705:4;;;;;;;;;;;14692:17;;:9;:17;;;:41;;;;;14714:11;:19;14726:6;14714:19;;;;;;;;;;;;;;;;;;;;;;;;;14713:20;14692:41;14689:71;;;14756:1;14735:9;;:23;;;;;;;:::i;:::-;;;;;;;;14689:71;14773:45;14792:6;14800:9;14811:6;14773:18;:45::i;:::-;14770:105;;;14820:29;14835:13;;14820:14;:29::i;:::-;14871:1;14851:9;:22;;;;14770:105;14905:29;14927:6;14905:9;:17;14915:6;14905:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14885:9;:17;14895:6;14885:17;;;;;;;;;;;;;;;:49;;;;14945:22;14970:32;14984:6;14992:9;14970:13;:32::i;:::-;:78;;15042:6;14970:78;;;15005:34;15013:6;15021:9;15032:6;15005:7;:34::i;:::-;14970:78;14945:103;;15082:40;15107:14;15082:9;:20;15092:9;15082:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15059:9;:20;15069:9;15059:20;;;;;;;;;;;;;;;:63;;;;15155:9;15138:43;;15147:6;15138:43;;;15166:14;15138:43;;;;;;:::i;:::-;;;;;;;;13835:1354;13757:1432;;;:::o;1779:240::-;1899:7;1957:1;1952;:6;;1960:12;1944:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1999:1;1995;:5;1988:12;;1779:240;;;;;:::o;1461:98::-;1519:7;1550:1;1546;:5;;;;:::i;:::-;1539:12;;1461:98;;;;:::o;1567:::-;1625:7;1656:1;1652;:5;;;;:::i;:::-;1645:12;;1567:98;;;;:::o;10814:1063::-;5606:4;5595:8;;:15;;;;;;;;;;;;;;;;;;10885:20:::1;10908:66;10972:1;10909:57;10951:14;;10909:37;10933:12;;10909:19;10926:1;10909:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;10908:63;;:66;;;;:::i;:::-;10885:89;;10985:32;11020:42;11049:12;11020:24;11031:12;;11020:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;10985:77;;11073:14;11090:36;11101:24;11090:6;:10;;:36;;;;:::i;:::-;11073:53;;11137:22;11162:21;11137:46;;11194:24;11211:6;11194:16;:24::i;:::-;11229:20;11252:41;11278:14;11252:21;:25;;:41;;;;:::i;:::-;11229:64;;11304:19;11325:48;11342:30;11359:12;;11342;:16;;:30;;;;:::i;:::-;11325:12;:16;;:48;;;;:::i;:::-;11304:69;;11384:29;11416;11432:12;;11416:11;:15;;:29;;;;:::i;:::-;11384:61;;11491:1;11459:21;:34;11456:103;;;11495:61;11508:24;11534:21;11495:12;:61::i;:::-;11456:103;11569:20;11592:36;11615:12;;11592:18;11608:1;11592:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11569:59;;11657:1;11642:12;:16;11639:73;;;11668:18;;;;;;;;;;;11660:36;;:50;11697:12;11660:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11639:73;11722:23;11748:21;11722:47;;11809:1;11783:15;:28;11780:90;;;11821:20;;;;;;;;;;;11813:38;;:55;11852:15;11813:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11780:90;10874:1003;;;;;;;;;5626:5:::0;5615:8;;:16;;;;;;;;;;;;;;;;;;10814:1063;:::o;1249:98::-;1307:7;1338:1;1334;:5;;;;:::i;:::-;1327:12;;1249:98;;;;:::o;8307:403::-;8409:4;8426:13;8452:14;;8442:6;:24;;8426:40;;8477:19;8527:13;;8499:24;8517:4;8499:9;:24::i;:::-;:41;;8477:63;;8559:8;;;;;;;;;;;8558:9;:24;;;;;8571:11;;;;;;;;;;;8558:24;:42;;;;;8586:14;;;;;;;;;;;8558:42;:54;;;;;8604:8;8558:54;:78;;;;;8617:11;:19;8629:6;8617:19;;;;;;;;;;;;;;;;;;;;;;;;;8616:20;8558:78;:99;;;;;8653:4;;;;;;;;;;;8640:17;;:9;:17;;;8558:99;:126;;;;;8674:10;;8661:9;;:23;;8558:126;:144;;;;;8688:14;8558:144;8551:151;;;;8307:403;;;;;:::o;12678:160::-;12759:4;12784:11;:19;12796:6;12784:19;;;;;;;;;;;;;;;;;;;;;;;;;12783:20;:47;;;;;12808:11;:22;12820:9;12808:22;;;;;;;;;;;;;;;;;;;;;;;;;12807:23;12783:47;12776:54;;12678:160;;;;:::o;13159:590::-;13245:7;13301:1;13268:30;13280:6;13288:9;13268:11;:30::i;:::-;:34;13265:462;;;13314:17;13334:59;13362:30;13374:6;13382:9;13362:11;:30::i;:::-;13334:23;13345:11;;13334:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13314:79;;13431:39;13460:9;13431;:24;13449:4;13431:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13404:9;:24;13422:4;13404:24;;;;;;;;;;;;;;;:66;;;;13511:4;13486:42;;13495:6;13486:42;;;13518:9;13486:42;;;;;;:::i;:::-;;;;;;;;13560:1;13542:7;;:20;:64;;;;;13599:7;;13566:30;13578:6;13586:9;13566:11;:30::i;:::-;:40;13542:64;13539:148;;;13608:77;13626:4;5983:42;13648:36;13676:7;;13648:23;13659:11;;13648:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13608:9;:77::i;:::-;13539:148;13704:21;13715:9;13704:6;:10;;:21;;;;:::i;:::-;13697:28;;;;;13265:462;13735:6;13728:13;;13159:590;;;;;;:::o;12236:434::-;12302:21;12340:1;12326:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:40;;12371:4;12353;12358:1;12353:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12397:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12387:4;12392:1;12387:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12421:53;12438:4;12453:6;;;;;;;;;;;12462:11;12421:8;:53::i;:::-;12485:6;;;;;;;;;;;:57;;;12557:11;12583:1;12599:4;12626;12646:15;12485:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12291:379;12236:434;:::o;11885:343::-;11966:53;11983:4;11998:6;;;;;;;;;;;12007:11;11966:8;:53::i;:::-;12030:6;;;;;;;;;;;:22;;;12060:9;12093:4;12113:11;12139:1;12155;12171:18;;;;;;;;;;;12204:15;12030:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11885:343;;:::o;12846:305::-;12925:7;12948:5;:13;12954:6;12948:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;12965:5;:16;12971:9;12965:16;;;;;;;;;;;;;;;;;;;;;;;;;12948:33;12945:76;;;12990:29;13014:3;12990:11;;:15;;:29;;;;:::i;:::-;12983:36;;;;12945:76;13047:4;;;;;;;;;;;13034:17;;:9;:17;;;13031:38;;13060:7;;13053:14;;;;13031:38;13092:4;;;;;;;;;;;13082:14;;:6;:14;;;13079:36;;13105:8;;13098:15;;;;13079:36;13132:11;;13125:18;;12846:305;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:116::-;5151:21;5166:5;5151:21;:::i;:::-;5144:5;5141:32;5131:60;;5187:1;5184;5177:12;5131:60;5081:116;:::o;5203:133::-;5246:5;5284:6;5271:20;5262:29;;5300:30;5324:5;5300:30;:::i;:::-;5203:133;;;;:::o;5342:468::-;5407:6;5415;5464:2;5452:9;5443:7;5439:23;5435:32;5432:119;;;5470:79;;:::i;:::-;5432:119;5590:1;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5561:117;5717:2;5743:50;5785:7;5776:6;5765:9;5761:22;5743:50;:::i;:::-;5733:60;;5688:115;5342:468;;;;;:::o;5816:118::-;5903:24;5921:5;5903:24;:::i;:::-;5898:3;5891:37;5816:118;;:::o;5940:222::-;6033:4;6071:2;6060:9;6056:18;6048:26;;6084:71;6152:1;6141:9;6137:17;6128:6;6084:71;:::i;:::-;5940:222;;;;:::o;6168:619::-;6245:6;6253;6261;6310:2;6298:9;6289:7;6285:23;6281:32;6278:119;;;6316:79;;:::i;:::-;6278:119;6436:1;6461:53;6506:7;6497:6;6486:9;6482:22;6461:53;:::i;:::-;6451:63;;6407:117;6563:2;6589:53;6634:7;6625:6;6614:9;6610:22;6589:53;:::i;:::-;6579:63;;6534:118;6691:2;6717:53;6762:7;6753:6;6742:9;6738:22;6717:53;:::i;:::-;6707:63;;6662:118;6168:619;;;;;:::o;6793:1203::-;6906:6;6914;6922;6930;6938;6946;6954;7003:3;6991:9;6982:7;6978:23;6974:33;6971:120;;;7010:79;;:::i;:::-;6971:120;7130:1;7155:53;7200:7;7191:6;7180:9;7176:22;7155:53;:::i;:::-;7145:63;;7101:117;7257:2;7283:53;7328:7;7319:6;7308:9;7304:22;7283:53;:::i;:::-;7273:63;;7228:118;7385:2;7411:53;7456:7;7447:6;7436:9;7432:22;7411:53;:::i;:::-;7401:63;;7356:118;7513:2;7539:53;7584:7;7575:6;7564:9;7560:22;7539:53;:::i;:::-;7529:63;;7484:118;7641:3;7668:53;7713:7;7704:6;7693:9;7689:22;7668:53;:::i;:::-;7658:63;;7612:119;7770:3;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7741:119;7899:3;7926:53;7971:7;7962:6;7951:9;7947:22;7926:53;:::i;:::-;7916:63;;7870:119;6793:1203;;;;;;;;;;:::o;8002:619::-;8079:6;8087;8095;8144:2;8132:9;8123:7;8119:23;8115:32;8112:119;;;8150:79;;:::i;:::-;8112:119;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8397:2;8423:53;8468:7;8459:6;8448:9;8444:22;8423:53;:::i;:::-;8413:63;;8368:118;8525:2;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8496:118;8002:619;;;;;:::o;8627:474::-;8695:6;8703;8752:2;8740:9;8731:7;8727:23;8723:32;8720:119;;;8758:79;;:::i;:::-;8720:119;8878:1;8903:53;8948:7;8939:6;8928:9;8924:22;8903:53;:::i;:::-;8893:63;;8849:117;9005:2;9031:53;9076:7;9067:6;9056:9;9052:22;9031:53;:::i;:::-;9021:63;;8976:118;8627:474;;;;;:::o;9107:104::-;9152:7;9181:24;9199:5;9181:24;:::i;:::-;9170:35;;9107:104;;;:::o;9217:138::-;9298:32;9324:5;9298:32;:::i;:::-;9291:5;9288:43;9278:71;;9345:1;9342;9335:12;9278:71;9217:138;:::o;9361:155::-;9415:5;9453:6;9440:20;9431:29;;9469:41;9504:5;9469:41;:::i;:::-;9361:155;;;;:::o;9522:345::-;9589:6;9638:2;9626:9;9617:7;9613:23;9609:32;9606:119;;;9644:79;;:::i;:::-;9606:119;9764:1;9789:61;9842:7;9833:6;9822:9;9818:22;9789:61;:::i;:::-;9779:71;;9735:125;9522:345;;;;:::o;9873:156::-;10013:8;10009:1;10001:6;9997:14;9990:32;9873:156;:::o;10035:365::-;10177:3;10198:66;10262:1;10257:3;10198:66;:::i;:::-;10191:73;;10273:93;10362:3;10273:93;:::i;:::-;10391:2;10386:3;10382:12;10375:19;;10035:365;;;:::o;10406:419::-;10572:4;10610:2;10599:9;10595:18;10587:26;;10659:9;10653:4;10649:20;10645:1;10634:9;10630:17;10623:47;10687:131;10813:4;10687:131;:::i;:::-;10679:139;;10406:419;;;:::o;10831:143::-;10888:5;10919:6;10913:13;10904:22;;10935:33;10962:5;10935:33;:::i;:::-;10831:143;;;;:::o;10980:351::-;11050:6;11099:2;11087:9;11078:7;11074:23;11070:32;11067:119;;;11105:79;;:::i;:::-;11067:119;11225:1;11250:64;11306:7;11297:6;11286:9;11282:22;11250:64;:::i;:::-;11240:74;;11196:128;10980:351;;;;:::o;11337:332::-;11458:4;11496:2;11485:9;11481:18;11473:26;;11509:71;11577:1;11566:9;11562:17;11553:6;11509:71;:::i;:::-;11590:72;11658:2;11647:9;11643:18;11634:6;11590:72;:::i;:::-;11337:332;;;;;:::o;11675:137::-;11729:5;11760:6;11754:13;11745:22;;11776:30;11800:5;11776:30;:::i;:::-;11675:137;;;;:::o;11818:345::-;11885:6;11934:2;11922:9;11913:7;11909:23;11905:32;11902:119;;;11940:79;;:::i;:::-;11902:119;12060:1;12085:61;12138:7;12129:6;12118:9;12114:22;12085:61;:::i;:::-;12075:71;;12031:125;11818:345;;;;:::o;12169:233::-;12309:34;12305:1;12297:6;12293:14;12286:58;12378:16;12373:2;12365:6;12361:15;12354:41;12169:233;:::o;12408:366::-;12550:3;12571:67;12635:2;12630:3;12571:67;:::i;:::-;12564:74;;12647:93;12736:3;12647:93;:::i;:::-;12765:2;12760:3;12756:12;12749:19;;12408:366;;;:::o;12780:419::-;12946:4;12984:2;12973:9;12969:18;12961:26;;13033:9;13027:4;13023:20;13019:1;13008:9;13004:17;12997:47;13061:131;13187:4;13061:131;:::i;:::-;13053:139;;12780:419;;;:::o;13205:231::-;13345:34;13341:1;13333:6;13329:14;13322:58;13414:14;13409:2;13401:6;13397:15;13390:39;13205:231;:::o;13442:366::-;13584:3;13605:67;13669:2;13664:3;13605:67;:::i;:::-;13598:74;;13681:93;13770:3;13681:93;:::i;:::-;13799:2;13794:3;13790:12;13783:19;;13442:366;;;:::o;13814:419::-;13980:4;14018:2;14007:9;14003:18;13995:26;;14067:9;14061:4;14057:20;14053:1;14042:9;14038:17;14031:47;14095:131;14221:4;14095:131;:::i;:::-;14087:139;;13814:419;;;:::o;14239:60::-;14267:3;14288:5;14281:12;;14239:60;;;:::o;14305:142::-;14355:9;14388:53;14406:34;14415:24;14433:5;14415:24;:::i;:::-;14406:34;:::i;:::-;14388:53;:::i;:::-;14375:66;;14305:142;;;:::o;14453:126::-;14503:9;14536:37;14567:5;14536:37;:::i;:::-;14523:50;;14453:126;;;:::o;14585:134::-;14643:9;14676:37;14707:5;14676:37;:::i;:::-;14663:50;;14585:134;;;:::o;14725:147::-;14820:45;14859:5;14820:45;:::i;:::-;14815:3;14808:58;14725:147;;:::o;14878:238::-;14979:4;15017:2;15006:9;15002:18;14994:26;;15030:79;15106:1;15095:9;15091:17;15082:6;15030:79;:::i;:::-;14878:238;;;;:::o;15122:223::-;15262:34;15258:1;15250:6;15246:14;15239:58;15331:6;15326:2;15318:6;15314:15;15307:31;15122:223;:::o;15351:366::-;15493:3;15514:67;15578:2;15573:3;15514:67;:::i;:::-;15507:74;;15590:93;15679:3;15590:93;:::i;:::-;15708:2;15703:3;15699:12;15692:19;;15351:366;;;:::o;15723:419::-;15889:4;15927:2;15916:9;15912:18;15904:26;;15976:9;15970:4;15966:20;15962:1;15951:9;15947:17;15940:47;16004:131;16130:4;16004:131;:::i;:::-;15996:139;;15723:419;;;:::o;16148:221::-;16288:34;16284:1;16276:6;16272:14;16265:58;16357:4;16352:2;16344:6;16340:15;16333:29;16148:221;:::o;16375:366::-;16517:3;16538:67;16602:2;16597:3;16538:67;:::i;:::-;16531:74;;16614:93;16703:3;16614:93;:::i;:::-;16732:2;16727:3;16723:12;16716:19;;16375:366;;;:::o;16747:419::-;16913:4;16951:2;16940:9;16936:18;16928:26;;17000:9;16994:4;16990:20;16986:1;16975:9;16971:17;16964:47;17028:131;17154:4;17028:131;:::i;:::-;17020:139;;16747:419;;;:::o;17172:180::-;17220:77;17217:1;17210:88;17317:4;17314:1;17307:15;17341:4;17338:1;17331:15;17358:194;17398:4;17418:20;17436:1;17418:20;:::i;:::-;17413:25;;17452:20;17470:1;17452:20;:::i;:::-;17447:25;;17496:1;17493;17489:9;17481:17;;17520:1;17514:4;17511:11;17508:37;;;17525:18;;:::i;:::-;17508:37;17358:194;;;;:::o;17558:224::-;17698:34;17694:1;17686:6;17682:14;17675:58;17767:7;17762:2;17754:6;17750:15;17743:32;17558:224;:::o;17788:366::-;17930:3;17951:67;18015:2;18010:3;17951:67;:::i;:::-;17944:74;;18027:93;18116:3;18027:93;:::i;:::-;18145:2;18140:3;18136:12;18129:19;;17788:366;;;:::o;18160:419::-;18326:4;18364:2;18353:9;18349:18;18341:26;;18413:9;18407:4;18403:20;18399:1;18388:9;18384:17;18377:47;18441:131;18567:4;18441:131;:::i;:::-;18433:139;;18160:419;;;:::o;18585:222::-;18725:34;18721:1;18713:6;18709:14;18702:58;18794:5;18789:2;18781:6;18777:15;18770:30;18585:222;:::o;18813:366::-;18955:3;18976:67;19040:2;19035:3;18976:67;:::i;:::-;18969:74;;19052:93;19141:3;19052:93;:::i;:::-;19170:2;19165:3;19161:12;19154:19;;18813:366;;;:::o;19185:419::-;19351:4;19389:2;19378:9;19374:18;19366:26;;19438:9;19432:4;19428:20;19424:1;19413:9;19409:17;19402:47;19466:131;19592:4;19466:131;:::i;:::-;19458:139;;19185:419;;;:::o;19610:236::-;19750:34;19746:1;19738:6;19734:14;19727:58;19819:19;19814:2;19806:6;19802:15;19795:44;19610:236;:::o;19852:366::-;19994:3;20015:67;20079:2;20074:3;20015:67;:::i;:::-;20008:74;;20091:93;20180:3;20091:93;:::i;:::-;20209:2;20204:3;20200:12;20193:19;;19852:366;;;:::o;20224:419::-;20390:4;20428:2;20417:9;20413:18;20405:26;;20477:9;20471:4;20467:20;20463:1;20452:9;20448:17;20441:47;20505:131;20631:4;20505:131;:::i;:::-;20497:139;;20224:419;;;:::o;20649:164::-;20789:16;20785:1;20777:6;20773:14;20766:40;20649:164;:::o;20819:366::-;20961:3;20982:67;21046:2;21041:3;20982:67;:::i;:::-;20975:74;;21058:93;21147:3;21058:93;:::i;:::-;21176:2;21171:3;21167:12;21160:19;;20819:366;;;:::o;21191:419::-;21357:4;21395:2;21384:9;21380:18;21372:26;;21444:9;21438:4;21434:20;21430:1;21419:9;21415:17;21408:47;21472:131;21598:4;21472:131;:::i;:::-;21464:139;;21191:419;;;:::o;21616:180::-;21756:32;21752:1;21744:6;21740:14;21733:56;21616:180;:::o;21802:366::-;21944:3;21965:67;22029:2;22024:3;21965:67;:::i;:::-;21958:74;;22041:93;22130:3;22041:93;:::i;:::-;22159:2;22154:3;22150:12;22143:19;;21802:366;;;:::o;22174:419::-;22340:4;22378:2;22367:9;22363:18;22355:26;;22427:9;22421:4;22417:20;22413:1;22402:9;22398:17;22391:47;22455:131;22581:4;22455:131;:::i;:::-;22447:139;;22174:419;;;:::o;22599:167::-;22739:19;22735:1;22727:6;22723:14;22716:43;22599:167;:::o;22772:366::-;22914:3;22935:67;22999:2;22994:3;22935:67;:::i;:::-;22928:74;;23011:93;23100:3;23011:93;:::i;:::-;23129:2;23124:3;23120:12;23113:19;;22772:366;;;:::o;23144:419::-;23310:4;23348:2;23337:9;23333:18;23325:26;;23397:9;23391:4;23387:20;23383:1;23372:9;23368:17;23361:47;23425:131;23551:4;23425:131;:::i;:::-;23417:139;;23144:419;;;:::o;23569:191::-;23609:3;23628:20;23646:1;23628:20;:::i;:::-;23623:25;;23662:20;23680:1;23662:20;:::i;:::-;23657:25;;23705:1;23702;23698:9;23691:16;;23726:3;23723:1;23720:10;23717:36;;;23733:18;;:::i;:::-;23717:36;23569:191;;;;:::o;23766:410::-;23806:7;23829:20;23847:1;23829:20;:::i;:::-;23824:25;;23863:20;23881:1;23863:20;:::i;:::-;23858:25;;23918:1;23915;23911:9;23940:30;23958:11;23940:30;:::i;:::-;23929:41;;24119:1;24110:7;24106:15;24103:1;24100:22;24080:1;24073:9;24053:83;24030:139;;24149:18;;:::i;:::-;24030:139;23814:362;23766:410;;;;:::o;24182:180::-;24230:77;24227:1;24220:88;24327:4;24324:1;24317:15;24351:4;24348:1;24341:15;24368:185;24408:1;24425:20;24443:1;24425:20;:::i;:::-;24420:25;;24459:20;24477:1;24459:20;:::i;:::-;24454:25;;24498:1;24488:35;;24503:18;;:::i;:::-;24488:35;24545:1;24542;24538:9;24533:14;;24368:185;;;;:::o;24559:180::-;24607:77;24604:1;24597:88;24704:4;24701:1;24694:15;24728:4;24725:1;24718:15;24745:180;24793:77;24790:1;24783:88;24890:4;24887:1;24880:15;24914:4;24911:1;24904:15;24931:143;24988:5;25019:6;25013:13;25004:22;;25035:33;25062:5;25035:33;:::i;:::-;24931:143;;;;:::o;25080:351::-;25150:6;25199:2;25187:9;25178:7;25174:23;25170:32;25167:119;;;25205:79;;:::i;:::-;25167:119;25325:1;25350:64;25406:7;25397:6;25386:9;25382:22;25350:64;:::i;:::-;25340:74;;25296:128;25080:351;;;;:::o;25437:85::-;25482:7;25511:5;25500:16;;25437:85;;;:::o;25528:158::-;25586:9;25619:61;25637:42;25646:32;25672:5;25646:32;:::i;:::-;25637:42;:::i;:::-;25619:61;:::i;:::-;25606:74;;25528:158;;;:::o;25692:147::-;25787:45;25826:5;25787:45;:::i;:::-;25782:3;25775:58;25692:147;;:::o;25845:114::-;25912:6;25946:5;25940:12;25930:22;;25845:114;;;:::o;25965:184::-;26064:11;26098:6;26093:3;26086:19;26138:4;26133:3;26129:14;26114:29;;25965:184;;;;:::o;26155:132::-;26222:4;26245:3;26237:11;;26275:4;26270:3;26266:14;26258:22;;26155:132;;;:::o;26293:108::-;26370:24;26388:5;26370:24;:::i;:::-;26365:3;26358:37;26293:108;;:::o;26407:179::-;26476:10;26497:46;26539:3;26531:6;26497:46;:::i;:::-;26575:4;26570:3;26566:14;26552:28;;26407:179;;;;:::o;26592:113::-;26662:4;26694;26689:3;26685:14;26677:22;;26592:113;;;:::o;26741:732::-;26860:3;26889:54;26937:5;26889:54;:::i;:::-;26959:86;27038:6;27033:3;26959:86;:::i;:::-;26952:93;;27069:56;27119:5;27069:56;:::i;:::-;27148:7;27179:1;27164:284;27189:6;27186:1;27183:13;27164:284;;;27265:6;27259:13;27292:63;27351:3;27336:13;27292:63;:::i;:::-;27285:70;;27378:60;27431:6;27378:60;:::i;:::-;27368:70;;27224:224;27211:1;27208;27204:9;27199:14;;27164:284;;;27168:14;27464:3;27457:10;;26865:608;;;26741:732;;;;:::o;27479:831::-;27742:4;27780:3;27769:9;27765:19;27757:27;;27794:71;27862:1;27851:9;27847:17;27838:6;27794:71;:::i;:::-;27875:80;27951:2;27940:9;27936:18;27927:6;27875:80;:::i;:::-;28002:9;27996:4;27992:20;27987:2;27976:9;27972:18;27965:48;28030:108;28133:4;28124:6;28030:108;:::i;:::-;28022:116;;28148:72;28216:2;28205:9;28201:18;28192:6;28148:72;:::i;:::-;28230:73;28298:3;28287:9;28283:19;28274:6;28230:73;:::i;:::-;27479:831;;;;;;;;:::o;28316:807::-;28565:4;28603:3;28592:9;28588:19;28580:27;;28617:71;28685:1;28674:9;28670:17;28661:6;28617:71;:::i;:::-;28698:72;28766:2;28755:9;28751:18;28742:6;28698:72;:::i;:::-;28780:80;28856:2;28845:9;28841:18;28832:6;28780:80;:::i;:::-;28870;28946:2;28935:9;28931:18;28922:6;28870:80;:::i;:::-;28960:73;29028:3;29017:9;29013:19;29004:6;28960:73;:::i;:::-;29043;29111:3;29100:9;29096:19;29087:6;29043:73;:::i;:::-;28316:807;;;;;;;;;:::o;29129:663::-;29217:6;29225;29233;29282:2;29270:9;29261:7;29257:23;29253:32;29250:119;;;29288:79;;:::i;:::-;29250:119;29408:1;29433:64;29489:7;29480:6;29469:9;29465:22;29433:64;:::i;:::-;29423:74;;29379:128;29546:2;29572:64;29628:7;29619:6;29608:9;29604:22;29572:64;:::i;:::-;29562:74;;29517:129;29685:2;29711:64;29767:7;29758:6;29747:9;29743:22;29711:64;:::i;:::-;29701:74;;29656:129;29129:663;;;;;:::o
Swarm Source
ipfs://1482e13fc07d252719550869a5e2a760f533628ef468268973522f77d9cf5ae1
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)