Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Source Code
Overview
Max Total Supply
100,000,000 DGN
Holders
211
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
TOKEN
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-09-03
*/
/**
Web: TheDGN.io
TG: https://t.me/DGNPlayNow
X: https://x.com/DGNPlaynow
Linktree: https://linktr.ee/DGNPlayNow
*/
pragma solidity 0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
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);
}
interface IERC20Metadata is IERC20{
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
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);
}
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() external virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
return account.code.length > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
}
interface ILpPair {
function sync() external;
}
interface IDexRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}
interface IDexFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
contract TOKEN is ERC20, Ownable {
// Mappings
mapping(address => bool) public exemptFromFees;
mapping(address => bool) public exemptFromLimits;
mapping(address => bool) public isAMMPair;
mapping(address => uint256) private _holderLastTransferBlock; // MEV protection
mapping(address => bool) private bots;
// Addresses
address public marketingAddress;
address public devAddress;
address public blacklistOwner;
address public immutable lpPair;
address public immutable WETH;
// Contracts
IDexRouter public immutable dexRouter;
// Booleans
bool public tradingAllowed;
bool public antiMevEnabled = false;
bool public limited = true;
bool public transferDelayEnabled = true;
// Structs
struct TxLimits {
uint128 transactionLimit;
uint128 walletLimit;
}
struct Taxes {
uint64 marketingTax;
uint64 devTax;
uint64 liquidityTax;
uint64 totalTax;
}
struct TokensForTax {
uint80 tokensForMarketing;
uint80 tokensForLiquidity;
uint80 tokensForDev;
bool gasSaver;
}
// Public Variables
TxLimits public txLimits;
Taxes public buyTax;
Taxes public sellTax;
TokensForTax public tokensForTax;
// Constants
uint64 public constant FEE_DIVISOR = 10000;
uint256 public launchBlock;
// Swap Variables
uint256 public swapTokensAtAmt;
uint256 public lastSwapBackBlock;
// Events
event UpdatedTransactionLimit(uint newMax);
event UpdatedWalletLimit(uint newMax);
event SetExemptFromFees(address _address, bool _isExempt);
event SetExemptFromLimits(address _address, bool _isExempt);
event RemovedLimits();
event BlacklistOwnerRenounced(address previousOwner, address newOwner);
event UpdatedBuyTax(uint newAmt);
event UpdatedSellTax(uint newAmt);
event removeTaxEvent(uint newAmt);
// Dead address constant
address public constant DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD;
uint128 private launchTax = 700; // Initial value set to 500 (5%)
// constructor
constructor()
ERC20("Decentralized Gaming Network", "DGN")
{
_mint(msg.sender, 100000000 * (10 ** 18));
address _v2Router;
// @dev assumes WETH pair
if(block.chainid == 1){
_v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
} else if(block.chainid == 5){
_v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
} else if(block.chainid == 97){
_v2Router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
} else if(block.chainid == 56){
_v2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
} else if(block.chainid == 42161){
_v2Router = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506;
} else if(block.chainid == 8453){
_v2Router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24;
} else {
revert("Chain not configured");
}
dexRouter = IDexRouter(_v2Router);
txLimits.transactionLimit = uint128(totalSupply() * 10 / 1000);
txLimits.walletLimit = uint128(totalSupply() * 10 / 1000);
swapTokensAtAmt = totalSupply() * 25 / 100000;
marketingAddress = msg.sender; // update
devAddress = msg.sender; // update
blacklistOwner = msg.sender;
buyTax.marketingTax = 2000;// 1% = 100
buyTax.liquidityTax = 0;
buyTax.devTax = 0;
buyTax.totalTax = buyTax.marketingTax + buyTax.liquidityTax + buyTax.devTax;
sellTax.marketingTax = 2000;
sellTax.liquidityTax = 0;
sellTax.devTax = 0;
sellTax.totalTax = sellTax.marketingTax + sellTax.liquidityTax + sellTax.devTax;
tokensForTax.gasSaver = true;
WETH = dexRouter.WETH();
lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), WETH);
isAMMPair[lpPair] = true;
exemptFromLimits[lpPair] = true;
exemptFromLimits[msg.sender] = true;
exemptFromLimits[address(this)] = true;
exemptFromFees[msg.sender] = true;
exemptFromFees[address(this)] = true;
exemptFromFees[address(dexRouter)] = true;
_approve(address(this), address(dexRouter), type(uint256).max);
_approve(address(msg.sender), address(dexRouter), totalSupply());
}
function isBot(address a) public view returns (bool){
return bots[a];
}
function _transfer(
address from,
address to,
uint256 amount
) internal virtual override {
if(!exemptFromFees[from] && !exemptFromFees[to]){
require(!bots[from] && !bots[to], "Bot");
require(tradingAllowed, "Trading not active");
amount -= handleTax(from, to, amount);
checkLimits(from, to, amount);
}
super._transfer(from,to,amount);
}
function checkLimits(address from, address to, uint256 amount) internal {
if(limited){
bool exFromLimitsTo = exemptFromLimits[to];
uint256 balanceOfTo = balanceOf(to);
TxLimits memory _txLimits = txLimits;
if(block.number == launchBlock + 1 || block.number == launchBlock + 2){
_txLimits.transactionLimit = uint128(totalSupply() * 25 / 10000);
_txLimits.walletLimit = uint128(totalSupply() * 25 / 10000);
}
// buy
if (isAMMPair[from] && !exFromLimitsTo) {
require(amount <= _txLimits.transactionLimit, "Max Txn");
require(amount + balanceOfTo <= _txLimits.walletLimit, "Max Wallet");
}
// sell
else if (isAMMPair[to] && !exemptFromLimits[from]) {
require(amount <= _txLimits.transactionLimit, "Max Txn");
}
else if(!exFromLimitsTo) {
require(amount + balanceOfTo <= _txLimits.walletLimit, "Max Wallet");
}
if(transferDelayEnabled){
if (to != address(dexRouter) && to != address(lpPair)){
require(_holderLastTransferBlock[tx.origin] + 10 < block.number, "Transfer Delay");
_holderLastTransferBlock[to] = block.number;
_holderLastTransferBlock[tx.origin] = block.number;
if(from == address(lpPair)){
require(tx.origin == to, "no buying to external wallets yet");
}
}
}
}
}
function handleTax(address from, address to, uint256 amount) internal returns (uint256){
if(balanceOf(address(this)) >= swapTokensAtAmt && !isAMMPair[from] && lastSwapBackBlock + 2 <= block.number) {
convertTaxes();
}
uint128 tax = 0;
Taxes memory taxes;
if (isAMMPair[to]){
taxes = sellTax;
} else if(isAMMPair[from]){
taxes = buyTax;
}
if(taxes.totalTax > 0){
TokensForTax memory tokensForTaxUpdate = tokensForTax;
if(launchBlock == block.number){
if (isAMMPair[from] || isAMMPair[to]){
tax = uint128(amount * launchTax / FEE_DIVISOR);
}
} else if(block.number == launchBlock + 1 || block.number == launchBlock + 2){
if (isAMMPair[from] || isAMMPair[to]){
tax = uint128(amount * 4000 / FEE_DIVISOR);
}
} else {
tax = uint128(amount * taxes.totalTax / FEE_DIVISOR);
}
tokensForTaxUpdate.tokensForLiquidity += uint80(tax * taxes.liquidityTax / taxes.totalTax / 1e9);
tokensForTaxUpdate.tokensForMarketing += uint80(tax * taxes.marketingTax / taxes.totalTax / 1e9);
tokensForTaxUpdate.tokensForDev += uint80(tax * taxes.devTax / taxes.totalTax / 1e9);
tokensForTax = tokensForTaxUpdate;
super._transfer(from, address(this), tax);
}
return tax;
}
function swapTokensForETH(uint256 tokenAmt) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmt,
0,
path,
address(this),
block.timestamp
);
}
function convertTaxes() private {
uint256 contractBalance = balanceOf(address(this));
TokensForTax memory tokensForTaxMem = tokensForTax;
uint256 totalTokensToSwap = tokensForTaxMem.tokensForLiquidity + tokensForTaxMem.tokensForMarketing + tokensForTaxMem.tokensForDev;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > swapTokensAtAmt * 10){
contractBalance = swapTokensAtAmt * 10;
}
if(tokensForTaxMem.tokensForLiquidity > 0){
uint256 liquidityTokens = contractBalance * tokensForTaxMem.tokensForLiquidity / totalTokensToSwap;
super._transfer(address(this), lpPair, liquidityTokens);
try ILpPair(lpPair).sync(){} catch {}
contractBalance -= liquidityTokens;
totalTokensToSwap -= tokensForTaxMem.tokensForLiquidity;
}
if(contractBalance > 0){
swapTokensForETH(contractBalance);
uint256 ethBalance = address(this).balance;
bool success;
if(tokensForTaxMem.tokensForDev > 0){
(success,) = devAddress.call{value: ethBalance * tokensForTaxMem.tokensForDev / totalTokensToSwap}("");
}
ethBalance = address(this).balance;
if(ethBalance > 0){
(success,) = marketingAddress.call{value: ethBalance}("");
}
}
tokensForTaxMem.tokensForLiquidity = 0;
tokensForTaxMem.tokensForMarketing = 0;
tokensForTaxMem.tokensForDev = 0;
tokensForTax = tokensForTaxMem;
lastSwapBackBlock = block.number;
}
// owner functions
function setExemptFromFee(address _address, bool _isExempt) external onlyOwner {
require(_address != address(0), "Zero Address");
require(_address != address(this), "Cannot unexempt contract");
exemptFromFees[_address] = _isExempt;
emit SetExemptFromFees(_address, _isExempt);
}
function setExemptFromLimit(address _address, bool _isExempt) external onlyOwner {
require(_address != address(0), "Zero Address");
if(!_isExempt){
require(_address != lpPair, "Cannot remove pair");
}
exemptFromLimits[_address] = _isExempt;
emit SetExemptFromLimits(_address, _isExempt);
}
function updateTransactionLimit(uint128 newNumInTokens) external onlyOwner {
require(newNumInTokens >= (totalSupply() * 1 / 1000)/(10**decimals()), "Too low");
txLimits.transactionLimit = uint128(newNumInTokens * (10**decimals()));
emit UpdatedTransactionLimit(txLimits.transactionLimit);
}
function updateWalletLimit(uint128 newNumInTokens) external onlyOwner {
require(newNumInTokens >= (totalSupply() * 1 / 1000)/(10**decimals()), "Too low");
txLimits.walletLimit = uint128(newNumInTokens * (10**decimals()));
emit UpdatedWalletLimit(txLimits.walletLimit);
}
function updateSwapTokensAmt(uint256 newAmount) external onlyOwner {
require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
swapTokensAtAmt = newAmount;
}
function updateBuyTax(uint64 _marketingTax, uint64 _liquidityTax, uint64 _devTax) external onlyOwner {
Taxes memory taxes;
taxes.marketingTax = _marketingTax;
taxes.liquidityTax = _liquidityTax;
taxes.devTax = _devTax;
taxes.totalTax = _marketingTax + _liquidityTax + _devTax;
require(taxes.totalTax <= 6000 || taxes.totalTax <= buyTax.totalTax, "Keep tax below 60%");
emit UpdatedBuyTax(taxes.totalTax);
buyTax = taxes;
}
function updateSellTax(uint64 _marketingTax, uint64 _liquidityTax, uint64 _devTax) external onlyOwner {
Taxes memory taxes;
taxes.marketingTax = _marketingTax;
taxes.liquidityTax = _liquidityTax;
taxes.devTax = _devTax;
taxes.totalTax = _marketingTax + _liquidityTax + _devTax;
require(taxes.totalTax <= 6000 || taxes.totalTax <= sellTax.totalTax, "Keep tax below 60%");
emit UpdatedSellTax(taxes.totalTax);
sellTax = taxes;
}
function LiveNow() external onlyOwner {
require(!tradingAllowed, "Trading already enabled");
tradingAllowed = true;
launchBlock = block.number;
lastSwapBackBlock = block.number;
}
function removeLimits() external onlyOwner {
limited = false;
TxLimits memory _txLimits;
uint256 supply = totalSupply();
_txLimits.transactionLimit = uint128(supply);
_txLimits.walletLimit = uint128(supply);
txLimits = _txLimits;
emit RemovedLimits();
}
function removeTransferDelay() external onlyOwner {
require(transferDelayEnabled, "Already disabled!");
transferDelayEnabled = false;
}
function withdrawStuckETH() external {
bool success;
(success,) = address(devAddress).call{value: address(this).balance}("");
}
function rescueTokens(address _token) external {
require(_token != address(0), "_token address cannot be 0");
require(msg.sender == marketingAddress || msg.sender == devAddress, "Not dev");
uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
SafeERC20.safeTransfer(IERC20(_token),address(devAddress), _contractBalance);
}
function updateMarketingAddress(address _address) external onlyOwner {
require(_address != address(0), "zero address");
marketingAddress = _address;
}
function updateDevAddress(address _address) external onlyOwner {
require(_address != address(0), "zero address");
devAddress = _address;
}
function addBots(address[] memory bots_) external {
require(msg.sender == blacklistOwner, "Not authorized");
for (uint i = 0; i < bots_.length; i++) {
bots[bots_[i]] = true;
}
}
function delBots(address[] memory notbot) external {
require(msg.sender == blacklistOwner, "Not authorized");
for (uint i = 0; i < notbot.length; i++) {
bots[notbot[i]] = false;
}
}
function renounceBlacklistOwner() external {
require(msg.sender == blacklistOwner, "Not authorized");
blacklistOwner = address(0);
emit BlacklistOwnerRenounced(msg.sender, address(0));
}
function setBlacklistOwner(address _address) external {
require(msg.sender == blacklistOwner, "Not authorized");
blacklistOwner = _address;
}
function airdrop(address[] calldata recipients, uint256[] calldata amounts) external onlyOwner {
require(recipients.length == amounts.length, "Arrays must be same length");
require(recipients.length > 0, "Empty arrays");
uint256 totalAmount;
for(uint256 i = 0; i < amounts.length; i++) {
totalAmount += amounts[i];
}
require(balanceOf(msg.sender) >= totalAmount, "Insufficient balance");
for(uint256 i = 0; i < recipients.length; i++) {
require(recipients[i] != address(0), "Cannot airdrop to zero address");
_transfer(msg.sender, recipients[i], amounts[i]);
}
}
function setLaunchTax(uint128 newTax) external onlyOwner {
require(newTax <= 9900, "Launch tax cannot exceed 99%"); // Safety check
launchTax = newTax;
}
receive() payable external {}
}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":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"BlacklistOwnerRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedSellTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"removeTaxEvent","type":"event"},{"inputs":[],"name":"DEAD_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiveNow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":[],"name":"antiMevEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"blacklistOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint64","name":"marketingTax","type":"uint64"},{"internalType":"uint64","name":"devTax","type":"uint64"},{"internalType":"uint64","name":"liquidityTax","type":"uint64"},{"internalType":"uint64","name":"totalTax","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapBackBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklistOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint64","name":"marketingTax","type":"uint64"},{"internalType":"uint64","name":"devTax","type":"uint64"},{"internalType":"uint64","name":"liquidityTax","type":"uint64"},{"internalType":"uint64","name":"totalTax","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setBlacklistOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newTax","type":"uint128"}],"name":"setLaunchTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint80","name":"tokensForMarketing","type":"uint80"},{"internalType":"uint80","name":"tokensForLiquidity","type":"uint80"},{"internalType":"uint80","name":"tokensForDev","type":"uint80"},{"internalType":"bool","name":"gasSaver","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txLimits","outputs":[{"internalType":"uint128","name":"transactionLimit","type":"uint128"},{"internalType":"uint128","name":"walletLimit","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"_marketingTax","type":"uint64"},{"internalType":"uint64","name":"_liquidityTax","type":"uint64"},{"internalType":"uint64","name":"_devTax","type":"uint64"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_marketingTax","type":"uint64"},{"internalType":"uint64","name":"_liquidityTax","type":"uint64"},{"internalType":"uint64","name":"_devTax","type":"uint64"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newNumInTokens","type":"uint128"}],"name":"updateTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newNumInTokens","type":"uint128"}],"name":"updateWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600d805461010160b01b62ffffff60a81b19909116179055601580546001600160801b0319166102bc17905534801561003b575f80fd5b506040518060400160405280601c81526020017f446563656e7472616c697a65642047616d696e67204e6574776f726b00000000815250604051806040016040528060038152602001622223a760e91b815250816003908161009d91906108a5565b5060046100aa82826108a5565b5050505f6100bc61062360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061011e336a52b7d2dcc80cd2e4000000610627565b5f466001036101425750737a250d5630b4cf539739df2c5dacb4c659f2488d610240565b466005036101655750737a250d5630b4cf539739df2c5dacb4c659f2488d610240565b46606103610188575073d99d1c33f9fc3444f8101754abc46c52416550d1610240565b466038036101ab57507310ed43c718714eb63d5aa57b78b54704e256024e610240565b4661a4b1036101cf5750731b02da8cb0d097eb8d57a175b88c7d8b47997506610240565b46612105036101f35750734752ba5dbc23f44d87826276bf6fd6b1c372ad24610240565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660c0526103e861025960025490565b61026490600a610973565b61026e9190610990565b600e80546001600160801b0319166001600160801b03929092169190911790556103e861029a60025490565b6102a590600a610973565b6102af9190610990565b600e80546001600160801b03928316600160801b029216919091179055620186a06102d960025490565b6102e4906019610973565b6102ee9190610990565b601355600b8054336001600160a01b03199182168117909255600c8054821683179055600d80549091169091179055600f80546107d06001600160c01b03199091168117918290556001600160401b0368010000000000000000830481169261036292600160801b909104909116906109af565b61036c91906109af565b600f80546001600160c01b0316600160c01b6001600160401b0393841602179055601080546107d06001600160c01b03199091168117918290556801000000000000000082048316926103c792600160801b900416906109af565b6103d191906109af565b601080546001600160401b0392909216600160c01b026001600160c01b039092169190911790556011805460ff60f01b1916600160f01b17905560c051604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa158015610453573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047791906109ce565b6001600160a01b031660a0816001600160a01b03168152505060c0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f291906109ce565b60a0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610540573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056491906109ce565b6001600160a01b0390811660808190525f9081526008602090815260408083208054600160ff19918216811790925560078452828520805482168317905533808652838620805483168417905530808752848720805484168517905590865260069094528285208054821683179055838552828520805482168317905560c0519586168552919093208054909116909217909155610603915f196106ea565b61061d3360c0516106186106e460201b60201c565b6106ea565b50610a0e565b3390565b6001600160a01b03821661067d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610237565b8060025f82825461068e91906109fb565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60025490565b6001600160a01b03831661074c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610237565b6001600160a01b0382166107ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610237565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061083557607f821691505b60208210810361085357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156108a057805f5260205f20601f840160051c8101602085101561087e5750805b601f840160051c820191505b8181101561089d575f815560010161088a565b50505b505050565b81516001600160401b038111156108be576108be61080d565b6108d2816108cc8454610821565b84610859565b6020601f821160018114610904575f83156108ed5750848201515b5f19600385901b1c1916600184901b17845561089d565b5f84815260208120601f198516915b828110156109335787850151825560209485019460019092019101610913565b508482101561095057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761098a5761098a61095f565b92915050565b5f826109aa57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160401b03818116838216019081111561098a5761098a61095f565b5f602082840312156109de575f80fd5b81516001600160a01b03811681146109f4575f80fd5b9392505050565b8082018082111561098a5761098a61095f565b60805160a05160c051613b95610a705f395f81816103cf01528181612be7015261339401525f81816109c7015261333d01525f81816105f901528181611da401528181612c2401528181612cde0152818161301f01526130460152613b955ff3fe608060405260043610610368575f3560e01c80636eb14903116101c8578063a9059cbb116100fd578063ccad03e11161009d578063f270fde41161006d578063f270fde414610b1b578063f2fde38b14610b65578063f5648a4f14610b84578063f8686f0714610b98575f80fd5b8063ccad03e114610aa9578063d00efb2f14610ac8578063d34628cc14610add578063dd62ed3e14610afc575f80fd5b8063bedafd01116100d8578063bedafd0114610a17578063c78d0fa014610a36578063c876d0b914610a4b578063cc1776d314610a6b575f80fd5b8063a9059cbb14610997578063ad5c4648146109b6578063b0249cc6146109e9575f80fd5b80638d3e6e401161016857806395d89b411161014357806395d89b41146109185780639e93ad8e1461092c578063a457c2d714610959578063a5ece94114610978575f80fd5b80638d3e6e40146108ae5780638da5cb5b146108dc5780639435bb3a146108f9575f80fd5b8063751039fc116101a3578063751039fc1461083c5780638503376214610850578063860a32ec1461086f5780638becc57d1461088f575f80fd5b80636eb14903146107d557806370a08231146107f4578063715018a614610828575f80fd5b8063395093511161029e57806353371be01161023e578063627e9d8e11610219578063627e9d8e1461070357806366ebd39a1461072357806367243482146107425780636d7adcad14610761575f80fd5b806353371be0146106a15780635a90a49e146106c15780636058627a146106ef575f80fd5b8063432e95a511610279578063432e95a5146105d3578063452ed4f1146105e85780634e6fd6c41461061b5780634f7041a514610630575f80fd5b8063395093511461055e5780633ad10ef61461057d5780633bbac5791461059c575f80fd5b80632104591811610309578063286965a7116102e4578063286965a7146104e6578063313ce5671461050557806331c2d8471461052057806336e18e191461053f575f80fd5b806321045918146104895780632369bf83146104a857806323b872dd146104c7575f80fd5b8063095ea7b311610344578063095ea7b31461040957806310560b3f1461043857806318160ddd146104575780632010c57914610475575f80fd5b8062ae3bf81461037357806306fdde03146103945780630758d924146103be575f80fd5b3661036f57005b5f80fd5b34801561037e575f80fd5b5061039261038d3660046134b4565b610bac565b005b34801561039f575f80fd5b506103a8610ce7565b6040516103b591906134d4565b60405180910390f35b3480156103c9575f80fd5b506103f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103b5565b348015610414575f80fd5b50610428610423366004613509565b610d77565b60405190151581526020016103b5565b348015610443575f80fd5b506103926104523660046134b4565b610d90565b348015610462575f80fd5b506002545b6040519081526020016103b5565b348015610480575f80fd5b50610392610ddc565b348015610494575f80fd5b506103926104a3366004613531565b610e50565b3480156104b3575f80fd5b506103926104c23660046134b4565b610f9b565b3480156104d2575f80fd5b506104286104e1366004613548565b61102c565b3480156104f1575f80fd5b50610392610500366004613598565b61104f565b348015610510575f80fd5b50604051601281526020016103b5565b34801561052b575f80fd5b5061039261053a3660046135ec565b6111ec565b34801561054a575f80fd5b506103926105593660046136b4565b611270565b348015610569575f80fd5b50610428610578366004613509565b611388565b348015610588575f80fd5b50600c546103f1906001600160a01b031681565b3480156105a7575f80fd5b506104286105b63660046134b4565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156105de575f80fd5b5061046760145481565b3480156105f3575f80fd5b506103f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610626575f80fd5b506103f161dead81565b34801561063b575f80fd5b50600f5461066e906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b03958616815293851660208501529184169183019190915290911660608201526080016103b5565b3480156106ac575f80fd5b50600d5461042890600160a01b900460ff1681565b3480156106cc575f80fd5b506104286106db3660046134b4565b60066020525f908152604090205460ff1681565b3480156106fa575f80fd5b506103926113a9565b34801561070e575f80fd5b50600d5461042890600160a81b900460ff1681565b34801561072e575f80fd5b5061039261073d3660046136b4565b61144b565b34801561074d575f80fd5b5061039261075c366004613721565b61155f565b34801561076c575f80fd5b506011546107a0906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900460ff1684565b6040516103b594939291906001600160501b039485168152928416602084015292166040820152901515606082015260800190565b3480156107e0575f80fd5b506103926107ef3660046136b4565b611784565b3480156107ff575f80fd5b5061046761080e3660046134b4565b6001600160a01b03165f9081526020819052604090205490565b348015610833575f80fd5b5061039261182b565b348015610847575f80fd5b5061039261189e565b34801561085b575f80fd5b5061039261086a3660046134b4565b611940565b34801561087a575f80fd5b50600d5461042890600160b01b900460ff1681565b34801561089a575f80fd5b506103926108a9366004613598565b6119d1565b3480156108b9575f80fd5b506104286108c83660046134b4565b60076020525f908152604090205460ff1681565b3480156108e7575f80fd5b506005546001600160a01b03166103f1565b348015610904575f80fd5b50600d546103f1906001600160a01b031681565b348015610923575f80fd5b506103a8611b6e565b348015610937575f80fd5b5061094161271081565b6040516001600160401b0390911681526020016103b5565b348015610964575f80fd5b50610428610973366004613509565b611b7d565b348015610983575f80fd5b50600b546103f1906001600160a01b031681565b3480156109a2575f80fd5b506104286109b1366004613509565b611bf7565b3480156109c1575f80fd5b506103f17f000000000000000000000000000000000000000000000000000000000000000081565b3480156109f4575f80fd5b50610428610a033660046134b4565b60086020525f908152604090205460ff1681565b348015610a22575f80fd5b50610392610a3136600461379b565b611c04565b348015610a41575f80fd5b5061046760135481565b348015610a56575f80fd5b50600d5461042890600160b81b900460ff1681565b348015610a76575f80fd5b5060105461066e906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b348015610ab4575f80fd5b50610392610ac336600461379b565b611d2e565b348015610ad3575f80fd5b5061046760125481565b348015610ae8575f80fd5b50610392610af73660046135ec565b611e73565b348015610b07575f80fd5b50610467610b163660046137d0565b611ef8565b348015610b26575f80fd5b50600e54610b45906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016103b5565b348015610b70575f80fd5b50610392610b7f3660046134b4565b611f22565b348015610b8f575f80fd5b5061039261200c565b348015610ba3575f80fd5b50610392612061565b6001600160a01b038116610c075760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b600b546001600160a01b0316331480610c2a5750600c546001600160a01b031633145b610c605760405162461bcd60e51b81526020600482015260076024820152662737ba103232bb60c91b6044820152606401610bfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190613801565b600c54909150610ce39083906001600160a01b0316836120e7565b5050565b606060038054610cf690613818565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2290613818565b8015610d6d5780601f10610d4457610100808354040283529160200191610d6d565b820191905f5260205f20905b815481529060010190602001808311610d5057829003601f168201915b5050505050905090565b5f33610d8481858561213e565b60019150505b92915050565b600d546001600160a01b03163314610dba5760405162461bcd60e51b8152600401610bfe90613850565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b03163314610e065760405162461bcd60e51b8152600401610bfe90613850565b600d80546001600160a01b0319169055604080513381525f60208201527f68e3b4114d0376a2e527035f14842e69a9cf5030347e983f142f7df64215e14d910160405180910390a1565b6005546001600160a01b03163314610e7a5760405162461bcd60e51b8152600401610bfe90613878565b620186a0610e8760025490565b610e929060016138c1565b610e9c91906138ec565b811015610f095760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bfe565b6103e8610f1560025490565b610f209060056138c1565b610f2a91906138ec565b811115610f965760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610bfe565b601355565b6005546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b03811661100a5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610bfe565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f33611039858285612261565b6110448585856122d3565b506001949350505050565b6005546001600160a01b031633146110795760405162461bcd60e51b8152600401610bfe90613878565b604080516080810182525f60608201526001600160401b038581168252848116928201929092529082166020820152816110b384866138ff565b6110bd91906138ff565b6001600160401b0316606082018190526117701015806110f7575060105460608201516001600160401b03600160c01b9092048216911611155b6111385760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610bfe565b60608101516040516001600160401b0390911681527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c979060200160405180910390a1805160108054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b600d546001600160a01b031633146112165760405162461bcd60e51b8152600401610bfe90613850565b5f5b8151811015610ce3575f600a5f8484815181106112375761123761391e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611218565b6005546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610bfe90613878565b6112a66012600a613a15565b6103e86112b260025490565b6112bd9060016138c1565b6112c791906138ec565b6112d191906138ec565b816001600160801b031610156113135760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610bfe565b61131f6012600a613a15565b611332906001600160801b0383166138c1565b600e80546001600160801b0319166001600160801b039290921691821790556040519081527f6710da7d4acedae09cb83751ae24c150719ef67dcbc1e02049f171d13c6b44e6906020015b60405180910390a150565b5f33610d8481858561139a8383611ef8565b6113a49190613a23565b61213e565b6005546001600160a01b031633146113d35760405162461bcd60e51b8152600401610bfe90613878565b600d54600160a01b900460ff161561142d5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610bfe565b600d805460ff60a01b1916600160a01b179055436012819055601455565b6005546001600160a01b031633146114755760405162461bcd60e51b8152600401610bfe90613878565b6114816012600a613a15565b6103e861148d60025490565b6114989060016138c1565b6114a291906138ec565b6114ac91906138ec565b816001600160801b031610156114ee5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610bfe565b6114fa6012600a613a15565b61150d906001600160801b0383166138c1565b600e80546001600160801b03908116600160801b93821684021791829055604051929091041681527fde064515fae8f8bb6d8ff19d2c6ba704322def7494147d8a971266430ade07889060200161137d565b6005546001600160a01b031633146115895760405162461bcd60e51b8152600401610bfe90613878565b8281146115d85760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d7573742062652073616d65206c656e6774680000000000006044820152606401610bfe565b826116145760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610bfe565b5f805b8281101561164d578383828181106116315761163161391e565b90506020020135826116439190613a23565b9150600101611617565b50335f908152602081905260409020548111156116a35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610bfe565b5f5b8481101561177c575f8686838181106116c0576116c061391e565b90506020020160208101906116d591906134b4565b6001600160a01b03160361172b5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742061697264726f7020746f207a65726f206164647265737300006044820152606401610bfe565b611774338787848181106117415761174161391e565b905060200201602081019061175691906134b4565b8686858181106117685761176861391e565b905060200201356122d3565b6001016116a5565b505050505050565b6005546001600160a01b031633146117ae5760405162461bcd60e51b8152600401610bfe90613878565b6126ac816001600160801b031611156118095760405162461bcd60e51b815260206004820152601c60248201527f4c61756e6368207461782063616e6e6f742065786365656420393925000000006044820152606401610bfe565b601580546001600160801b0319166001600160801b0392909216919091179055565b6005546001600160a01b031633146118555760405162461bcd60e51b8152600401610bfe90613878565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146118c85760405162461bcd60e51b8152600401610bfe90613878565b600d805460ff60b01b19169055604080518082019091525f80825260208201525f6118f260025490565b6001600160801b03811680845260208401819052600160801b810217600e556040519091507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a15050565b6005546001600160a01b0316331461196a5760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b0381166119af5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610bfe565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119fb5760405162461bcd60e51b8152600401610bfe90613878565b604080516080810182525f60608201526001600160401b03858116825284811692820192909252908216602082015281611a3584866138ff565b611a3f91906138ff565b6001600160401b031660608201819052611770101580611a795750600f5460608201516001600160401b03600160c01b9092048216911611155b611aba5760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610bfe565b60608101516040516001600160401b0390911681527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200160405180910390a18051600f8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b606060048054610cf690613818565b5f3381611b8a8286611ef8565b905083811015611bea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bfe565b611044828686840361213e565b5f33610d848185856122d3565b6005546001600160a01b03163314611c2e5760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b038216611c735760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610bfe565b306001600160a01b03831603611ccb5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420756e6578656d707420636f6e747261637400000000000000006044820152606401610bfe565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d91015b60405180910390a15050565b6005546001600160a01b03163314611d585760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b038216611d9d5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610bfe565b80611e18577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611e185760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb32903830b4b960711b6044820152606401610bfe565b6001600160a01b0382165f81815260076020908152604091829020805460ff19168515159081179091558251938452908301527f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce9101611d22565b600d546001600160a01b03163314611e9d5760405162461bcd60e51b8152600401610bfe90613850565b5f5b8151811015610ce3576001600a5f848481518110611ebf57611ebf61391e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611e9f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314611f4c5760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b038116611fb15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bfe565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600c546040515f916001600160a01b03169047908381818185875af1925050503d805f8114612056576040519150601f19603f3d011682016040523d82523d5f602084013e61205b565b606091505b50505050565b6005546001600160a01b0316331461208b5760405162461bcd60e51b8152600401610bfe90613878565b600d54600160b81b900460ff166120d85760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b6044820152606401610bfe565b600d805460ff60b81b19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612139908490612405565b505050565b6001600160a01b0383166121a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bfe565b6001600160a01b0382166122015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bfe565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61226c8484611ef8565b90505f19811461205b57818110156122c65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bfe565b61205b848484840361213e565b6001600160a01b0383165f9081526006602052604090205460ff1615801561231357506001600160a01b0382165f9081526006602052604090205460ff16155b156123fa576001600160a01b0383165f908152600a602052604090205460ff1615801561235857506001600160a01b0382165f908152600a602052604090205460ff16155b61238a5760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610bfe565b600d54600160a01b900460ff166123d85760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bfe565b6123e38383836124d6565b6123ed9082613a36565b90506123fa838383612942565b612139838383612d69565b5f612459826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f0c9092919063ffffffff16565b80519091501561213957808060200190518101906124779190613a49565b6121395760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bfe565b601354305f9081526020819052604081205490911115801561251057506001600160a01b0384165f9081526008602052604090205460ff16155b801561252a57504360145460026125279190613a23565b11155b1561253757612537612f22565b604080516080810182525f8082526020808301829052828401829052606083018290526001600160a01b0387168252600890529182205460ff16156125c35750604080516080810182526010546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b9004909116606082015261262c565b6001600160a01b0386165f9081526008602052604090205460ff161561262c575060408051608081018252600f546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201525b60608101516001600160401b03161561293057604080516080810182526011546001600160501b038082168352600160501b820481166020840152600160a01b82041692820192909252600160f01b90910460ff1615156060820152601254439003612700576001600160a01b0387165f9081526008602052604090205460ff16806126cf57506001600160a01b0386165f9081526008602052604090205460ff165b156126fb57601554612710906126ee906001600160801b0316876138c1565b6126f891906138ec565b92505b6127a6565b60125461270e906001613a23565b4314806127275750601254612724906002613a23565b43145b1561277d576001600160a01b0387165f9081526008602052604090205460ff168061276957506001600160a01b0386165f9081526008602052604090205460ff165b156126fb576127106126ee86610fa06138c1565b606082015161271090612799906001600160401b0316876138c1565b6127a391906138ec565b92505b633b9aca0082606001516001600160401b031683604001516001600160401b0316856127d29190613a64565b6127dc9190613a8d565b6127e69190613a8d565b816020018181516127f79190613aba565b6001600160501b031690525060608201518251633b9aca00916001600160401b0390811691612827911686613a64565b6128319190613a8d565b61283b9190613a8d565b8151829061284a908390613aba565b6001600160501b031690525060608201516020830151633b9aca00916001600160401b039081169161287d911686613a64565b6128879190613a8d565b6128919190613a8d565b816040018181516128a29190613aba565b6001600160501b039081169091528251601180546020860151604087015160608801511515600160f01b0260ff60f01b19918716600160a01b02919091166affffffffffffffffffffff60a01b19928716600160501b026001600160a01b031990941695909616949094179190911716929092171790555061292e87306001600160801b038616612d69565b505b506001600160801b0316949350505050565b600d54600160b01b900460ff1615612139576001600160a01b0382165f9081526007602090815260408083205483835292819020548151808301909252600e546001600160801b038082168452600160801b909104169282019290925260125460ff909316926129b3906001613a23565b4314806129cc57506012546129c9906002613a23565b43145b15612a2d576127106129dd60025490565b6129e89060196138c1565b6129f291906138ec565b6001600160801b03168152612710612a0960025490565b612a149060196138c1565b612a1e91906138ec565b6001600160801b031660208201525b6001600160a01b0386165f9081526008602052604090205460ff168015612a52575082155b15612af35780516001600160801b0316841115612a9b5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610bfe565b60208101516001600160801b0316612ab38386613a23565b1115612aee5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610bfe565b612bd3565b6001600160a01b0385165f9081526008602052604090205460ff168015612b3257506001600160a01b0386165f9081526007602052604090205460ff16155b15612b7b5780516001600160801b0316841115612aee5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610bfe565b82612bd35760208101516001600160801b0316612b988386613a23565b1115612bd35760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610bfe565b600d54600160b81b900460ff161561177c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614158015612c5957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561177c57325f908152600960205260409020544390612c7a90600a613a23565b10612cb85760405162461bcd60e51b815260206004820152600e60248201526d5472616e736665722044656c617960901b6044820152606401610bfe565b6001600160a01b038086165f9081526009602052604080822043908190553283529120557f000000000000000000000000000000000000000000000000000000000000000081169087160361177c57326001600160a01b0386161461177c5760405162461bcd60e51b815260206004820152602160248201527f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079656044820152601d60fa1b6064820152608401610bfe565b6001600160a01b038316612dcd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bfe565b6001600160a01b038216612e2f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bfe565b6001600160a01b0383165f9081526020819052604090205481811015612ea65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bfe565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6060612f1a84845f85613211565b949350505050565b305f90815260208190526040812054604080516080810182526011546001600160501b03808216808452600160501b8304821660208501819052600160a01b8404909216948401859052600160f01b90920460ff161515606084015293945090925f9291612f8f91613aba565b612f999190613aba565b6001600160501b03169050821580612faf575080155b15612fb957505050565b601354612fc790600a6138c1565b831115612fdf57601354612fdc90600a6138c1565b92505b60208201516001600160501b0316156130d7575f8183602001516001600160501b03168561300d91906138c1565b61301791906138ec565b9050613044307f000000000000000000000000000000000000000000000000000000000000000083612d69565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561309c575f80fd5b505af19250505080156130ad575060015b506130b88185613a36565b935082602001516001600160501b0316826130d39190613a36565b9150505b82156131d5576130e6836132e8565b604082015147905f906001600160501b03161561317457600c5460408501516001600160a01b03909116908490613126906001600160501b0316856138c1565b61313091906138ec565b6040515f81818185875af1925050503d805f8114613169576040519150601f19603f3d011682016040523d82523d5f602084013e61316e565b606091505b50909150505b47915081156131d257600b546040516001600160a01b039091169083905f81818185875af1925050503d805f81146131c7576040519150601f19603f3d011682016040523d82523d5f602084013e6131cc565b606091505b50909150505b50505b505f602082018190528082526040820152601180546060909201511515600160f01b026001600160f81b03199092169190911790555043601455565b6060824710156132725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bfe565b5f80866001600160a01b0316858760405161328d9190613ad9565b5f6040518083038185875af1925050503d805f81146132c7576040519150601f19603f3d011682016040523d82523d5f602084013e6132cc565b606091505b50915091506132dd878383876133fc565b979650505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061331b5761331b61391e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061336f5761336f61391e565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac947906133d39085905f90869030904290600401613aef565b5f604051808303815f87803b1580156133ea575f80fd5b505af115801561177c573d5f803e3d5ffd5b6060831561346a5782515f03613463576001600160a01b0385163b6134635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bfe565b5081612f1a565b612f1a838381511561347f5781518083602001fd5b8060405162461bcd60e51b8152600401610bfe91906134d4565b80356001600160a01b03811681146134af575f80fd5b919050565b5f602082840312156134c4575f80fd5b6134cd82613499565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f806040838503121561351a575f80fd5b61352383613499565b946020939093013593505050565b5f60208284031215613541575f80fd5b5035919050565b5f805f6060848603121561355a575f80fd5b61356384613499565b925061357160208501613499565b929592945050506040919091013590565b80356001600160401b03811681146134af575f80fd5b5f805f606084860312156135aa575f80fd5b6135b384613582565b92506135c160208501613582565b91506135cf60408501613582565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156135fc575f80fd5b81356001600160401b03811115613611575f80fd5b8201601f81018413613621575f80fd5b80356001600160401b0381111561363a5761363a6135d8565b8060051b604051601f19603f83011681018181106001600160401b0382111715613666576136666135d8565b604052918252602081840181019290810187841115613683575f80fd5b6020850194505b838510156136a95761369b85613499565b81526020948501940161368a565b509695505050505050565b5f602082840312156136c4575f80fd5b81356001600160801b03811681146134cd575f80fd5b5f8083601f8401126136ea575f80fd5b5081356001600160401b03811115613700575f80fd5b6020830191508360208260051b850101111561371a575f80fd5b9250929050565b5f805f8060408587031215613734575f80fd5b84356001600160401b03811115613749575f80fd5b613755878288016136da565b90955093505060208501356001600160401b03811115613773575f80fd5b61377f878288016136da565b95989497509550505050565b8015158114613798575f80fd5b50565b5f80604083850312156137ac575f80fd5b6137b583613499565b915060208301356137c58161378b565b809150509250929050565b5f80604083850312156137e1575f80fd5b6137ea83613499565b91506137f860208401613499565b90509250929050565b5f60208284031215613811575f80fd5b5051919050565b600181811c9082168061382c57607f821691505b60208210810361384a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610d8a57610d8a6138ad565b634e487b7160e01b5f52601260045260245ffd5b5f826138fa576138fa6138d8565b500490565b6001600160401b038181168382160190811115610d8a57610d8a6138ad565b634e487b7160e01b5f52603260045260245ffd5b6001815b600184111561396d57808504811115613951576139516138ad565b600184161561395f57908102905b60019390931c928002613936565b935093915050565b5f8261398357506001610d8a565b8161398f57505f610d8a565b81600181146139a557600281146139af576139cb565b6001915050610d8a565b60ff8411156139c0576139c06138ad565b50506001821b610d8a565b5060208310610133831016604e8410600b84101617156139ee575081810a610d8a565b6139fa5f198484613932565b805f1904821115613a0d57613a0d6138ad565b029392505050565b5f6134cd60ff841683613975565b80820180821115610d8a57610d8a6138ad565b81810381811115610d8a57610d8a6138ad565b5f60208284031215613a59575f80fd5b81516134cd8161378b565b6001600160801b038181168382160290811690818114613a8657613a866138ad565b5092915050565b5f6001600160801b03831680613aa557613aa56138d8565b806001600160801b0384160491505092915050565b6001600160501b038181168382160190811115610d8a57610d8a6138ad565b5f82518060208501845e5f920191825250919050565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015613b3f5783516001600160a01b0316835260209384019390920191600101613b18565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212205c4c5547eef1661e556ed61cc69c896ba4dba6b54e13628e76cf19e18f0886c864736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610368575f3560e01c80636eb14903116101c8578063a9059cbb116100fd578063ccad03e11161009d578063f270fde41161006d578063f270fde414610b1b578063f2fde38b14610b65578063f5648a4f14610b84578063f8686f0714610b98575f80fd5b8063ccad03e114610aa9578063d00efb2f14610ac8578063d34628cc14610add578063dd62ed3e14610afc575f80fd5b8063bedafd01116100d8578063bedafd0114610a17578063c78d0fa014610a36578063c876d0b914610a4b578063cc1776d314610a6b575f80fd5b8063a9059cbb14610997578063ad5c4648146109b6578063b0249cc6146109e9575f80fd5b80638d3e6e401161016857806395d89b411161014357806395d89b41146109185780639e93ad8e1461092c578063a457c2d714610959578063a5ece94114610978575f80fd5b80638d3e6e40146108ae5780638da5cb5b146108dc5780639435bb3a146108f9575f80fd5b8063751039fc116101a3578063751039fc1461083c5780638503376214610850578063860a32ec1461086f5780638becc57d1461088f575f80fd5b80636eb14903146107d557806370a08231146107f4578063715018a614610828575f80fd5b8063395093511161029e57806353371be01161023e578063627e9d8e11610219578063627e9d8e1461070357806366ebd39a1461072357806367243482146107425780636d7adcad14610761575f80fd5b806353371be0146106a15780635a90a49e146106c15780636058627a146106ef575f80fd5b8063432e95a511610279578063432e95a5146105d3578063452ed4f1146105e85780634e6fd6c41461061b5780634f7041a514610630575f80fd5b8063395093511461055e5780633ad10ef61461057d5780633bbac5791461059c575f80fd5b80632104591811610309578063286965a7116102e4578063286965a7146104e6578063313ce5671461050557806331c2d8471461052057806336e18e191461053f575f80fd5b806321045918146104895780632369bf83146104a857806323b872dd146104c7575f80fd5b8063095ea7b311610344578063095ea7b31461040957806310560b3f1461043857806318160ddd146104575780632010c57914610475575f80fd5b8062ae3bf81461037357806306fdde03146103945780630758d924146103be575f80fd5b3661036f57005b5f80fd5b34801561037e575f80fd5b5061039261038d3660046134b4565b610bac565b005b34801561039f575f80fd5b506103a8610ce7565b6040516103b591906134d4565b60405180910390f35b3480156103c9575f80fd5b506103f17f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103b5565b348015610414575f80fd5b50610428610423366004613509565b610d77565b60405190151581526020016103b5565b348015610443575f80fd5b506103926104523660046134b4565b610d90565b348015610462575f80fd5b506002545b6040519081526020016103b5565b348015610480575f80fd5b50610392610ddc565b348015610494575f80fd5b506103926104a3366004613531565b610e50565b3480156104b3575f80fd5b506103926104c23660046134b4565b610f9b565b3480156104d2575f80fd5b506104286104e1366004613548565b61102c565b3480156104f1575f80fd5b50610392610500366004613598565b61104f565b348015610510575f80fd5b50604051601281526020016103b5565b34801561052b575f80fd5b5061039261053a3660046135ec565b6111ec565b34801561054a575f80fd5b506103926105593660046136b4565b611270565b348015610569575f80fd5b50610428610578366004613509565b611388565b348015610588575f80fd5b50600c546103f1906001600160a01b031681565b3480156105a7575f80fd5b506104286105b63660046134b4565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156105de575f80fd5b5061046760145481565b3480156105f3575f80fd5b506103f17f0000000000000000000000000da7e488080dab086183eb0071316754cedc20a381565b348015610626575f80fd5b506103f161dead81565b34801561063b575f80fd5b50600f5461066e906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b03958616815293851660208501529184169183019190915290911660608201526080016103b5565b3480156106ac575f80fd5b50600d5461042890600160a01b900460ff1681565b3480156106cc575f80fd5b506104286106db3660046134b4565b60066020525f908152604090205460ff1681565b3480156106fa575f80fd5b506103926113a9565b34801561070e575f80fd5b50600d5461042890600160a81b900460ff1681565b34801561072e575f80fd5b5061039261073d3660046136b4565b61144b565b34801561074d575f80fd5b5061039261075c366004613721565b61155f565b34801561076c575f80fd5b506011546107a0906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900460ff1684565b6040516103b594939291906001600160501b039485168152928416602084015292166040820152901515606082015260800190565b3480156107e0575f80fd5b506103926107ef3660046136b4565b611784565b3480156107ff575f80fd5b5061046761080e3660046134b4565b6001600160a01b03165f9081526020819052604090205490565b348015610833575f80fd5b5061039261182b565b348015610847575f80fd5b5061039261189e565b34801561085b575f80fd5b5061039261086a3660046134b4565b611940565b34801561087a575f80fd5b50600d5461042890600160b01b900460ff1681565b34801561089a575f80fd5b506103926108a9366004613598565b6119d1565b3480156108b9575f80fd5b506104286108c83660046134b4565b60076020525f908152604090205460ff1681565b3480156108e7575f80fd5b506005546001600160a01b03166103f1565b348015610904575f80fd5b50600d546103f1906001600160a01b031681565b348015610923575f80fd5b506103a8611b6e565b348015610937575f80fd5b5061094161271081565b6040516001600160401b0390911681526020016103b5565b348015610964575f80fd5b50610428610973366004613509565b611b7d565b348015610983575f80fd5b50600b546103f1906001600160a01b031681565b3480156109a2575f80fd5b506104286109b1366004613509565b611bf7565b3480156109c1575f80fd5b506103f17f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b3480156109f4575f80fd5b50610428610a033660046134b4565b60086020525f908152604090205460ff1681565b348015610a22575f80fd5b50610392610a3136600461379b565b611c04565b348015610a41575f80fd5b5061046760135481565b348015610a56575f80fd5b50600d5461042890600160b81b900460ff1681565b348015610a76575f80fd5b5060105461066e906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b348015610ab4575f80fd5b50610392610ac336600461379b565b611d2e565b348015610ad3575f80fd5b5061046760125481565b348015610ae8575f80fd5b50610392610af73660046135ec565b611e73565b348015610b07575f80fd5b50610467610b163660046137d0565b611ef8565b348015610b26575f80fd5b50600e54610b45906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016103b5565b348015610b70575f80fd5b50610392610b7f3660046134b4565b611f22565b348015610b8f575f80fd5b5061039261200c565b348015610ba3575f80fd5b50610392612061565b6001600160a01b038116610c075760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b600b546001600160a01b0316331480610c2a5750600c546001600160a01b031633145b610c605760405162461bcd60e51b81526020600482015260076024820152662737ba103232bb60c91b6044820152606401610bfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190613801565b600c54909150610ce39083906001600160a01b0316836120e7565b5050565b606060038054610cf690613818565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2290613818565b8015610d6d5780601f10610d4457610100808354040283529160200191610d6d565b820191905f5260205f20905b815481529060010190602001808311610d5057829003601f168201915b5050505050905090565b5f33610d8481858561213e565b60019150505b92915050565b600d546001600160a01b03163314610dba5760405162461bcd60e51b8152600401610bfe90613850565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b03163314610e065760405162461bcd60e51b8152600401610bfe90613850565b600d80546001600160a01b0319169055604080513381525f60208201527f68e3b4114d0376a2e527035f14842e69a9cf5030347e983f142f7df64215e14d910160405180910390a1565b6005546001600160a01b03163314610e7a5760405162461bcd60e51b8152600401610bfe90613878565b620186a0610e8760025490565b610e929060016138c1565b610e9c91906138ec565b811015610f095760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bfe565b6103e8610f1560025490565b610f209060056138c1565b610f2a91906138ec565b811115610f965760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610bfe565b601355565b6005546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b03811661100a5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610bfe565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f33611039858285612261565b6110448585856122d3565b506001949350505050565b6005546001600160a01b031633146110795760405162461bcd60e51b8152600401610bfe90613878565b604080516080810182525f60608201526001600160401b038581168252848116928201929092529082166020820152816110b384866138ff565b6110bd91906138ff565b6001600160401b0316606082018190526117701015806110f7575060105460608201516001600160401b03600160c01b9092048216911611155b6111385760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610bfe565b60608101516040516001600160401b0390911681527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c979060200160405180910390a1805160108054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b600d546001600160a01b031633146112165760405162461bcd60e51b8152600401610bfe90613850565b5f5b8151811015610ce3575f600a5f8484815181106112375761123761391e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611218565b6005546001600160a01b0316331461129a5760405162461bcd60e51b8152600401610bfe90613878565b6112a66012600a613a15565b6103e86112b260025490565b6112bd9060016138c1565b6112c791906138ec565b6112d191906138ec565b816001600160801b031610156113135760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610bfe565b61131f6012600a613a15565b611332906001600160801b0383166138c1565b600e80546001600160801b0319166001600160801b039290921691821790556040519081527f6710da7d4acedae09cb83751ae24c150719ef67dcbc1e02049f171d13c6b44e6906020015b60405180910390a150565b5f33610d8481858561139a8383611ef8565b6113a49190613a23565b61213e565b6005546001600160a01b031633146113d35760405162461bcd60e51b8152600401610bfe90613878565b600d54600160a01b900460ff161561142d5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610bfe565b600d805460ff60a01b1916600160a01b179055436012819055601455565b6005546001600160a01b031633146114755760405162461bcd60e51b8152600401610bfe90613878565b6114816012600a613a15565b6103e861148d60025490565b6114989060016138c1565b6114a291906138ec565b6114ac91906138ec565b816001600160801b031610156114ee5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610bfe565b6114fa6012600a613a15565b61150d906001600160801b0383166138c1565b600e80546001600160801b03908116600160801b93821684021791829055604051929091041681527fde064515fae8f8bb6d8ff19d2c6ba704322def7494147d8a971266430ade07889060200161137d565b6005546001600160a01b031633146115895760405162461bcd60e51b8152600401610bfe90613878565b8281146115d85760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d7573742062652073616d65206c656e6774680000000000006044820152606401610bfe565b826116145760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610bfe565b5f805b8281101561164d578383828181106116315761163161391e565b90506020020135826116439190613a23565b9150600101611617565b50335f908152602081905260409020548111156116a35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610bfe565b5f5b8481101561177c575f8686838181106116c0576116c061391e565b90506020020160208101906116d591906134b4565b6001600160a01b03160361172b5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742061697264726f7020746f207a65726f206164647265737300006044820152606401610bfe565b611774338787848181106117415761174161391e565b905060200201602081019061175691906134b4565b8686858181106117685761176861391e565b905060200201356122d3565b6001016116a5565b505050505050565b6005546001600160a01b031633146117ae5760405162461bcd60e51b8152600401610bfe90613878565b6126ac816001600160801b031611156118095760405162461bcd60e51b815260206004820152601c60248201527f4c61756e6368207461782063616e6e6f742065786365656420393925000000006044820152606401610bfe565b601580546001600160801b0319166001600160801b0392909216919091179055565b6005546001600160a01b031633146118555760405162461bcd60e51b8152600401610bfe90613878565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146118c85760405162461bcd60e51b8152600401610bfe90613878565b600d805460ff60b01b19169055604080518082019091525f80825260208201525f6118f260025490565b6001600160801b03811680845260208401819052600160801b810217600e556040519091507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a15050565b6005546001600160a01b0316331461196a5760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b0381166119af5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610bfe565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119fb5760405162461bcd60e51b8152600401610bfe90613878565b604080516080810182525f60608201526001600160401b03858116825284811692820192909252908216602082015281611a3584866138ff565b611a3f91906138ff565b6001600160401b031660608201819052611770101580611a795750600f5460608201516001600160401b03600160c01b9092048216911611155b611aba5760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610bfe565b60608101516040516001600160401b0390911681527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200160405180910390a18051600f8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b606060048054610cf690613818565b5f3381611b8a8286611ef8565b905083811015611bea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bfe565b611044828686840361213e565b5f33610d848185856122d3565b6005546001600160a01b03163314611c2e5760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b038216611c735760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610bfe565b306001600160a01b03831603611ccb5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420756e6578656d707420636f6e747261637400000000000000006044820152606401610bfe565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d91015b60405180910390a15050565b6005546001600160a01b03163314611d585760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b038216611d9d5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610bfe565b80611e18577f0000000000000000000000000da7e488080dab086183eb0071316754cedc20a36001600160a01b0316826001600160a01b031603611e185760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb32903830b4b960711b6044820152606401610bfe565b6001600160a01b0382165f81815260076020908152604091829020805460ff19168515159081179091558251938452908301527f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce9101611d22565b600d546001600160a01b03163314611e9d5760405162461bcd60e51b8152600401610bfe90613850565b5f5b8151811015610ce3576001600a5f848481518110611ebf57611ebf61391e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611e9f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314611f4c5760405162461bcd60e51b8152600401610bfe90613878565b6001600160a01b038116611fb15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bfe565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600c546040515f916001600160a01b03169047908381818185875af1925050503d805f8114612056576040519150601f19603f3d011682016040523d82523d5f602084013e61205b565b606091505b50505050565b6005546001600160a01b0316331461208b5760405162461bcd60e51b8152600401610bfe90613878565b600d54600160b81b900460ff166120d85760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b6044820152606401610bfe565b600d805460ff60b81b19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612139908490612405565b505050565b6001600160a01b0383166121a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bfe565b6001600160a01b0382166122015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bfe565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61226c8484611ef8565b90505f19811461205b57818110156122c65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bfe565b61205b848484840361213e565b6001600160a01b0383165f9081526006602052604090205460ff1615801561231357506001600160a01b0382165f9081526006602052604090205460ff16155b156123fa576001600160a01b0383165f908152600a602052604090205460ff1615801561235857506001600160a01b0382165f908152600a602052604090205460ff16155b61238a5760405162461bcd60e51b8152602060048201526003602482015262109bdd60ea1b6044820152606401610bfe565b600d54600160a01b900460ff166123d85760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bfe565b6123e38383836124d6565b6123ed9082613a36565b90506123fa838383612942565b612139838383612d69565b5f612459826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f0c9092919063ffffffff16565b80519091501561213957808060200190518101906124779190613a49565b6121395760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bfe565b601354305f9081526020819052604081205490911115801561251057506001600160a01b0384165f9081526008602052604090205460ff16155b801561252a57504360145460026125279190613a23565b11155b1561253757612537612f22565b604080516080810182525f8082526020808301829052828401829052606083018290526001600160a01b0387168252600890529182205460ff16156125c35750604080516080810182526010546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b9004909116606082015261262c565b6001600160a01b0386165f9081526008602052604090205460ff161561262c575060408051608081018252600f546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201525b60608101516001600160401b03161561293057604080516080810182526011546001600160501b038082168352600160501b820481166020840152600160a01b82041692820192909252600160f01b90910460ff1615156060820152601254439003612700576001600160a01b0387165f9081526008602052604090205460ff16806126cf57506001600160a01b0386165f9081526008602052604090205460ff165b156126fb57601554612710906126ee906001600160801b0316876138c1565b6126f891906138ec565b92505b6127a6565b60125461270e906001613a23565b4314806127275750601254612724906002613a23565b43145b1561277d576001600160a01b0387165f9081526008602052604090205460ff168061276957506001600160a01b0386165f9081526008602052604090205460ff165b156126fb576127106126ee86610fa06138c1565b606082015161271090612799906001600160401b0316876138c1565b6127a391906138ec565b92505b633b9aca0082606001516001600160401b031683604001516001600160401b0316856127d29190613a64565b6127dc9190613a8d565b6127e69190613a8d565b816020018181516127f79190613aba565b6001600160501b031690525060608201518251633b9aca00916001600160401b0390811691612827911686613a64565b6128319190613a8d565b61283b9190613a8d565b8151829061284a908390613aba565b6001600160501b031690525060608201516020830151633b9aca00916001600160401b039081169161287d911686613a64565b6128879190613a8d565b6128919190613a8d565b816040018181516128a29190613aba565b6001600160501b039081169091528251601180546020860151604087015160608801511515600160f01b0260ff60f01b19918716600160a01b02919091166affffffffffffffffffffff60a01b19928716600160501b026001600160a01b031990941695909616949094179190911716929092171790555061292e87306001600160801b038616612d69565b505b506001600160801b0316949350505050565b600d54600160b01b900460ff1615612139576001600160a01b0382165f9081526007602090815260408083205483835292819020548151808301909252600e546001600160801b038082168452600160801b909104169282019290925260125460ff909316926129b3906001613a23565b4314806129cc57506012546129c9906002613a23565b43145b15612a2d576127106129dd60025490565b6129e89060196138c1565b6129f291906138ec565b6001600160801b03168152612710612a0960025490565b612a149060196138c1565b612a1e91906138ec565b6001600160801b031660208201525b6001600160a01b0386165f9081526008602052604090205460ff168015612a52575082155b15612af35780516001600160801b0316841115612a9b5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610bfe565b60208101516001600160801b0316612ab38386613a23565b1115612aee5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610bfe565b612bd3565b6001600160a01b0385165f9081526008602052604090205460ff168015612b3257506001600160a01b0386165f9081526007602052604090205460ff16155b15612b7b5780516001600160801b0316841115612aee5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610bfe565b82612bd35760208101516001600160801b0316612b988386613a23565b1115612bd35760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610bfe565b600d54600160b81b900460ff161561177c577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316856001600160a01b031614158015612c5957507f0000000000000000000000000da7e488080dab086183eb0071316754cedc20a36001600160a01b0316856001600160a01b031614155b1561177c57325f908152600960205260409020544390612c7a90600a613a23565b10612cb85760405162461bcd60e51b815260206004820152600e60248201526d5472616e736665722044656c617960901b6044820152606401610bfe565b6001600160a01b038086165f9081526009602052604080822043908190553283529120557f0000000000000000000000000da7e488080dab086183eb0071316754cedc20a381169087160361177c57326001600160a01b0386161461177c5760405162461bcd60e51b815260206004820152602160248201527f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079656044820152601d60fa1b6064820152608401610bfe565b6001600160a01b038316612dcd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bfe565b6001600160a01b038216612e2f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bfe565b6001600160a01b0383165f9081526020819052604090205481811015612ea65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bfe565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6060612f1a84845f85613211565b949350505050565b305f90815260208190526040812054604080516080810182526011546001600160501b03808216808452600160501b8304821660208501819052600160a01b8404909216948401859052600160f01b90920460ff161515606084015293945090925f9291612f8f91613aba565b612f999190613aba565b6001600160501b03169050821580612faf575080155b15612fb957505050565b601354612fc790600a6138c1565b831115612fdf57601354612fdc90600a6138c1565b92505b60208201516001600160501b0316156130d7575f8183602001516001600160501b03168561300d91906138c1565b61301791906138ec565b9050613044307f0000000000000000000000000da7e488080dab086183eb0071316754cedc20a383612d69565b7f0000000000000000000000000da7e488080dab086183eb0071316754cedc20a36001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561309c575f80fd5b505af19250505080156130ad575060015b506130b88185613a36565b935082602001516001600160501b0316826130d39190613a36565b9150505b82156131d5576130e6836132e8565b604082015147905f906001600160501b03161561317457600c5460408501516001600160a01b03909116908490613126906001600160501b0316856138c1565b61313091906138ec565b6040515f81818185875af1925050503d805f8114613169576040519150601f19603f3d011682016040523d82523d5f602084013e61316e565b606091505b50909150505b47915081156131d257600b546040516001600160a01b039091169083905f81818185875af1925050503d805f81146131c7576040519150601f19603f3d011682016040523d82523d5f602084013e6131cc565b606091505b50909150505b50505b505f602082018190528082526040820152601180546060909201511515600160f01b026001600160f81b03199092169190911790555043601455565b6060824710156132725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bfe565b5f80866001600160a01b0316858760405161328d9190613ad9565b5f6040518083038185875af1925050503d805f81146132c7576040519150601f19603f3d011682016040523d82523d5f602084013e6132cc565b606091505b50915091506132dd878383876133fc565b979650505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061331b5761331b61391e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061336f5761336f61391e565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac947906133d39085905f90869030904290600401613aef565b5f604051808303815f87803b1580156133ea575f80fd5b505af115801561177c573d5f803e3d5ffd5b6060831561346a5782515f03613463576001600160a01b0385163b6134635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bfe565b5081612f1a565b612f1a838381511561347f5781518083602001fd5b8060405162461bcd60e51b8152600401610bfe91906134d4565b80356001600160a01b03811681146134af575f80fd5b919050565b5f602082840312156134c4575f80fd5b6134cd82613499565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f806040838503121561351a575f80fd5b61352383613499565b946020939093013593505050565b5f60208284031215613541575f80fd5b5035919050565b5f805f6060848603121561355a575f80fd5b61356384613499565b925061357160208501613499565b929592945050506040919091013590565b80356001600160401b03811681146134af575f80fd5b5f805f606084860312156135aa575f80fd5b6135b384613582565b92506135c160208501613582565b91506135cf60408501613582565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156135fc575f80fd5b81356001600160401b03811115613611575f80fd5b8201601f81018413613621575f80fd5b80356001600160401b0381111561363a5761363a6135d8565b8060051b604051601f19603f83011681018181106001600160401b0382111715613666576136666135d8565b604052918252602081840181019290810187841115613683575f80fd5b6020850194505b838510156136a95761369b85613499565b81526020948501940161368a565b509695505050505050565b5f602082840312156136c4575f80fd5b81356001600160801b03811681146134cd575f80fd5b5f8083601f8401126136ea575f80fd5b5081356001600160401b03811115613700575f80fd5b6020830191508360208260051b850101111561371a575f80fd5b9250929050565b5f805f8060408587031215613734575f80fd5b84356001600160401b03811115613749575f80fd5b613755878288016136da565b90955093505060208501356001600160401b03811115613773575f80fd5b61377f878288016136da565b95989497509550505050565b8015158114613798575f80fd5b50565b5f80604083850312156137ac575f80fd5b6137b583613499565b915060208301356137c58161378b565b809150509250929050565b5f80604083850312156137e1575f80fd5b6137ea83613499565b91506137f860208401613499565b90509250929050565b5f60208284031215613811575f80fd5b5051919050565b600181811c9082168061382c57607f821691505b60208210810361384a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610d8a57610d8a6138ad565b634e487b7160e01b5f52601260045260245ffd5b5f826138fa576138fa6138d8565b500490565b6001600160401b038181168382160190811115610d8a57610d8a6138ad565b634e487b7160e01b5f52603260045260245ffd5b6001815b600184111561396d57808504811115613951576139516138ad565b600184161561395f57908102905b60019390931c928002613936565b935093915050565b5f8261398357506001610d8a565b8161398f57505f610d8a565b81600181146139a557600281146139af576139cb565b6001915050610d8a565b60ff8411156139c0576139c06138ad565b50506001821b610d8a565b5060208310610133831016604e8410600b84101617156139ee575081810a610d8a565b6139fa5f198484613932565b805f1904821115613a0d57613a0d6138ad565b029392505050565b5f6134cd60ff841683613975565b80820180821115610d8a57610d8a6138ad565b81810381811115610d8a57610d8a6138ad565b5f60208284031215613a59575f80fd5b81516134cd8161378b565b6001600160801b038181168382160290811690818114613a8657613a866138ad565b5092915050565b5f6001600160801b03831680613aa557613aa56138d8565b806001600160801b0384160491505092915050565b6001600160501b038181168382160190811115610d8a57610d8a6138ad565b5f82518060208501845e5f920191825250919050565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015613b3f5783516001600160a01b0316835260209384019390920191600101613b18565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212205c4c5547eef1661e556ed61cc69c896ba4dba6b54e13628e76cf19e18f0886c864736f6c634300081a0033
Deployed Bytecode Sourcemap
12756:16674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26918:378;;;;;;;;;;-1:-1:-1;26918:378:0;;;;;:::i;:::-;;:::i;:::-;;1880:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13320:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;989:32:1;;;971:51;;959:2;944:18;13320:37:0;806:222:1;2812:201:0;;;;;;;;;;-1:-1:-1;2812:201:0;;;;;:::i;:::-;;:::i;:::-;;;1503:14:1;;1496:22;1478:41;;1466:2;1451:18;2812:201:0;1338:187:1;28342:164:0;;;;;;;;;;-1:-1:-1;28342:164:0;;;;;:::i;:::-;;:::i;2201:108::-;;;;;;;;;;-1:-1:-1;2289:12:0;;2201:108;;;1676:25:1;;;1664:2;1649:18;2201:108:0;1530:177:1;28116:218:0;;;;;;;;;;;;;:::i;24651:346::-;;;;;;;;;;-1:-1:-1;24651:346:0;;;;;:::i;:::-;;:::i;27304:173::-;;;;;;;;;;-1:-1:-1;27304:173:0;;;;;:::i;:::-;;:::i;3021:261::-;;;;;;;;;;-1:-1:-1;3021:261:0;;;;;:::i;:::-;;:::i;25513:504::-;;;;;;;;;;-1:-1:-1;25513:504:0;;;;;:::i;:::-;;:::i;2100:93::-;;;;;;;;;;-1:-1:-1;2100:93:0;;2183:2;2973:36:1;;2961:2;2946:18;2100:93:0;2831:184:1;27884:224:0;;;;;;;;;;-1:-1:-1;27884:224:0;;;;;:::i;:::-;;:::i;24011:322::-;;;;;;;;;;-1:-1:-1;24011:322:0;;;;;:::i;:::-;;:::i;3290:238::-;;;;;;;;;;-1:-1:-1;3290:238:0;;;;;:::i;:::-;;:::i;13158:25::-;;;;;;;;;;-1:-1:-1;13158:25:0;;;;-1:-1:-1;;;;;13158:25:0;;;17339:83;;;;;;;;;;-1:-1:-1;17339:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;17407:7:0;17386:4;17407:7;;;:4;:7;;;;;;;;;17339:83;14270:32;;;;;;;;;;;;;;;;13226:31;;;;;;;;;;;;;;;14807:81;;;;;;;;;;;;14846:42;14807:81;;14008:19;;;;;;;;;;-1:-1:-1;14008:19:0;;;;-1:-1:-1;;;;;14008:19:0;;;;-1:-1:-1;;;14008:19:0;;;;;-1:-1:-1;;;14008:19:0;;;;;-1:-1:-1;;;14008:19:0;;;;;;;;;-1:-1:-1;;;;;5039:31:1;;;5021:50;;5107:31;;;5102:2;5087:18;;5080:59;5175:31;;;5155:18;;;5148:59;;;;5243:31;;;5238:2;5223:18;;5216:59;5008:3;4993:19;14008::0;4798:483:1;13383:26:0;;;;;;;;;;-1:-1:-1;13383:26:0;;;;-1:-1:-1;;;13383:26:0;;;;;;12815:46;;;;;;;;;;-1:-1:-1;12815:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26025:220;;;;;;;;;;;;;:::i;13416:34::-;;;;;;;;;;-1:-1:-1;13416:34:0;;;;-1:-1:-1;;;13416:34:0;;;;;;24341:302;;;;;;;;;;-1:-1:-1;24341:302:0;;;;;:::i;:::-;;:::i;28514:690::-;;;;;;;;;;-1:-1:-1;28514:690:0;;;;;:::i;:::-;;:::i;14061:32::-;;;;;;;;;;-1:-1:-1;14061:32:0;;;;-1:-1:-1;;;;;14061:32:0;;;;-1:-1:-1;;;14061:32:0;;;;;-1:-1:-1;;;14061:32:0;;;;-1:-1:-1;;;14061:32:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6668:35:1;;;6650:54;;6740:35;;;6735:2;6720:18;;6713:63;6812:35;;6807:2;6792:18;;6785:63;6891:14;;6884:22;6879:2;6864:18;;6857:50;6637:3;6622:19;;6431:482;29212:176:0;;;;;;;;;;-1:-1:-1;29212:176:0;;;;;:::i;:::-;;:::i;2317:127::-;;;;;;;;;;-1:-1:-1;2317:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2418:18:0;2391:7;2418:18;;;;;;;;;;;;2317:127;6448:150;;;;;;;;;;;;;:::i;26253:321::-;;;;;;;;;;;;;:::i;27485:161::-;;;;;;;;;;-1:-1:-1;27485:161:0;;;;;:::i;:::-;;:::i;13457:26::-;;;;;;;;;;-1:-1:-1;13457:26:0;;;;-1:-1:-1;;;13457:26:0;;;;;;25005:500;;;;;;;;;;-1:-1:-1;25005:500:0;;;;;:::i;:::-;;:::i;12868:48::-;;;;;;;;;;-1:-1:-1;12868:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6234:79;;;;;;;;;;-1:-1:-1;6299:6:0;;-1:-1:-1;;;;;6299:6:0;6234:79;;13190:29;;;;;;;;;;-1:-1:-1;13190:29:0;;;;-1:-1:-1;;;;;13190:29:0;;;1988:104;;;;;;;;;;;;;:::i;14120:42::-;;;;;;;;;;;;14157:5;14120:42;;;;;-1:-1:-1;;;;;7080:31:1;;;7062:50;;7050:2;7035:18;14120:42:0;6918:200:1;3538:436:0;;;;;;;;;;-1:-1:-1;3538:436:0;;;;;:::i;:::-;;:::i;13120:31::-;;;;;;;;;;-1:-1:-1;13120:31:0;;;;-1:-1:-1;;;;;13120:31:0;;;2452:193;;;;;;;;;;-1:-1:-1;2452:193:0;;;;;:::i;:::-;;:::i;13264:29::-;;;;;;;;;;;;;;;12923:41;;;;;;;;;;-1:-1:-1;12923:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23324:319;;;;;;;;;;-1:-1:-1;23324:319:0;;;;;:::i;:::-;;:::i;14233:30::-;;;;;;;;;;;;;;;;13490:39;;;;;;;;;;-1:-1:-1;13490:39:0;;;;-1:-1:-1;;;13490:39:0;;;;;;14034:20;;;;;;;;;;-1:-1:-1;14034:20:0;;;;-1:-1:-1;;;;;14034:20:0;;;;-1:-1:-1;;;14034:20:0;;;;;-1:-1:-1;;;14034:20:0;;;;;-1:-1:-1;;;14034:20:0;;;;;23651:352;;;;;;;;;;-1:-1:-1;23651:352:0;;;;;:::i;:::-;;:::i;14173:26::-;;;;;;;;;;;;;;;;27654:222;;;;;;;;;;-1:-1:-1;27654:222:0;;;;;:::i;:::-;;:::i;2653:151::-;;;;;;;;;;-1:-1:-1;2653:151:0;;;;;:::i;:::-;;:::i;13977:24::-;;;;;;;;;;-1:-1:-1;13977:24:0;;;;-1:-1:-1;;;;;13977:24:0;;;;-1:-1:-1;;;13977:24:0;;;;;;;;;-1:-1:-1;;;;;8023:47:1;;;8005:66;;8107:47;;;;8102:2;8087:18;;8080:75;7978:18;13977:24:0;7831:330:1;6606:244:0;;;;;;;;;;-1:-1:-1;6606:244:0;;;;;:::i;:::-;;:::i;26760:150::-;;;;;;;;;;;;;:::i;26584:158::-;;;;;;;;;;;;;:::i;26918:378::-;-1:-1:-1;;;;;26984:20:0;;26976:59;;;;-1:-1:-1;;;26976:59:0;;8368:2:1;26976:59:0;;;8350:21:1;8407:2;8387:18;;;8380:30;8446:28;8426:18;;;8419:56;8492:18;;26976:59:0;;;;;;;;;27068:16;;-1:-1:-1;;;;;27068:16:0;27054:10;:30;;:58;;-1:-1:-1;27102:10:0;;-1:-1:-1;;;;;27102:10:0;27088;:24;27054:58;27046:78;;;;-1:-1:-1;;;27046:78:0;;8723:2:1;27046:78:0;;;8705:21:1;8762:1;8742:18;;;8735:29;-1:-1:-1;;;8780:18:1;;;8773:37;8827:18;;27046:78:0;8521:330:1;27046:78:0;27162:39;;-1:-1:-1;;;27162:39:0;;27195:4;27162:39;;;971:51:1;27135:24:0;;-1:-1:-1;;;;;27162:24:0;;;;;944:18:1;;27162:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27258:10;;27135:66;;-1:-1:-1;27212:76:0;;27242:6;;-1:-1:-1;;;;;27258:10:0;27135:66;27212:22;:76::i;:::-;26965:331;26918:378;:::o;1880:100::-;1934:13;1967:5;1960:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:100;:::o;2812:201::-;2895:4;271:10;2951:32;271:10;2967:7;2976:6;2951:8;:32::i;:::-;3001:4;2994:11;;;2812:201;;;;;:::o;28342:164::-;28429:14;;-1:-1:-1;;;;;28429:14:0;28415:10;:28;28407:55;;;;-1:-1:-1;;;28407:55:0;;;;;;;:::i;:::-;28473:14;:25;;-1:-1:-1;;;;;;28473:25:0;-1:-1:-1;;;;;28473:25:0;;;;;;;;;;28342:164::o;28116:218::-;28192:14;;-1:-1:-1;;;;;28192:14:0;28178:10;:28;28170:55;;;;-1:-1:-1;;;28170:55:0;;;;;;;:::i;:::-;28236:14;:27;;-1:-1:-1;;;;;;28236:27:0;;;28279:47;;;28303:10;9947:51:1;;-1:-1:-1;10029:2:1;10014:18;;10007:60;28279:47:0;;9920:18:1;28279:47:0;;;;;;;28116:218::o;24651:346::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;24772:6:::1;24751:13;2289:12:::0;;;2201:108;24751:13:::1;:17;::::0;24767:1:::1;24751:17;:::i;:::-;24750:28;;;;:::i;:::-;24737:9;:41;;24729:107;;;::::0;-1:-1:-1;;;24729:107:0;;11203:2:1;24729:107:0::1;::::0;::::1;11185:21:1::0;11242:2;11222:18;;;11215:30;11281:34;11261:18;;;11254:62;-1:-1:-1;;;11332:18:1;;;11325:51;11393:19;;24729:107:0::1;11001:417:1::0;24729:107:0::1;24890:4;24869:13;2289:12:::0;;;2201:108;24869:13:::1;:17;::::0;24885:1:::1;24869:17;:::i;:::-;24868:26;;;;:::i;:::-;24855:9;:39;;24847:104;;;::::0;-1:-1:-1;;;24847:104:0;;11625:2:1;24847:104:0::1;::::0;::::1;11607:21:1::0;11664:2;11644:18;;;11637:30;11703:34;11683:18;;;11676:62;-1:-1:-1;;;11754:18:1;;;11747:50;11814:19;;24847:104:0::1;11423:416:1::0;24847:104:0::1;24962:15;:27:::0;24651:346::o;27304:173::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27392:22:0;::::1;27384:47;;;::::0;-1:-1:-1;;;27384:47:0;;12046:2:1;27384:47:0::1;::::0;::::1;12028:21:1::0;12085:2;12065:18;;;12058:30;-1:-1:-1;;;12104:18:1;;;12097:42;12156:18;;27384:47:0::1;11844:336:1::0;27384:47:0::1;27442:16;:27:::0;;-1:-1:-1;;;;;;27442:27:0::1;-1:-1:-1::0;;;;;27442:27:0;;;::::1;::::0;;;::::1;::::0;;27304:173::o;3021:261::-;3118:4;271:10;3176:38;3192:4;271:10;3207:6;3176:15;:38::i;:::-;3225:27;3235:4;3241:2;3245:6;3225:9;:27::i;:::-;-1:-1:-1;3270:4:0;;3021:261;-1:-1:-1;;;;3021:261:0:o;25513:504::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;25655:34:0;;::::1;::::0;;25700;;::::1;-1:-1:-1::0;;;25700:34:0;;;;25745:22;;::::1;-1:-1:-1::0;;;25745:22:0;;25795:29:::1;25700:34:::0;25655;25795:29:::1;:::i;:::-;:39;;;;:::i;:::-;-1:-1:-1::0;;;;;25778:56:0::1;:14;::::0;::::1;:56:::0;;;25872:4:::1;-1:-1:-1::0;25853:23:0::1;::::0;:61:::1;;-1:-1:-1::0;25898:7:0::1;:16:::0;25880:14:::1;::::0;::::1;::::0;-1:-1:-1;;;;;;;;25898:16:0;;::::1;::::0;::::1;25880:34:::0;::::1;;;25853:61;25845:92;;;::::0;-1:-1:-1;;;25845:92:0;;12583:2:1;25845:92:0::1;::::0;::::1;12565:21:1::0;12622:2;12602:18;;;12595:30;-1:-1:-1;;;12641:18:1;;;12634:48;12699:18;;25845:92:0::1;12381:342:1::0;25845:92:0::1;25968:14;::::0;::::1;::::0;25953:30:::1;::::0;-1:-1:-1;;;;;7080:31:1;;;7062:50;;25953:30:0::1;::::0;7050:2:1;7035:18;25953:30:0::1;;;;;;;25994:15:::0;;:7:::1;:15:::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;25994:15:0;;::::1;-1:-1:-1::0;;;25994:15:0::1;-1:-1:-1::0;;;;;25994:15:0;;::::1;-1:-1:-1::0;;;25994:15:0::1;::::0;;;;-1:-1:-1;;;;;25994:15:0;;::::1;-1:-1:-1::0;;;25994:15:0::1;-1:-1:-1::0;;;;;;25994:15:0;;;;;;::::1;::::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;25513:504:0:o;27884:224::-;27968:14;;-1:-1:-1;;;;;27968:14:0;27954:10;:28;27946:55;;;;-1:-1:-1;;;27946:55:0;;;;;;;:::i;:::-;28017:6;28012:89;28033:6;:13;28029:1;:17;28012:89;;;28086:5;28068:4;:15;28073:6;28080:1;28073:9;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;28068:15:0;;;;;;;;;;;-1:-1:-1;28068:15:0;:23;;-1:-1:-1;;28068:23:0;;;;;;;;;;-1:-1:-1;28048:3:0;28012:89;;24011:322;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;24151:14:::1;2183:2:::0;24151::::1;:14;:::i;:::-;24144:4;24124:13;2289:12:::0;;;2201:108;24124:13:::1;:17;::::0;24140:1:::1;24124:17;:::i;:::-;:24;;;;:::i;:::-;24123:43;;;;:::i;:::-;24105:14;-1:-1:-1::0;;;;;24105:61:0::1;;;24097:81;;;::::0;-1:-1:-1;;;24097:81:0;;14700:2:1;24097:81:0::1;::::0;::::1;14682:21:1::0;14739:1;14719:18;;;14712:29;-1:-1:-1;;;14757:18:1;;;14750:37;14804:18;;24097:81:0::1;14498:330:1::0;24097:81:0::1;24243:14;2183:2:::0;24243::::1;:14;:::i;:::-;24225:33;::::0;-1:-1:-1;;;;;24225:33:0;::::1;;:::i;:::-;24189:8;:70:::0;;-1:-1:-1;;;;;;24189:70:0::1;-1:-1:-1::0;;;;;24189:70:0;;;::::1;::::0;;::::1;::::0;;24275:50:::1;::::0;14979:66:1;;;24275:50:0::1;::::0;14967:2:1;14952:18;24275:50:0::1;;;;;;;;24011:322:::0;:::o;3290:238::-;3378:4;271:10;3434:64;271:10;3450:7;3487:10;3459:25;271:10;3450:7;3459:9;:25::i;:::-;:38;;;;:::i;:::-;3434:8;:64::i;26025:220::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;26083:14:::1;::::0;-1:-1:-1;;;26083:14:0;::::1;;;26082:15;26074:51;;;::::0;-1:-1:-1;;;26074:51:0;;15388:2:1;26074:51:0::1;::::0;::::1;15370:21:1::0;15427:2;15407:18;;;15400:30;15466:25;15446:18;;;15439:53;15509:18;;26074:51:0::1;15186:347:1::0;26074:51:0::1;26136:14;:21:::0;;-1:-1:-1;;;;26136:21:0::1;-1:-1:-1::0;;;26136:21:0::1;::::0;;26182:12:::1;26168:11;:26:::0;;;26136:14:::1;26205:32:::0;26025:220::o;24341:302::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;24476:14:::1;2183:2:::0;24476::::1;:14;:::i;:::-;24469:4;24449:13;2289:12:::0;;;2201:108;24449:13:::1;:17;::::0;24465:1:::1;24449:17;:::i;:::-;:24;;;;:::i;:::-;24448:43;;;;:::i;:::-;24430:14;-1:-1:-1::0;;;;;24430:61:0::1;;;24422:81;;;::::0;-1:-1:-1;;;24422:81:0;;14700:2:1;24422:81:0::1;::::0;::::1;14682:21:1::0;14739:1;14719:18;;;14712:29;-1:-1:-1;;;14757:18:1;;;14750:37;14804:18;;24422:81:0::1;14498:330:1::0;24422:81:0::1;24563:14;2183:2:::0;24563::::1;:14;:::i;:::-;24545:33;::::0;-1:-1:-1;;;;;24545:33:0;::::1;;:::i;:::-;24514:8;:65:::0;;-1:-1:-1;;;;;24514:65:0;;::::1;-1:-1:-1::0;;;24514:65:0;;::::1;::::0;::::1;;::::0;;;;24595:40:::1;::::0;24614:20;;;::::1;;14979:66:1::0;;24595:40:0::1;::::0;14967:2:1;14952:18;24595:40:0::1;14833:218:1::0;28514:690:0;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;28628:35;;::::1;28620:74;;;::::0;-1:-1:-1;;;28620:74:0;;15740:2:1;28620:74:0::1;::::0;::::1;15722:21:1::0;15779:2;15759:18;;;15752:30;15818:28;15798:18;;;15791:56;15864:18;;28620:74:0::1;15538:350:1::0;28620:74:0::1;28713:21:::0;28705:46:::1;;;::::0;-1:-1:-1;;;28705:46:0;;16095:2:1;28705:46:0::1;::::0;::::1;16077:21:1::0;16134:2;16114:18;;;16107:30;-1:-1:-1;;;16153:18:1;;;16146:42;16205:18;;28705:46:0::1;15893:336:1::0;28705:46:0::1;28772:19;::::0;28802:96:::1;28821:18:::0;;::::1;28802:96;;;28876:7;;28884:1;28876:10;;;;;;;:::i;:::-;;;;;;;28861:25;;;;;:::i;:::-;::::0;-1:-1:-1;28841:3:0::1;;28802:96;;;-1:-1:-1::0;28926:10:0::1;2391:7:::0;2418:18;;;;;;;;;;;28941:11;-1:-1:-1;28916:36:0::1;28908:69;;;::::0;-1:-1:-1;;;28908:69:0;;16436:2:1;28908:69:0::1;::::0;::::1;16418:21:1::0;16475:2;16455:18;;;16448:30;-1:-1:-1;;;16494:18:1;;;16487:50;16554:18;;28908:69:0::1;16234:344:1::0;28908:69:0::1;28994:9;28990:207;29009:21:::0;;::::1;28990:207;;;29085:1;29060:10:::0;;29071:1;29060:13;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29060:27:0::1;::::0;29052:70:::1;;;::::0;-1:-1:-1;;;29052:70:0;;16785:2:1;29052:70:0::1;::::0;::::1;16767:21:1::0;16824:2;16804:18;;;16797:30;16863:32;16843:18;;;16836:60;16913:18;;29052:70:0::1;16583:354:1::0;29052:70:0::1;29137:48;29147:10;29159;;29170:1;29159:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;29174:7;;29182:1;29174:10;;;;;;;:::i;:::-;;;;;;;29137:9;:48::i;:::-;29032:3;;28990:207;;;;28609:595;28514:690:::0;;;;:::o;29212:176::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;29298:4:::1;29288:6;-1:-1:-1::0;;;;;29288:14:0::1;;;29280:55;;;::::0;-1:-1:-1;;;29280:55:0;;17144:2:1;29280:55:0::1;::::0;::::1;17126:21:1::0;17183:2;17163:18;;;17156:30;17222;17202:18;;;17195:58;17270:18;;29280:55:0::1;16942:352:1::0;29280:55:0::1;29362:9;:18:::0;;-1:-1:-1;;;;;;29362:18:0::1;-1:-1:-1::0;;;;;29362:18:0;;;::::1;::::0;;;::::1;::::0;;29212:176::o;6448:150::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;6541:6:::1;::::0;6520:40:::1;::::0;6557:1:::1;::::0;-1:-1:-1;;;;;6541:6:0::1;::::0;6520:40:::1;::::0;6557:1;;6520:40:::1;6571:6;:19:::0;;-1:-1:-1;;;;;;6571:19:0::1;::::0;;6448:150::o;26253:321::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;26307:7:::1;:15:::0;;-1:-1:-1;;;;26307:15:0::1;::::0;;-1:-1:-1;;;;;;;;;26317:5:0::1;-1:-1:-1::0;;;;;;;26369:14:0::1;26386:13;2289:12:::0;;;2201:108;26386:13:::1;-1:-1:-1::0;;;;;26410:44:0;::::1;::::0;;;26465:21:::1;::::0;::::1;:39:::0;;;-1:-1:-1;;;26515:20:0;::::1;;:8;:20:::0;26551:15:::1;::::0;26369:30;;-1:-1:-1;26551:15:0::1;::::0;26410:26:::1;::::0;26551:15:::1;26296:278;;26253:321::o:0;27485:161::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27567:22:0;::::1;27559:47;;;::::0;-1:-1:-1;;;27559:47:0;;12046:2:1;27559:47:0::1;::::0;::::1;12028:21:1::0;12085:2;12065:18;;;12058:30;-1:-1:-1;;;12104:18:1;;;12097:42;12156:18;;27559:47:0::1;11844:336:1::0;27559:47:0::1;27617:10;:21:::0;;-1:-1:-1;;;;;;27617:21:0::1;-1:-1:-1::0;;;;;27617:21:0;;;::::1;::::0;;;::::1;::::0;;27485:161::o;25005:500::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;25146:34:0;;::::1;::::0;;25191;;::::1;-1:-1:-1::0;;;25191:34:0;;;;25236:22;;::::1;-1:-1:-1::0;;;25236:22:0;;25286:29:::1;25191:34:::0;25146;25286:29:::1;:::i;:::-;:39;;;;:::i;:::-;-1:-1:-1::0;;;;;25269:56:0::1;:14;::::0;::::1;:56:::0;;;25363:4:::1;-1:-1:-1::0;25344:23:0::1;::::0;:60:::1;;-1:-1:-1::0;25389:6:0::1;:15:::0;25371:14:::1;::::0;::::1;::::0;-1:-1:-1;;;;;;;;25389:15:0;;::::1;::::0;::::1;25371:33:::0;::::1;;;25344:60;25336:91;;;::::0;-1:-1:-1;;;25336:91:0;;12583:2:1;25336:91:0::1;::::0;::::1;12565:21:1::0;12622:2;12602:18;;;12595:30;-1:-1:-1;;;12641:18:1;;;12634:48;12699:18;;25336:91:0::1;12381:342:1::0;25336:91:0::1;25457:14;::::0;::::1;::::0;25443:29:::1;::::0;-1:-1:-1;;;;;7080:31:1;;;7062:50;;25443:29:0::1;::::0;7050:2:1;7035:18;25443:29:0::1;;;;;;;25483:14:::0;;:6:::1;:14:::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;25483:14:0;;::::1;-1:-1:-1::0;;;25483:14:0::1;-1:-1:-1::0;;;;;25483:14:0;;::::1;-1:-1:-1::0;;;25483:14:0::1;::::0;;;;-1:-1:-1;;;;;25483:14:0;;::::1;-1:-1:-1::0;;;25483:14:0::1;-1:-1:-1::0;;;;;;25483:14:0;;;;;;::::1;::::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;25005:500:0:o;1988:104::-;2044:13;2077:7;2070:14;;;;;:::i;3538:436::-;3631:4;271:10;3631:4;3714:25;271:10;3731:7;3714:9;:25::i;:::-;3687:52;;3778:15;3758:16;:35;;3750:85;;;;-1:-1:-1;;;3750:85:0;;17501:2:1;3750:85:0;;;17483:21:1;17540:2;17520:18;;;17513:30;17579:34;17559:18;;;17552:62;-1:-1:-1;;;17630:18:1;;;17623:35;17675:19;;3750:85:0;17299:401:1;3750:85:0;3871:60;3880:5;3887:7;3915:15;3896:16;:34;3871:8;:60::i;2452:193::-;2531:4;271:10;2587:28;271:10;2604:2;2608:6;2587:9;:28::i;23324:319::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23422:22:0;::::1;23414:47;;;::::0;-1:-1:-1;;;23414:47:0;;17907:2:1;23414:47:0::1;::::0;::::1;17889:21:1::0;17946:2;17926:18;;;17919:30;-1:-1:-1;;;17965:18:1;;;17958:42;18017:18;;23414:47:0::1;17705:336:1::0;23414:47:0::1;23500:4;-1:-1:-1::0;;;;;23480:25:0;::::1;::::0;23472:62:::1;;;::::0;-1:-1:-1;;;23472:62:0;;18248:2:1;23472:62:0::1;::::0;::::1;18230:21:1::0;18287:2;18267:18;;;18260:30;18326:26;18306:18;;;18299:54;18370:18;;23472:62:0::1;18046:348:1::0;23472:62:0::1;-1:-1:-1::0;;;;;23545:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;;:36;;-1:-1:-1;;23545:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23597:38;;18567:51:1;;;18634:18;;;18627:50;23597:38:0::1;::::0;18540:18:1;23597:38:0::1;;;;;;;;23324:319:::0;;:::o;23651:352::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23751:22:0;::::1;23743:47;;;::::0;-1:-1:-1;;;23743:47:0;;17907:2:1;23743:47:0::1;::::0;::::1;17889:21:1::0;17946:2;17926:18;;;17919:30;-1:-1:-1;;;17965:18:1;;;17958:42;18017:18;;23743:47:0::1;17705:336:1::0;23743:47:0::1;23805:9;23801:90;;23850:6;-1:-1:-1::0;;;;;23838:18:0::1;:8;-1:-1:-1::0;;;;;23838:18:0::1;::::0;23830:49:::1;;;::::0;-1:-1:-1;;;23830:49:0;;18890:2:1;23830:49:0::1;::::0;::::1;18872:21:1::0;18929:2;18909:18;;;18902:30;-1:-1:-1;;;18948:18:1;;;18941:48;19006:18;;23830:49:0::1;18688:342:1::0;23830:49:0::1;-1:-1:-1::0;;;;;23901:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;;;;:38;;-1:-1:-1;;23901:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23955:40;;18567:51:1;;;18634:18;;;18627:50;23955:40:0::1;::::0;18540:18:1;23955:40:0::1;18399:284:1::0;27654:222:0;27737:14;;-1:-1:-1;;;;;27737:14:0;27723:10;:28;27715:55;;;;-1:-1:-1;;;27715:55:0;;;;;;;:::i;:::-;27786:6;27781:88;27802:5;:12;27798:1;:16;27781:88;;;27853:4;27836;:14;27841:5;27847:1;27841:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;27836:14:0;;;;;;;;;;;-1:-1:-1;27836:14:0;:21;;-1:-1:-1;;27836:21:0;;;;;;;;;;-1:-1:-1;27816:3:0;27781:88;;2653:151;-1:-1:-1;;;;;2769:18:0;;;2742:7;2769:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2653:151::o;6606:244::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6695:22:0;::::1;6687:73;;;::::0;-1:-1:-1;;;6687:73:0;;19237:2:1;6687:73:0::1;::::0;::::1;19219:21:1::0;19276:2;19256:18;;;19249:30;19315:34;19295:18;;;19288:62;-1:-1:-1;;;19366:18:1;;;19359:36;19412:19;;6687:73:0::1;19035:402:1::0;6687:73:0::1;6797:6;::::0;6776:38:::1;::::0;-1:-1:-1;;;;;6776:38:0;;::::1;::::0;6797:6:::1;::::0;6776:38:::1;::::0;6797:6:::1;::::0;6776:38:::1;6825:6;:17:::0;;-1:-1:-1;;;;;;6825:17:0::1;-1:-1:-1::0;;;;;6825:17:0;;;::::1;::::0;;;::::1;::::0;;6606:244::o;26760:150::-;26852:10;;26844:58;;26808:12;;-1:-1:-1;;;;;26852:10:0;;26876:21;;26808:12;26844:58;26808:12;26844:58;26876:21;26852:10;26844:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;26760:150:0:o;26584:158::-;6361:6;;-1:-1:-1;;;;;6361:6:0;271:10;6361:22;6353:67;;;;-1:-1:-1;;;6353:67:0;;;;;;;:::i;:::-;26653:20:::1;::::0;-1:-1:-1;;;26653:20:0;::::1;;;26645:50;;;::::0;-1:-1:-1;;;26645:50:0;;19854:2:1;26645:50:0::1;::::0;::::1;19836:21:1::0;19893:2;19873:18;;;19866:30;-1:-1:-1;;;19912:18:1;;;19905:47;19969:18;;26645:50:0::1;19652:341:1::0;26645:50:0::1;26706:20;:28:::0;;-1:-1:-1;;;;26706:28:0::1;::::0;;26584:158::o;11170:177::-;11280:58;;;-1:-1:-1;;;;;20190:32:1;;11280:58:0;;;20172:51:1;20239:18;;;;20232:34;;;11280:58:0;;;;;;;;;;20145:18:1;;;;11280:58:0;;;;;;;;-1:-1:-1;;;;;11280:58:0;-1:-1:-1;;;11280:58:0;;;11253:86;;11273:5;;11253:19;:86::i;:::-;11170:177;;;:::o;5130:346::-;-1:-1:-1;;;;;5232:19:0;;5224:68;;;;-1:-1:-1;;;5224:68:0;;20479:2:1;5224:68:0;;;20461:21:1;20518:2;20498:18;;;20491:30;20557:34;20537:18;;;20530:62;-1:-1:-1;;;20608:18:1;;;20601:34;20652:19;;5224:68:0;20277:400:1;5224:68:0;-1:-1:-1;;;;;5311:21:0;;5303:68;;;;-1:-1:-1;;;5303:68:0;;20884:2:1;5303:68:0;;;20866:21:1;20923:2;20903:18;;;20896:30;20962:34;20942:18;;;20935:62;-1:-1:-1;;;21013:18:1;;;21006:32;21055:19;;5303:68:0;20682:398:1;5303:68:0;-1:-1:-1;;;;;5384:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5436:32;;1676:25:1;;;5436:32:0;;1649:18:1;5436:32:0;;;;;;;5130:346;;;:::o;5484:419::-;5585:24;5612:25;5622:5;5629:7;5612:9;:25::i;:::-;5585:52;;-1:-1:-1;;5652:16:0;:37;5648:248;;5734:6;5714:16;:26;;5706:68;;;;-1:-1:-1;;;5706:68:0;;21287:2:1;5706:68:0;;;21269:21:1;21326:2;21306:18;;;21299:30;21365:31;21345:18;;;21338:59;21414:18;;5706:68:0;21085:353:1;5706:68:0;5818:51;5827:5;5834:7;5862:6;5843:16;:25;5818:8;:51::i;17430:464::-;-1:-1:-1;;;;;17576:20:0;;;;;;:14;:20;;;;;;;;17575:21;:44;;;;-1:-1:-1;;;;;;17601:18:0;;;;;;:14;:18;;;;;;;;17600:19;17575:44;17572:271;;;-1:-1:-1;;;;;17644:10:0;;;;;;:4;:10;;;;;;;;17643:11;:24;;;;-1:-1:-1;;;;;;17659:8:0;;;;;;:4;:8;;;;;;;;17658:9;17643:24;17635:40;;;;-1:-1:-1;;;17635:40:0;;21645:2:1;17635:40:0;;;21627:21:1;21684:1;21664:18;;;21657:29;-1:-1:-1;;;21702:18:1;;;21695:33;21745:18;;17635:40:0;21443:326:1;17635:40:0;17698:14;;-1:-1:-1;;;17698:14:0;;;;17690:45;;;;-1:-1:-1;;;17690:45:0;;21976:2:1;17690:45:0;;;21958:21:1;22015:2;21995:18;;;21988:30;-1:-1:-1;;;22034:18:1;;;22027:48;22092:18;;17690:45:0;21774:342:1;17690:45:0;17760:27;17770:4;17776:2;17780:6;17760:9;:27::i;:::-;17750:37;;;;:::i;:::-;;;17802:29;17814:4;17820:2;17824:6;17802:11;:29::i;:::-;17855:31;17871:4;17876:2;17879:6;17855:15;:31::i;11568:333::-;11649:23;11675:69;11703:4;11675:69;;;;;;;;;;;;;;;;;11683:5;-1:-1:-1;;;;;11675:27:0;;;:69;;;;;:::i;:::-;11759:17;;11649:95;;-1:-1:-1;11759:21:0;11755:139;;11816:10;11805:30;;;;;;;;;;;;:::i;:::-;11797:85;;;;-1:-1:-1;;;11797:85:0;;22706:2:1;11797:85:0;;;22688:21:1;22745:2;22725:18;;;22718:30;22784:34;22764:18;;;22757:62;-1:-1:-1;;;22835:18:1;;;22828:40;22885:19;;11797:85:0;22504:406:1;19613:1571:0;19744:15;;19734:4;19692:7;2418:18;;;;;;;;;;;19692:7;;-1:-1:-1;19716:43:0;:63;;;;-1:-1:-1;;;;;;19764:15:0;;;;;;:9;:15;;;;;;;;19763:16;19716:63;:104;;;;;19808:12;19783:17;;19803:1;19783:21;;;;:::i;:::-;:37;;19716:104;19713:150;;;19837:14;:12;:14::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19946:13:0;;;;:9;:13;;;;;;;;19942:126;;;-1:-1:-1;19975:15:0;;;;;;;;19983:7;19975:15;-1:-1:-1;;;;;19975:15:0;;;;;-1:-1:-1;;;19975:15:0;;;;;;;;-1:-1:-1;;;19975:15:0;;;;;;;;;;;-1:-1:-1;;;19975:15:0;;;;;;;;;19942:126;;;-1:-1:-1;;;;;20011:15:0;;;;;;:9;:15;;;;;;;;20008:60;;;-1:-1:-1;20042:14:0;;;;;;;;20050:6;20042:14;-1:-1:-1;;;;;20042:14:0;;;;;-1:-1:-1;;;20042:14:0;;;;;;;;-1:-1:-1;;;20042:14:0;;;;;;;;;;;-1:-1:-1;;;20042:14:0;;;;;;;;;20008:60;20091:14;;;;-1:-1:-1;;;;;20091:18:0;;20088:1058;;20125:53;;;;;;;;20166:12;20125:53;-1:-1:-1;;;;;20125:53:0;;;;;-1:-1:-1;;;20125:53:0;;;;;;;;-1:-1:-1;;;20125:53:0;;;;;;;;;;-1:-1:-1;;;20125:53:0;;;;;;;;;;;20196:11;;20211:12;20196:27;;20193:517;;-1:-1:-1;;;;;20247:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;20266:13:0;;;;;;:9;:13;;;;;;;;20247:32;20243:127;;;20326:9;;14157:5;;20317:18;;-1:-1:-1;;;;;20326:9:0;20317:6;:18;:::i;:::-;:32;;;;:::i;:::-;20303:47;;20243:127;20193:517;;;20410:11;;:15;;20424:1;20410:15;:::i;:::-;20394:12;:31;:66;;;-1:-1:-1;20445:11:0;;:15;;20459:1;20445:15;:::i;:::-;20429:12;:31;20394:66;20391:319;;;-1:-1:-1;;;;;20484:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;20503:13:0;;;;;;:9;:13;;;;;;;;20484:32;20480:122;;;14157:5;20554:13;:6;20563:4;20554:13;:::i;20391:319::-;20665:14;;;;14157:5;;20656:23;;-1:-1:-1;;;;;20656:23:0;:6;:23;:::i;:::-;:37;;;;:::i;:::-;20642:52;;20391:319;20816:3;20799:5;:14;;;-1:-1:-1;;;;;20772:41:0;20778:5;:18;;;-1:-1:-1;;;;;20772:24:0;:3;:24;;;;:::i;:::-;:41;;;;:::i;:::-;:47;;;;:::i;:::-;20724:18;:37;;:96;;;;;;;:::i;:::-;-1:-1:-1;;;;;20724:96:0;;;-1:-1:-1;20910:14:0;;;;20889:18;;20927:3;;-1:-1:-1;;;;;20883:41:0;;;;:24;;;:3;:24;:::i;:::-;:41;;;;:::i;:::-;:47;;;;:::i;:::-;20835:96;;:18;;:96;;;;;:::i;:::-;-1:-1:-1;;;;;20835:96:0;;;-1:-1:-1;21009:14:0;;;;20994:12;;;;21026:3;;-1:-1:-1;;;;;20988:35:0;;;;:18;;;:3;:18;:::i;:::-;:35;;;;:::i;:::-;:41;;;;:::i;:::-;20946:18;:31;;:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;20946:84:0;;;;;;21045:33;;:12;:33;;;;;;;;;;;;;;;;-1:-1:-1;;;21045:33:0;-1:-1:-1;;;;21045:33:0;;;-1:-1:-1;;;21045:33:0;;;;;-1:-1:-1;;;;21045:33:0;;;-1:-1:-1;;;21045:33:0;-1:-1:-1;;;;;;21045:33:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21093:41:0;21109:4;21123;-1:-1:-1;;;;;21093:41:0;;:15;:41::i;:::-;20110:1036;20088:1058;-1:-1:-1;;;;;;21166:10:0;;19613:1571;-1:-1:-1;;;;19613:1571:0:o;17902:1703::-;17988:7;;-1:-1:-1;;;17988:7:0;;;;17985:1611;;;-1:-1:-1;;;;;18033:20:0;;18011:19;18033:20;;;:16;:20;;;;;;;;;2418:18;;;;;;;;18118:36;;;;;;;;18146:8;18118:36;-1:-1:-1;;;;;18118:36:0;;;;;-1:-1:-1;;;18118:36:0;;;;;;;;;;;18216:11;;18033:20;;;;;18216:15;;18118:36;18216:15;:::i;:::-;18200:12;:31;:66;;;-1:-1:-1;18251:11:0;;:15;;18265:1;18251:15;:::i;:::-;18235:12;:31;18200:66;18197:247;;;18344:5;18323:13;2289:12;;;2201:108;18323:13;:18;;18339:2;18323:18;:::i;:::-;:26;;;;:::i;:::-;-1:-1:-1;;;;;18286:64:0;;;18422:5;18401:13;2289:12;;;2201:108;18401:13;:18;;18417:2;18401:18;:::i;:::-;:26;;;;:::i;:::-;-1:-1:-1;;;;;18369:59:0;:21;;;:59;18197:247;-1:-1:-1;;;;;18496:15:0;;;;;;:9;:15;;;;;;;;:34;;;;;18516:14;18515:15;18496:34;18492:538;;;18569:26;;-1:-1:-1;;;;;18559:36:0;;;;18551:56;;;;-1:-1:-1;;;18551:56:0;;23879:2:1;18551:56:0;;;23861:21:1;23918:1;23898:18;;;23891:29;-1:-1:-1;;;23936:18:1;;;23929:37;23983:18;;18551:56:0;23677:330:1;18551:56:0;18658:21;;;;-1:-1:-1;;;;;18634:45:0;:20;18643:11;18634:6;:20;:::i;:::-;:45;;18626:68;;;;-1:-1:-1;;;18626:68:0;;24214:2:1;18626:68:0;;;24196:21:1;24253:2;24233:18;;;24226:30;-1:-1:-1;;;24272:18:1;;;24265:40;24322:18;;18626:68:0;24012:334:1;18626:68:0;18492:538;;;-1:-1:-1;;;;;18755:13:0;;;;;;:9;:13;;;;;;;;:40;;;;-1:-1:-1;;;;;;18773:22:0;;;;;;:16;:22;;;;;;;;18772:23;18755:40;18751:279;;;18834:26;;-1:-1:-1;;;;;18824:36:0;;;;18816:56;;;;-1:-1:-1;;;18816:56:0;;23879:2:1;18816:56:0;;;23861:21:1;23918:1;23898:18;;;23891:29;-1:-1:-1;;;23936:18:1;;;23929:37;23983:18;;18816:56:0;23677:330:1;18751:279:0;18911:14;18907:123;;18978:21;;;;-1:-1:-1;;;;;18954:45:0;:20;18963:11;18954:6;:20;:::i;:::-;:45;;18946:68;;;;-1:-1:-1;;;18946:68:0;;24214:2:1;18946:68:0;;;24196:21:1;24253:2;24233:18;;;24226:30;-1:-1:-1;;;24272:18:1;;;24265:40;24322:18;;18946:68:0;24012:334:1;18946:68:0;19049:20;;-1:-1:-1;;;19049:20:0;;;;19046:537;;;19107:9;-1:-1:-1;;;;;19093:24:0;:2;-1:-1:-1;;;;;19093:24:0;;;:49;;;;;19135:6;-1:-1:-1;;;;;19121:21:0;:2;-1:-1:-1;;;;;19121:21:0;;;19093:49;19089:479;;;19199:9;19174:35;;;;:24;:35;;;;;;19217:12;;19174:40;;19212:2;19174:40;:::i;:::-;:55;19166:82;;;;-1:-1:-1;;;19166:82:0;;24553:2:1;19166:82:0;;;24535:21:1;24592:2;24572:18;;;24565:30;-1:-1:-1;;;24611:18:1;;;24604:44;24665:18;;19166:82:0;24351:338:1;19166:82:0;-1:-1:-1;;;;;19271:28:0;;;;;;;:24;:28;;;;;;19302:12;19271:43;;;;19362:9;19337:35;;;;:50;19429:6;19413:23;;;;;;19410:139;;19472:9;-1:-1:-1;;;;;19472:15:0;;;19464:61;;;;-1:-1:-1;;;19464:61:0;;24896:2:1;19464:61:0;;;24878:21:1;24935:2;24915:18;;;24908:30;24974:34;24954:18;;;24947:62;-1:-1:-1;;;25025:18:1;;;25018:31;25066:19;;19464:61:0;24694:397:1;3982:705:0;-1:-1:-1;;;;;4079:18:0;;4071:68;;;;-1:-1:-1;;;4071:68:0;;25298:2:1;4071:68:0;;;25280:21:1;25337:2;25317:18;;;25310:30;25376:34;25356:18;;;25349:62;-1:-1:-1;;;25427:18:1;;;25420:35;25472:19;;4071:68:0;25096:401:1;4071:68:0;-1:-1:-1;;;;;4158:16:0;;4150:64;;;;-1:-1:-1;;;4150:64:0;;25704:2:1;4150:64:0;;;25686:21:1;25743:2;25723:18;;;25716:30;25782:34;25762:18;;;25755:62;-1:-1:-1;;;25833:18:1;;;25826:33;25876:19;;4150:64:0;25502:399:1;4150:64:0;-1:-1:-1;;;;;4249:15:0;;4227:19;4249:15;;;;;;;;;;;4283:21;;;;4275:72;;;;-1:-1:-1;;;4275:72:0;;26108:2:1;4275:72:0;;;26090:21:1;26147:2;26127:18;;;26120:30;26186:34;26166:18;;;26159:62;-1:-1:-1;;;26237:18:1;;;26230:36;26283:19;;4275:72:0;25906:402:1;4275:72:0;-1:-1:-1;;;;;4383:15:0;;;:9;:15;;;;;;;;;;;4401:20;;;4383:38;;4601:13;;;;;;;;;;:23;;;;;;4653:26;;1676:25:1;;;4601:13:0;;4653:26;;1649:18:1;4653:26:0;;;;;;;4060:627;3982:705;;;:::o;7523:229::-;7660:12;7692:52;7714:6;7722:4;7728:1;7731:12;7692:21;:52::i;:::-;7685:59;7523:229;-1:-1:-1;;;;7523:229:0:o;21573:1719::-;21662:4;21618:23;2418:18;;;;;;;;;;;21679:50;;;;;;;;21717:12;21679:50;-1:-1:-1;;;;;21679:50:0;;;;;;-1:-1:-1;;;21679:50:0;;;;;;;;;;-1:-1:-1;;;21679:50:0;;;;;;;;;;;-1:-1:-1;;;21679:50:0;;;;;;;;;;;21618;;-1:-1:-1;21679:50:0;;-1:-1:-1;;21679:50:0;21768:71;;;:::i;:::-;:102;;;;:::i;:::-;-1:-1:-1;;;;;21740:130:0;;-1:-1:-1;21894:20:0;;;:46;;-1:-1:-1;21918:22:0;;21894:46;21891:60;;;21943:7;;;21573:1719::o;21891:60::-;21984:15;;:20;;22002:2;21984:20;:::i;:::-;21966:15;:38;21963:107;;;22038:15;;:20;;22056:2;22038:20;:::i;:::-;22020:38;;21963:107;22085:34;;;;-1:-1:-1;;;;;22085:38:0;;22082:407;;22139:23;22220:17;22183:15;:34;;;-1:-1:-1;;;;;22165:52:0;:15;:52;;;;:::i;:::-;:72;;;;:::i;:::-;22139:98;;22252:55;22276:4;22283:6;22291:15;22252;:55::i;:::-;22334:6;-1:-1:-1;;;;;22326:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22322:37;22373:34;22392:15;22373:34;;:::i;:::-;;;22443:15;:34;;;-1:-1:-1;;;;;22422:55:0;;;;;;:::i;:::-;;;22124:365;22082:407;22504:19;;22501:555;;22541:33;22558:15;22541:16;:33::i;:::-;22694:28;;;;22624:21;;22603:18;;-1:-1:-1;;;;;22694:32:0;;22691:175;;22759:10;;22795:28;;;;-1:-1:-1;;;;;22759:10:0;;;;22826:17;;22782:41;;-1:-1:-1;;;;;22782:41:0;:10;:41;:::i;:::-;:61;;;;:::i;:::-;22759:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22746:102:0;;-1:-1:-1;;22691:175:0;22895:21;;-1:-1:-1;22936:14:0;;22933:112;;22983:16;;:44;;-1:-1:-1;;;;;22983:16:0;;;;23012:10;;22983:44;;;;23012:10;22983:16;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22970:57:0;;-1:-1:-1;;22933:112:0;22524:532;;22501:555;-1:-1:-1;23105:1:0;23068:34;;;:38;;;23117;;;23166:28;;;:32;23211:12;:30;;;;;;;;;-1:-1:-1;;;23211:30:0;-1:-1:-1;;;;;;23211:30:0;;;;;;;;;-1:-1:-1;23272:12:0;23211:30;23252:32;21573:1719::o;8028:455::-;8198:12;8256:5;8231:21;:30;;8223:81;;;;-1:-1:-1;;;8223:81:0;;26515:2:1;8223:81:0;;;26497:21:1;26554:2;26534:18;;;26527:30;26593:34;26573:18;;;26566:62;-1:-1:-1;;;26644:18:1;;;26637:36;26690:19;;8223:81:0;26313:402:1;8223:81:0;8316:12;8330:23;8357:6;-1:-1:-1;;;;;8357:11:0;8376:5;8383:4;8357:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8315:73;;;;8406:69;8433:6;8441:7;8450:10;8462:12;8406:26;:69::i;:::-;8399:76;8028:455;-1:-1:-1;;;;;;;8028:455:0:o;21193:372::-;21282:16;;;21296:1;21282:16;;;;;;;;21258:21;;21282:16;;;;;;;;;;-1:-1:-1;21282:16:0;21258:40;;21327:4;21309;21314:1;21309:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21309:23:0;;;-1:-1:-1;;;;;21309:23:0;;;;;21353:4;21343;21348:1;21343:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21343:14:0;;;:7;;;;;;;;;:14;21370:187;;-1:-1:-1;;;21370:187:0;;:9;:60;;;;;;:187;;21445:8;;21468:1;;21484:4;;21511;;21531:15;;21370:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9587:644;9772:12;9801:7;9797:427;;;9829:10;:17;9850:1;9829:22;9825:290;;-1:-1:-1;;;;;6964:19:0;;;10039:60;;;;-1:-1:-1;;;10039:60:0;;28192:2:1;10039:60:0;;;28174:21:1;28231:2;28211:18;;;28204:30;28270:31;28250:18;;;28243:59;28319:18;;10039:60:0;27990:353:1;10039:60:0;-1:-1:-1;10136:10:0;10129:17;;9797:427;10179:33;10187:10;10199:12;10713:17;;:21;10709:388;;10945:10;10939:17;11002:15;10989:10;10985:2;10981:19;10974:44;10709:388;11072:12;11065:20;;-1:-1:-1;;;11065:20:0;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:418::-;532:2;521:9;514:21;495:4;564:6;558:13;607:6;602:2;591:9;587:18;580:34;666:6;661:2;653:6;649:15;644:2;633:9;629:18;623:50;722:1;717:2;708:6;697:9;693:22;689:31;682:42;792:2;785;781:7;776:2;768:6;764:15;760:29;749:9;745:45;741:54;733:62;;;383:418;;;;:::o;1033:300::-;1101:6;1109;1162:2;1150:9;1141:7;1137:23;1133:32;1130:52;;;1178:1;1175;1168:12;1130:52;1201:29;1220:9;1201:29;:::i;:::-;1191:39;1299:2;1284:18;;;;1271:32;;-1:-1:-1;;;1033:300:1:o;1712:226::-;1771:6;1824:2;1812:9;1803:7;1799:23;1795:32;1792:52;;;1840:1;1837;1830:12;1792:52;-1:-1:-1;1885:23:1;;1712:226;-1:-1:-1;1712:226:1:o;1943:374::-;2020:6;2028;2036;2089:2;2077:9;2068:7;2064:23;2060:32;2057:52;;;2105:1;2102;2095:12;2057:52;2128:29;2147:9;2128:29;:::i;:::-;2118:39;;2176:38;2210:2;2199:9;2195:18;2176:38;:::i;:::-;1943:374;;2166:48;;-1:-1:-1;;;2283:2:1;2268:18;;;;2255:32;;1943:374::o;2322:171::-;2389:20;;-1:-1:-1;;;;;2438:30:1;;2428:41;;2418:69;;2483:1;2480;2473:12;2498:328;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2680:28;2698:9;2680:28;:::i;:::-;2670:38;;2727:37;2760:2;2749:9;2745:18;2727:37;:::i;:::-;2717:47;;2783:37;2816:2;2805:9;2801:18;2783:37;:::i;:::-;2773:47;;2498:328;;;;;:::o;3020:127::-;3081:10;3076:3;3072:20;3069:1;3062:31;3112:4;3109:1;3102:15;3136:4;3133:1;3126:15;3152:1127;3236:6;3289:2;3277:9;3268:7;3264:23;3260:32;3257:52;;;3305:1;3302;3295:12;3257:52;3345:9;3332:23;-1:-1:-1;;;;;3370:6:1;3367:30;3364:50;;;3410:1;3407;3400:12;3364:50;3433:22;;3486:4;3478:13;;3474:27;-1:-1:-1;3464:55:1;;3515:1;3512;3505:12;3464:55;3555:2;3542:16;-1:-1:-1;;;;;3573:6:1;3570:30;3567:56;;;3603:18;;:::i;:::-;3649:6;3646:1;3642:14;3685:2;3679:9;3748:2;3744:7;3739:2;3735;3731:11;3727:25;3719:6;3715:38;3819:6;3807:10;3804:22;-1:-1:-1;;;;;3771:10:1;3768:34;3765:62;3762:88;;;3830:18;;:::i;:::-;3866:2;3859:22;3916;;;3966:2;3996:11;;;3992:20;;;3916:22;3954:15;;4024:19;;;4021:39;;;4056:1;4053;4046:12;4021:39;4088:2;4084;4080:11;4069:22;;4100:148;4116:6;4111:3;4108:15;4100:148;;;4182:23;4201:3;4182:23;:::i;:::-;4170:36;;4235:2;4133:12;;;;4226;4100:148;;;-1:-1:-1;4267:6:1;3152:1127;-1:-1:-1;;;;;;3152:1127:1:o;4284:301::-;4343:6;4396:2;4384:9;4375:7;4371:23;4367:32;4364:52;;;4412:1;4409;4402:12;4364:52;4451:9;4438:23;-1:-1:-1;;;;;4494:5:1;4490:46;4483:5;4480:57;4470:85;;4551:1;4548;4541:12;5286:367;5349:8;5359:6;5413:3;5406:4;5398:6;5394:17;5390:27;5380:55;;5431:1;5428;5421:12;5380:55;-1:-1:-1;5454:20:1;;-1:-1:-1;;;;;5486:30:1;;5483:50;;;5529:1;5526;5519:12;5483:50;5566:4;5558:6;5554:17;5542:29;;5626:3;5619:4;5609:6;5606:1;5602:14;5594:6;5590:27;5586:38;5583:47;5580:67;;;5643:1;5640;5633:12;5580:67;5286:367;;;;;:::o;5658:768::-;5780:6;5788;5796;5804;5857:2;5845:9;5836:7;5832:23;5828:32;5825:52;;;5873:1;5870;5863:12;5825:52;5913:9;5900:23;-1:-1:-1;;;;;5938:6:1;5935:30;5932:50;;;5978:1;5975;5968:12;5932:50;6017:70;6079:7;6070:6;6059:9;6055:22;6017:70;:::i;:::-;6106:8;;-1:-1:-1;5991:96:1;-1:-1:-1;;6194:2:1;6179:18;;6166:32;-1:-1:-1;;;;;6210:32:1;;6207:52;;;6255:1;6252;6245:12;6207:52;6294:72;6358:7;6347:8;6336:9;6332:24;6294:72;:::i;:::-;5658:768;;;;-1:-1:-1;6385:8:1;-1:-1:-1;;;;5658:768:1:o;7123:118::-;7209:5;7202:13;7195:21;7188:5;7185:32;7175:60;;7231:1;7228;7221:12;7175:60;7123:118;:::o;7246:315::-;7311:6;7319;7372:2;7360:9;7351:7;7347:23;7343:32;7340:52;;;7388:1;7385;7378:12;7340:52;7411:29;7430:9;7411:29;:::i;:::-;7401:39;;7490:2;7479:9;7475:18;7462:32;7503:28;7525:5;7503:28;:::i;:::-;7550:5;7540:15;;;7246:315;;;;;:::o;7566:260::-;7634:6;7642;7695:2;7683:9;7674:7;7670:23;7666:32;7663:52;;;7711:1;7708;7701:12;7663:52;7734:29;7753:9;7734:29;:::i;:::-;7724:39;;7782:38;7816:2;7805:9;7801:18;7782:38;:::i;:::-;7772:48;;7566:260;;;;;:::o;8856:184::-;8926:6;8979:2;8967:9;8958:7;8954:23;8950:32;8947:52;;;8995:1;8992;8985:12;8947:52;-1:-1:-1;9018:16:1;;8856:184;-1:-1:-1;8856:184:1:o;9045:380::-;9124:1;9120:12;;;;9167;;;9188:61;;9242:4;9234:6;9230:17;9220:27;;9188:61;9295:2;9287:6;9284:14;9264:18;9261:38;9258:161;;9341:10;9336:3;9332:20;9329:1;9322:31;9376:4;9373:1;9366:15;9404:4;9401:1;9394:15;9258:161;;9045:380;;;:::o;9430:338::-;9632:2;9614:21;;;9671:2;9651:18;;;9644:30;-1:-1:-1;;;9705:2:1;9690:18;;9683:44;9759:2;9744:18;;9430:338::o;10078:356::-;10280:2;10262:21;;;10299:18;;;10292:30;10358:34;10353:2;10338:18;;10331:62;10425:2;10410:18;;10078:356::o;10439:127::-;10500:10;10495:3;10491:20;10488:1;10481:31;10531:4;10528:1;10521:15;10555:4;10552:1;10545:15;10571:168;10644:9;;;10675;;10692:15;;;10686:22;;10672:37;10662:71;;10713:18;;:::i;10744:127::-;10805:10;10800:3;10796:20;10793:1;10786:31;10836:4;10833:1;10826:15;10860:4;10857:1;10850:15;10876:120;10916:1;10942;10932:35;;10947:18;;:::i;:::-;-1:-1:-1;10981:9:1;;10876:120::o;12185:191::-;-1:-1:-1;;;;;12253:26:1;;;12281;;;12249:59;;12320:27;;12317:53;;;12350:18;;:::i;12934:127::-;12995:10;12990:3;12986:20;12983:1;12976:31;13026:4;13023:1;13016:15;13050:4;13047:1;13040:15;13066:375;13154:1;13172:5;13186:249;13207:1;13197:8;13194:15;13186:249;;;13257:4;13252:3;13248:14;13242:4;13239:24;13236:50;;;13266:18;;:::i;:::-;13316:1;13306:8;13302:16;13299:49;;;13330:16;;;;13299:49;13413:1;13409:16;;;;;13369:15;;13186:249;;;13066:375;;;;;;:::o;13446:902::-;13495:5;13525:8;13515:80;;-1:-1:-1;13566:1:1;13580:5;;13515:80;13614:4;13604:76;;-1:-1:-1;13651:1:1;13665:5;;13604:76;13696:4;13714:1;13709:59;;;;13782:1;13777:174;;;;13689:262;;13709:59;13739:1;13730:10;;13753:5;;;13777:174;13814:3;13804:8;13801:17;13798:43;;;13821:18;;:::i;:::-;-1:-1:-1;;13877:1:1;13863:16;;13936:5;;13689:262;;14035:2;14025:8;14022:16;14016:3;14010:4;14007:13;14003:36;13997:2;13987:8;13984:16;13979:2;13973:4;13970:12;13966:35;13963:77;13960:203;;;-1:-1:-1;14072:19:1;;;14148:5;;13960:203;14195:42;-1:-1:-1;;14220:8:1;14214:4;14195:42;:::i;:::-;14273:6;14269:1;14265:6;14261:19;14252:7;14249:32;14246:58;;;14284:18;;:::i;:::-;14322:20;;13446:902;-1:-1:-1;;;13446:902:1:o;14353:140::-;14411:5;14440:47;14481:4;14471:8;14467:19;14461:4;14440:47;:::i;15056:125::-;15121:9;;;15142:10;;;15139:36;;;15155:18;;:::i;22121:128::-;22188:9;;;22209:11;;;22206:37;;;22223:18;;:::i;22254:245::-;22321:6;22374:2;22362:9;22353:7;22349:23;22345:32;22342:52;;;22390:1;22387;22380:12;22342:52;22422:9;22416:16;22441:28;22463:5;22441:28;:::i;22915:317::-;-1:-1:-1;;;;;23000:42:1;;;23044;;;22996:91;23107:52;;;;23178:24;;;23168:58;;23206:18;;:::i;:::-;23168:58;22915:317;;;;:::o;23237:227::-;23277:1;-1:-1:-1;;;;;23308:1:1;23304:42;23365:3;23355:37;;23372:18;;:::i;:::-;23454:3;-1:-1:-1;;;;;23414:1:1;23410:42;23406:52;23401:57;;;23237:227;;;;:::o;23469:203::-;-1:-1:-1;;;;;23537:30:1;;;23569;;;23533:67;;23612:31;;23609:57;;;23646:18;;:::i;26720:301::-;26849:3;26887:6;26881:13;26933:6;26926:4;26918:6;26914:17;26909:3;26903:37;26995:1;26959:16;;26984:13;;;-1:-1:-1;26959:16:1;26720:301;-1:-1:-1;26720:301:1:o;27026:959::-;27288:4;27336:3;27325:9;27321:19;27367:6;27356:9;27349:25;27410:6;27405:2;27394:9;27390:18;27383:34;27453:3;27448:2;27437:9;27433:18;27426:31;27477:6;27512;27506:13;27543:6;27535;27528:22;27581:3;27570:9;27566:19;27559:26;;27620:2;27612:6;27608:15;27594:29;;27641:1;27651:195;27665:6;27662:1;27659:13;27651:195;;;27730:13;;-1:-1:-1;;;;;27726:39:1;27714:52;;27795:2;27821:15;;;;27786:12;;;;27762:1;27680:9;27651:195;;;-1:-1:-1;;;;;;;27902:32:1;;;;27897:2;27882:18;;27875:60;-1:-1:-1;;27966:3:1;27951:19;27944:35;27863:3;27026:959;-1:-1:-1;;;27026:959:1:o
Swarm Source
ipfs://5c4c5547eef1661e556ed61cc69c896ba4dba6b54e13628e76cf19e18f0886c8
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)