ERC-20
Source Code
Overview
Max Total Supply
71,017.115305 USSD
Holders
711
Market
Price
$0.9947 @ 0.000337 ETH (+0.05%)
Onchain Market Cap
-
Circulating Supply Market Cap
$70,638.00
Other Info
Token Contract (WITH 6 Decimals)
Balance
1.687544 USSDValue
$1.68 ( ~0.00056923194970503 ETH) [0.0024%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
USSD
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)Audit Report
/**
*Submitted for verification at Arbiscan.io on 2024-03-12
*/
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
/*//////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(address indexed owner, address indexed spender, uint256 amount);
/*//////////////////////////////////////////////////////////////
METADATA STORAGE
//////////////////////////////////////////////////////////////*/
string public name;
string public symbol;
uint8 public immutable decimals;
/*//////////////////////////////////////////////////////////////
ERC20 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
/*//////////////////////////////////////////////////////////////
EIP-2612 STORAGE
//////////////////////////////////////////////////////////////*/
uint256 internal immutable INITIAL_CHAIN_ID;
bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
mapping(address => uint256) public nonces;
/*//////////////////////////////////////////////////////////////
CONSTRUCTOR
//////////////////////////////////////////////////////////////*/
constructor(
string memory _name,
string memory _symbol,
uint8 _decimals
) {
name = _name;
symbol = _symbol;
decimals = _decimals;
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
}
/*//////////////////////////////////////////////////////////////
ERC20 LOGIC
//////////////////////////////////////////////////////////////*/
function approve(address spender, uint256 amount) public virtual returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address to, uint256 amount) public virtual returns (bool) {
balanceOf[msg.sender] -= amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(msg.sender, to, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual returns (bool) {
uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.
if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;
balanceOf[from] -= amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(from, to, amount);
return true;
}
/*//////////////////////////////////////////////////////////////
EIP-2612 LOGIC
//////////////////////////////////////////////////////////////*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public virtual {
require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");
// Unchecked because the only math done is incrementing
// the owner's nonce which cannot realistically overflow.
unchecked {
address recoveredAddress = ecrecover(
keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR(),
keccak256(
abi.encode(
keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
),
owner,
spender,
value,
nonces[owner]++,
deadline
)
)
)
),
v,
r,
s
);
require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");
allowance[recoveredAddress][spender] = value;
}
emit Approval(owner, spender, value);
}
function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
}
function computeDomainSeparator() internal view virtual returns (bytes32) {
return
keccak256(
abi.encode(
keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
keccak256(bytes(name)),
keccak256("1"),
block.chainid,
address(this)
)
);
}
/*//////////////////////////////////////////////////////////////
INTERNAL MINT/BURN LOGIC
//////////////////////////////////////////////////////////////*/
function _mint(address to, uint256 amount) internal virtual {
totalSupply += amount;
// Cannot overflow because the sum of all user
// balances can't exceed the max uint256 value.
unchecked {
balanceOf[to] += amount;
}
emit Transfer(address(0), to, amount);
}
function _burn(address from, uint256 amount) internal virtual {
balanceOf[from] -= amount;
// Cannot underflow because a user's balance
// will never be larger than the total supply.
unchecked {
totalSupply -= amount;
}
emit Transfer(from, address(0), amount);
}
}
/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
/// @dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller.
library SafeTransferLib {
/*//////////////////////////////////////////////////////////////
ETH OPERATIONS
//////////////////////////////////////////////////////////////*/
function safeTransferETH(address to, uint256 amount) internal {
bool success;
/// @solidity memory-safe-assembly
assembly {
// Transfer the ETH and store if it succeeded or not.
success := call(gas(), to, amount, 0, 0, 0, 0)
}
require(success, "ETH_TRANSFER_FAILED");
}
/*//////////////////////////////////////////////////////////////
ERC20 OPERATIONS
//////////////////////////////////////////////////////////////*/
function safeTransferFrom(
ERC20 token,
address from,
address to,
uint256 amount
) internal {
bool success;
/// @solidity memory-safe-assembly
assembly {
// Get a pointer to some free memory.
let freeMemoryPointer := mload(0x40)
// Write the abi-encoded calldata into memory, beginning with the function selector.
mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000)
mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "from" argument.
mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
mstore(add(freeMemoryPointer, 68), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.
success := and(
// Set success to whether the call reverted, if not we check it either
// returned exactly 1 (can't just be non-zero data), or had no return data.
or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
// We use 100 because the length of our calldata totals up like so: 4 + 32 * 3.
// We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
// Counterintuitively, this call must be positioned second to the or() call in the
// surrounding and() call or else returndatasize() will be zero during the computation.
call(gas(), token, 0, freeMemoryPointer, 100, 0, 32)
)
}
require(success, "TRANSFER_FROM_FAILED");
}
function safeTransfer(
ERC20 token,
address to,
uint256 amount
) internal {
bool success;
/// @solidity memory-safe-assembly
assembly {
// Get a pointer to some free memory.
let freeMemoryPointer := mload(0x40)
// Write the abi-encoded calldata into memory, beginning with the function selector.
mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)
mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.
success := and(
// Set success to whether the call reverted, if not we check it either
// returned exactly 1 (can't just be non-zero data), or had no return data.
or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
// We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
// We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
// Counterintuitively, this call must be positioned second to the or() call in the
// surrounding and() call or else returndatasize() will be zero during the computation.
call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
)
}
require(success, "TRANSFER_FAILED");
}
function safeApprove(
ERC20 token,
address to,
uint256 amount
) internal {
bool success;
/// @solidity memory-safe-assembly
assembly {
// Get a pointer to some free memory.
let freeMemoryPointer := mload(0x40)
// Write the abi-encoded calldata into memory, beginning with the function selector.
mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000)
mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.
success := and(
// Set success to whether the call reverted, if not we check it either
// returned exactly 1 (can't just be non-zero data), or had no return data.
or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
// We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
// We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
// Counterintuitively, this call must be positioned second to the or() call in the
// surrounding and() call or else returndatasize() will be zero during the computation.
call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
)
}
require(success, "APPROVE_FAILED");
}
}
interface IStableOracle {
// return 18 decimals USD price of an asset
function getPriceUSD() external view returns (uint256);
}
interface IUSSDInsurance {
function insuranceClaim() external;
}
interface IUSSD {
function prevSupplyAndCF() external view returns (uint256, uint256);
function mintRewards(uint256 stableCoinAmount, address to) external;
}
/**
@notice Autonomous on-chain Stablecoin
*/
contract USSD is
IUSSD,
ERC20
{
//using SafeERC20 for IERC20;
using SafeTransferLib for ERC20;
address public stakingContract;
address public insuranceContract;
bool public switchedToDAI;
bool public switchedToWETH;
address public constant STABLE = 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9;
address public constant STABLEDAI = 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1;
address public constant WBGL = 0x2bA64EFB7A4Ec8983E22A49c81fa216AC33f383A;
address public constant WBTC = 0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f;
address public constant WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;
address private STABLE_ORACLE;
address private STABLEDAI_ORACLE;
address private WBGL_ORACLE;
address private WBTC_ORACLE;
address private WETH_ORACLE;
address private owner;
uint256 private currSupply;
uint256 private prevSupply;
uint256 private currCollateralFactor;
uint256 private prevCollateralFactor;
uint256 private prevBlockNo;
/// @custom:oz-upgrades-unsafe-allow constructor
constructor(string memory _name, string memory _symbol, uint8 _decimals) ERC20(_name, _symbol, _decimals) {
owner = msg.sender;
}
/**
@dev restrict calls only by STABLE_CONTROL_ROLE role
*/
modifier onlyOwner() {
require(msg.sender == owner, "owner");
_;
}
/**
@dev connect staking contract (deployed after this contract)
*/
function connectStaking(address _staking) public onlyOwner {
require(stakingContract == address(0)); // can be triggered only once
stakingContract = _staking;
}
/**
@dev connect insurance contract (deployed after this contract)
*/
function connectInsurance(address _insurance) public onlyOwner {
require(insuranceContract == address(0)); // can be triggered only once
insuranceContract = _insurance;
}
/**
@dev single-time if stable (USDT) goes bad, switch to DAI
*/
function switchToDAI() public onlyOwner {
require(!switchedToWETH && !switchedToDAI);
switchedToDAI = true;
}
/**
@dev single-time if all collateral pegs fail, switch to WETH only
*/
function switchToWETH() public onlyOwner {
require(!switchedToWETH);
switchedToWETH = true;
}
/**
@dev single-time connect oracles (or these addresses could be hardcoded consts)
*/
function setOracles(address _stableOracle, address _DAIOracle, address _WBGLOracle, address _WBTCOracle, address _WETHOracle) public onlyOwner {
require(STABLE_ORACLE == address(0)); // can be triggered only once
STABLE_ORACLE = _stableOracle;
STABLEDAI_ORACLE = _DAIOracle;
WBGL_ORACLE = _WBGLOracle;
WBTC_ORACLE = _WBTCOracle;
WETH_ORACLE = _WETHOracle;
}
/**
@dev change owner address or completely lock owner methods
*/
function changeOwner(address _owner) public onlyOwner {
require(owner != 0x0000000000000000000000000000000000000000, "zero addr");
owner = _owner;
}
/*//////////////////////////////////////////////////////////////
Events
//////////////////////////////////////////////////////////////*/
event Mint(
address indexed from,
address indexed to,
address token,
uint256 amountToken,
uint256 amountUSSD
);
event Redeem(
address indexed from,
address indexed to,
uint256 amountUSSD,
uint256 amountValuation
);
/*//////////////////////////////////////////////////////////////
MINT LOGIC
//////////////////////////////////////////////////////////////*/
/**
@dev Mint by staking or insurance contracts as rewards
could be called only by staking or insurance contracts
*/
function mintRewards(
uint256 stableCoinAmount,
address to
) public override {
require(msg.sender == stakingContract || msg.sender == insuranceContract, "minter");
require(to != address(0));
_mint(to, stableCoinAmount);
emit Mint(msg.sender, to, address(0), 0, stableCoinAmount);
}
/**
@dev mint specific AMOUNT OF STABLE by giving token depending on conditions
*/
function mintForToken(
address token,
uint256 tokenAmount,
address to
) public returns (uint256 stableCoinAmount) {
require(to != address(0));
if (switchedToWETH) {
require(token == WETH, "weth only");
} else {
address stable = STABLE;
uint256 balance = ERC20(stable).balanceOf(address(this));
if (switchedToDAI) {
stable = STABLEDAI;
balance = ERC20(stable).balanceOf(address(this)) / 1e12; // USSD has 6 decimals, DAI 18 decimals
}
if (btcsummer() || balance <= (this.totalSupply() * 5 / 100)) {
// mint only for stables is allowed
require(token == stable, "STABLE only");
} else if (balance > (this.totalSupply() * 15 / 100)) {
// WBSC or WETH only
require(token == WETH || token == WBTC, "WBTCorWETH");
} else {
require(token == WETH || token == WBTC || token == stable, "unknown token");
}
}
stableCoinAmount = calculateMint(token, tokenAmount);
_mint(to, stableCoinAmount);
ERC20(token).safeTransferFrom(
msg.sender,
address(this),
tokenAmount
);
// protect from flash-loan supply inflation
if (block.number > prevBlockNo) {
prevSupply = currSupply; // remember latest total supply in some prev. block
prevCollateralFactor = currCollateralFactor;
prevBlockNo = block.number;
}
currSupply = totalSupply;
currCollateralFactor = collateralFactor();
emit Mint(msg.sender, to, token, tokenAmount, stableCoinAmount);
}
/**
@dev try to evaluate stage of BTC 4-year halving cycle
*/
function btcsummer() internal view returns (bool) {
// (822721 + (block.timestamp - 1703420845) / 600) % 210000
// range 0-209999
// 52500 - 105000 is 2nd stage of cycle (summer), otherwise 1st stage of cycle (winter)
uint256 cycle = (822721 + (block.timestamp - 1703420845) / 600) % 210000;
if (cycle >= 52500 && cycle <= 105000) {
return true;
}
return false;
}
/**
@dev Return how much STABLECOIN does user receive for AMOUNT of asset
*/
function calculateMint(address _token, uint256 _amount) public view returns (uint256) {
// for collateral component tokens that have 18 decimals, so divide by 1e36 = 1e18 price fraction and 1e18 token fraction
if (_token == WETH) {
return IStableOracle(WETH_ORACLE).getPriceUSD() * _amount / 1e30; // * (10 ** decimals) / 1e36;
} else if (_token == WBTC) {
return IStableOracle(WBTC_ORACLE).getPriceUSD() * _amount / 1e20; // * (10 ** decimals) / 1e26; WBTC 8 decimals
} else if (_token == STABLE) {
return IStableOracle(STABLE_ORACLE).getPriceUSD() * _amount / 1e18; // * (10 ** decimals) / 1e24; USDT 6 decimals
} else if (_token == STABLEDAI) {
return IStableOracle(STABLEDAI_ORACLE).getPriceUSD() * _amount / 1e30; // * (10 ** decimals) / 1e36;
}
revert("unknown_token");
}
/**
@dev Redeem specific AMOUNT OF COLLATERAL by burning token
*/
function redeem(
uint256 _amount,
address to
) public {
require(to != address(0));
uint256 cf = collateralFactor();
if (cf < 900000000000000000) {
IUSSDInsurance(insuranceContract).insuranceClaim();
// insurance claim can change collateral factor, so we recalculate it for this redeem
cf = collateralFactor();
}
uint256 weight = 1e18;
if (cf < 950000000000000000) {
// penalize redeems when undercollateralized to avoid bank runs and redeem competition
weight = cf * 950000000000000000 / 1e18;
}
// USD valuation (1e18 based)
uint256 valuationToGive = _amount * 1e12 * weight / 1e18;
_burn(msg.sender, _amount);
// to save one var, emit event now
emit Redeem(msg.sender, to, _amount, valuationToGive);
if (!switchedToDAI) {
(uint256 amount, uint256 val) = calculateRedeem(STABLE, valuationToGive);
if (amount > 0) {
ERC20(STABLE).safeTransfer(to, amount);
valuationToGive = valuationToGive - val;
}
} else {
(uint256 amount, uint256 val) = calculateRedeem(STABLEDAI, valuationToGive);
if (amount > 0) {
ERC20(STABLEDAI).safeTransfer(to, amount);
valuationToGive = valuationToGive - val;
}
}
if (valuationToGive > 0) {
(uint256 amount, uint256 val) = calculateRedeem(WBGL, valuationToGive);
if (amount > 0) {
ERC20(WBGL).safeTransfer(to, amount);
valuationToGive = valuationToGive - val;
}
}
if (valuationToGive > 0) {
(uint256 amount, uint256 val) = calculateRedeem(WBTC, valuationToGive);
if (amount > 0) {
ERC20(WBTC).safeTransfer(to, amount);
valuationToGive = valuationToGive - val;
}
}
if (valuationToGive > 0) {
(uint256 amount, uint256 val) = calculateRedeem(WETH, valuationToGive);
if (amount > 0) {
ERC20(WETH).safeTransfer(to, amount);
valuationToGive = valuationToGive - val;
}
}
}
/**
@dev Return valuation to track if redeem is completely covered by this collateral component
*/
function calculateRedeem(address _token, uint256 _valuation) public view returns (uint256 amount, uint256 valuation) {
uint256 totalVal = 0;
if (_token == WETH) {
totalVal = IStableOracle(WETH_ORACLE).getPriceUSD() * ERC20(WETH).balanceOf(address(this)) / 1e18;
} else if (_token == WBTC) {
totalVal = IStableOracle(WBTC_ORACLE).getPriceUSD() * ERC20(WBTC).balanceOf(address(this)) / 1e8;
} else if (_token == STABLE) {
totalVal = IStableOracle(STABLE_ORACLE).getPriceUSD() * ERC20(STABLE).balanceOf(address(this)) / 1e6;
} else if (_token == STABLEDAI) {
totalVal = IStableOracle(STABLEDAI_ORACLE).getPriceUSD() * ERC20(STABLEDAI).balanceOf(address(this)) / 1e18;
} else if (_token == WBGL) {
totalVal = IStableOracle(WBGL_ORACLE).getPriceUSD() * ERC20(WBGL).balanceOf(address(this)) / 1e18;
} else {
revert("unknown_token");
}
if (_valuation <= totalVal) {
// only partial redeem using this collateral component
return (ERC20(_token).balanceOf(address(this)) * _valuation / totalVal, _valuation);
} else {
// enough to do full redeem
return (ERC20(_token).balanceOf(address(this)), totalVal);
}
}
/*//////////////////////////////////////////////////////////////
ACCOUNTING LOGIC
//////////////////////////////////////////////////////////////*/
/**
@dev Estimate own collateral ratio based on collateral component prices
@return 1e18-based collateral ratio (1e18 = 1.0, >1.0 overcollateralized, <1.0 undercollateralized)
*/
function collateralFactor() public view returns (uint256) {
if (totalSupply == 0) {
return 0;
}
uint256 totalAssetsUSD = 0;
if (!switchedToWETH) {
if (!switchedToDAI) {
totalAssetsUSD += ERC20(STABLE).balanceOf(address(this)) * IStableOracle(STABLE_ORACLE).getPriceUSD() / 1e6;
} else {
totalAssetsUSD += ERC20(STABLEDAI).balanceOf(address(this)) * IStableOracle(STABLEDAI_ORACLE).getPriceUSD() / 1e18;
}
totalAssetsUSD += ERC20(WBTC).balanceOf(address(this)) * IStableOracle(WBTC_ORACLE).getPriceUSD() / 1e8;
}
totalAssetsUSD += ERC20(WETH).balanceOf(address(this)) * IStableOracle(WETH_ORACLE).getPriceUSD() / 1e18;
return totalAssetsUSD * 1e6 / totalSupply;
}
/**
@dev returns collateral factor and total supply at the state after mint in some previous block
(used for the flash-loan protection when distributing rewards)
*/
function prevSupplyAndCF() override external view returns (uint256, uint256) {
return (prevSupply, prevCollateralFactor);
}
}Contract Security Audit
- Hacken - Mar 7, 2024 - Security Audit Report
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountUSSD","type":"uint256"}],"name":"Mint","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":"amountUSSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountValuation","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STABLE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STABLEDAI","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBGL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBTC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_valuation","type":"uint256"}],"name":"calculateRedeem","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"valuation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collateralFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_insurance","type":"address"}],"name":"connectInsurance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"connectStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"mintForToken","outputs":[{"internalType":"uint256","name":"stableCoinAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stableCoinAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"mintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"prevSupplyAndCF","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stableOracle","type":"address"},{"internalType":"address","name":"_DAIOracle","type":"address"},{"internalType":"address","name":"_WBGLOracle","type":"address"},{"internalType":"address","name":"_WBTCOracle","type":"address"},{"internalType":"address","name":"_WETHOracle","type":"address"}],"name":"setOracles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"switchToDAI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"switchToWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"switchedToDAI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"switchedToWETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60e06040523480156200001157600080fd5b506040516200545c3803806200545c8339818101604052810190620000379190620002be565b82828282600090805190602001906200005292919062000179565b5081600190805190602001906200006b92919062000179565b508060ff1660808160ff1660f81b815250504660a0818152505062000095620000e960201b60201c565b60c0818152505050505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200069f565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200011d919062000416565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200015e9594939291906200042f565b60405160208183030381529060405280519060200120905090565b828054620001879062000596565b90600052602060002090601f016020900481019282620001ab5760008555620001f7565b82601f10620001c657805160ff1916838001178555620001f7565b82800160010185558215620001f7579182015b82811115620001f6578251825591602001919060010190620001d9565b5b5090506200020691906200020a565b5090565b5b80821115620002255760008160009055506001016200020b565b5090565b6000620002406200023a84620004b5565b6200048c565b9050828152602081018484840111156200025f576200025e62000665565b5b6200026c84828562000560565b509392505050565b600082601f8301126200028c576200028b62000660565b5b81516200029e84826020860162000229565b91505092915050565b600081519050620002b88162000685565b92915050565b600080600060608486031215620002da57620002d96200066f565b5b600084015167ffffffffffffffff811115620002fb57620002fa6200066a565b5b620003098682870162000274565b935050602084015167ffffffffffffffff8111156200032d576200032c6200066a565b5b6200033b8682870162000274565b92505060406200034e86828701620002a7565b9150509250925092565b62000363816200050b565b82525050565b62000374816200051f565b82525050565b60008154620003898162000596565b62000395818662000500565b94506001821660008114620003b35760018114620003c557620003fc565b60ff19831686528186019350620003fc565b620003d085620004eb565b60005b83811015620003f457815481890152600182019150602081019050620003d3565b838801955050505b50505092915050565b620004108162000549565b82525050565b60006200042482846200037a565b915081905092915050565b600060a08201905062000446600083018862000369565b62000455602083018762000369565b62000464604083018662000369565b62000473606083018562000405565b62000482608083018462000358565b9695505050505050565b600062000498620004ab565b9050620004a68282620005cc565b919050565b6000604051905090565b600067ffffffffffffffff821115620004d357620004d262000631565b5b620004de8262000674565b9050602081019050919050565b60008190508160005260206000209050919050565b600081905092915050565b6000620005188262000529565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200058057808201518184015260208101905062000563565b8381111562000590576000848401525b50505050565b60006002820490506001821680620005af57607f821691505b60208210811415620005c657620005c562000602565b5b50919050565b620005d78262000674565b810181811067ffffffffffffffff82111715620005f957620005f862000631565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006908162000553565b81146200069c57600080fd5b50565b60805160f81c60a05160c051614d8a620006d26000396000610e4a01526000610e1601526000610df00152614d8a6000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80637bde82f21161011a578063ad5c4648116100ad578063da493c191161007c578063da493c19146105e0578063dd62ed3e146105ea578063df011c411461061a578063ee99205c14610638578063fb8456231461065657610206565b8063ad5c464814610558578063d012a5a814610576578063d3d107f614610594578063d505accf146105c457610206565b80639d3ac030116100e95780639d3ac030146104c0578063a6f9dae1146104dc578063a9059cbb146104f8578063ab81b1b31461052857610206565b80637bde82f21461043a5780637ecebe0014610456578063817b6a061461048657806395d89b41146104a257610206565b80632adba8791161019d5780634dede3de1161016c5780634dede3de146103a6578063522b8812146103c457806354d9f653146103e25780636442d6361461040057806370a082311461040a57610206565b80632adba8791461031b578063313ce567146103395780633644e5151461035757806346bf654d1461037557610206565b8063165e8079116101d9578063165e80791461029357806318160ddd146102b157806323b872dd146102cf57806326343784146102ff57610206565b806303afdab11461020b57806306fdde0314610227578063095ea7b3146102455780630fd9eeeb14610275575b600080fd5b61022560048036038101906102209190613dff565b610675565b005b61022f6107a4565b60405161023c91906145d2565b60405180910390f35b61025f600480360381019061025a9190613fdc565b610832565b60405161026c91906144a3565b60405180910390f35b61027d610924565b60405161028a919061441a565b60405180910390f35b61029b61093c565b6040516102a891906144a3565b60405180910390f35b6102b961094f565b6040516102c69190614774565b60405180910390f35b6102e960048036038101906102e49190613ee7565b610955565b6040516102f691906144a3565b60405180910390f35b61031960048036038101906103149190613e6c565b610b9f565b005b610323610dd6565b604051610330919061441a565b60405180910390f35b610341610dee565b60405161034e91906147b8565b60405180910390f35b61035f610e12565b60405161036c91906144be565b60405180910390f35b61038f600480360381019061038a9190613fdc565b610e6f565b60405161039d92919061478f565b60405180910390f35b6103ae61183f565b6040516103bb919061441a565b60405180910390f35b6103cc611857565b6040516103d991906144a3565b60405180910390f35b6103ea61186a565b6040516103f7919061441a565b60405180910390f35b610408611882565b005b610424600480360381019061041f9190613dff565b611962565b6040516104319190614774565b60405180910390f35b610454600480360381019061044f919061409c565b61197a565b005b610470600480360381019061046b9190613dff565b611dfd565b60405161047d9190614774565b60405180910390f35b6104a0600480360381019061049b9190613dff565b611e15565b005b6104aa611f44565b6040516104b791906145d2565b60405180910390f35b6104da60048036038101906104d5919061409c565b611fd2565b005b6104f660048036038101906104f19190613dff565b61216c565b005b610512600480360381019061050d9190613fdc565b6122d2565b60405161051f91906144a3565b60405180910390f35b610542600480360381019061053d9190613fdc565b6123e6565b60405161054f9190614774565b60405180910390f35b610560612868565b60405161056d919061441a565b60405180910390f35b61057e612880565b60405161058b919061441a565b60405180910390f35b6105ae60048036038101906105a9919061401c565b6128a6565b6040516105bb9190614774565b60405180910390f35b6105de60048036038101906105d99190613f3a565b612f6e565b005b6105e8613267565b005b61060460048036038101906105ff9190613e2c565b61332e565b6040516106119190614774565b60405180910390f35b610622613353565b60405161062f9190614774565b60405180910390f35b61064061394f565b60405161064d919061441a565b60405180910390f35b61065e613975565b60405161066c92919061478f565b60405180910390f35b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076057600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080546107b1906149d3565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906149d3565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109129190614774565b60405180910390a36001905092915050565b732ba64efb7a4ec8983e22a49c81fa216ac33f383a81565b600760159054906101000a900460ff1681565b60025481565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a8b578281610a0a91906148fb565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ada91906148fb565b9250508190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610b8b9190614774565b60405180910390a360019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c26906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8a57600080fd5b84600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b73da10009cbd5d07dd0cecc66161fc93d7c9000da181565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000004614610e4857610e43613986565b610e6a565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b60008060007382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561101d57670de0b6b3a76400007382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f12919061441a565b60206040518083038186803b158015610f2a57600080fd5b505afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f62919061406f565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fca57600080fd5b505afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611002919061406f565b61100c91906148a1565b6110169190614870565b90506116f7565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156111c2576305f5e100732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110b7919061441a565b60206040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611107919061406f565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561116f57600080fd5b505afa158015611183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a7919061406f565b6111b191906148a1565b6111bb9190614870565b90506116f6565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561136657620f424073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b919061441a565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab919061406f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b919061406f565b61135591906148a1565b61135f9190614870565b90506116f5565b73da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561150f57670de0b6b3a764000073da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611404919061441a565b60206040518083038186803b15801561141c57600080fd5b505afa158015611430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611454919061406f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f4919061406f565b6114fe91906148a1565b6115089190614870565b90506116f4565b732ba64efb7a4ec8983e22a49c81fa216ac33f383a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116b857670de0b6b3a7640000732ba64efb7a4ec8983e22a49c81fa216ac33f383a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ad919061441a565b60206040518083038186803b1580156115c557600080fd5b505afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd919061406f565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561166557600080fd5b505afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d919061406f565b6116a791906148a1565b6116b19190614870565b90506116f3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90614714565b60405180910390fd5b5b5b5b5b8084116117a85780848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611739919061441a565b60206040518083038186803b15801561175157600080fd5b505afa158015611765573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611789919061406f565b61179391906148a1565b61179d9190614870565b849250925050611838565b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117e1919061441a565b60206040518083038186803b1580156117f957600080fd5b505afa15801561180d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611831919061406f565b8192509250505b9250929050565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f81565b600760149054906101000a900460ff1681565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb981565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611909906145f4565b60405180910390fd5b600760159054906101000a900460ff1615801561193c5750600760149054906101000a900460ff16155b61194557600080fd5b6001600760146101000a81548160ff021916908315150217905550565b60036020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119b457600080fd5b60006119be613353565b9050670c7d713b49da0000811015611a5d57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e8fc79d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b50505050611a5a613353565b90505b6000670de0b6b3a76400009050670d2f13f7789f0000821015611aa457670de0b6b3a7640000670d2f13f7789f000083611a9791906148a1565b611aa19190614870565b90505b6000670de0b6b3a76400008264e8d4a5100087611ac191906148a1565b611acb91906148a1565b611ad59190614870565b9050611ae13386613a12565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc8784604051611b4092919061478f565b60405180910390a3600760149054906101000a900460ff16611bdf57600080611b7d73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb984610e6f565b915091506000821115611bd857611bc9868373fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611bd591906148fb565b92505b5050611c5e565b600080611c0073da10009cbd5d07dd0cecc66161fc93d7c9000da184610e6f565b915091506000821115611c5b57611c4c868373da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611c5891906148fb565b92505b50505b6000811115611ce657600080611c88732ba64efb7a4ec8983e22a49c81fa216ac33f383a84610e6f565b915091506000821115611ce357611cd48683732ba64efb7a4ec8983e22a49c81fa216ac33f383a73ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611ce091906148fb565b92505b50505b6000811115611d6e57600080611d10732f2a2543b76a4166549f7aab2e75bef0aefc5b0f84610e6f565b915091506000821115611d6b57611d5c8683732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611d6891906148fb565b92505b50505b6000811115611df657600080611d987382af49447d8a07e3bd95bd0d56f35241523fbab184610e6f565b915091506000821115611df357611de486837382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611df091906148fb565b92505b50505b5050505050565b60056020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0057600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018054611f51906149d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7d906149d3565b8015611fca5780601f10611f9f57610100808354040283529160200191611fca565b820191906000526020600020905b815481529060010190602001808311611fad57829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061207b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190614634565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120f457600080fd5b6120fe8183613b90565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc0025304673122449dd60b9b0093874b0e2fd6fe57af1c7c2fbfee0ccf5ead586000808660405161216093929190614435565b60405180910390a35050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614654565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461232391906148fb565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123d49190614774565b60405180910390a36001905092915050565b60007382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124fa576c0c9f2c9cd04674edea4000000082600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a757600080fd5b505afa1580156124bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124df919061406f565b6124e991906148a1565b6124f39190614870565b9050612862565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126085768056bc75e2d6310000082600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b557600080fd5b505afa1580156125c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ed919061406f565b6125f791906148a1565b6126019190614870565b9050612862565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561271557670de0b6b3a764000082600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa919061406f565b61270491906148a1565b61270e9190614870565b9050612862565b73da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612827576c0c9f2c9cd04674edea4000000082600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156127d457600080fd5b505afa1580156127e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280c919061406f565b61281691906148a1565b6128209190614870565b9050612862565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990614714565b60405180910390fd5b92915050565b7382af49447d8a07e3bd95bd0d56f35241523fbab181565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128e157600080fd5b600760159054906101000a900460ff161561297d577382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906146d4565b60405180910390fd5b612e80565b600073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129d1919061441a565b60206040518083038186803b1580156129e957600080fd5b505afa1580156129fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a21919061406f565b9050600760149054906101000a900460ff1615612aeb5773da10009cbd5d07dd0cecc66161fc93d7c9000da1915064e8d4a510008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a8e919061441a565b60206040518083038186803b158015612aa657600080fd5b505afa158015612aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ade919061406f565b612ae89190614870565b90505b612af3613c60565b80612b935750606460053073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4357600080fd5b505afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b919061406f565b612b8591906148a1565b612b8f9190614870565b8111155b15612c0b578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfd906146f4565b60405180910390fd5b612e7d565b6064600f3073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c5557600080fd5b505afa158015612c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8d919061406f565b612c9791906148a1565b612ca19190614870565b811115612d79577382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612d355750732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b90614614565b60405180910390fd5b612e7c565b7382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612e065750732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80612e3c57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b612e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7290614754565b60405180910390fd5b5b5b50505b612e8a84846123e6565b9050612e968282613b90565b612ec33330858773ffffffffffffffffffffffffffffffffffffffff16613ccb909392919063ffffffff16565b601254431115612ee757600e54600f81905550601054601181905550436012819055505b600254600e81905550612ef8613353565b6010819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc0025304673122449dd60b9b0093874b0e2fd6fe57af1c7c2fbfee0ccf5ead58868685604051612f5f9392919061446c565b60405180910390a39392505050565b42841015612fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa890614734565b60405180910390fd5b60006001612fbd610e12565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001613045969594939291906144d9565b6040516020818303038152906040528051906020012060405160200161306c9291906143e3565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516130a2949392919061458d565b6020604051602081039080840390855afa1580156130c4573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561313857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316e906146b4565b60405180910390fd5b85600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516132569190614774565b60405180910390a350505050505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ee906145f4565b60405180910390fd5b600760159054906101000a900460ff161561331157600080fd5b6001600760156101000a81548160ff021916908315150217905550565b6004602052816000526040600020602052806000526040600020600091509150505481565b6000806002541415613368576000905061394c565b6000600760159054906101000a900460ff166137c557600760149054906101000a900460ff166134f957620f4240600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133fe57600080fd5b505afa158015613412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613436919061406f565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613483919061441a565b60206040518083038186803b15801561349b57600080fd5b505afa1580156134af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d3919061406f565b6134dd91906148a1565b6134e79190614870565b816134f2919061481a565b9050613661565b670de0b6b3a7640000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561356a57600080fd5b505afa15801561357e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a2919061406f565b73da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135ef919061441a565b60206040518083038186803b15801561360757600080fd5b505afa15801561361b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363f919061406f565b61364991906148a1565b6136539190614870565b8161365e919061481a565b90505b6305f5e100600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136ce57600080fd5b505afa1580156136e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613706919061406f565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613753919061441a565b60206040518083038186803b15801561376b57600080fd5b505afa15801561377f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a3919061406f565b6137ad91906148a1565b6137b79190614870565b816137c2919061481a565b90505b670de0b6b3a7640000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561383657600080fd5b505afa15801561384a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386e919061406f565b7382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016138bb919061441a565b60206040518083038186803b1580156138d357600080fd5b505afa1580156138e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390b919061406f565b61391591906148a1565b61391f9190614870565b8161392a919061481a565b9050600254620f42408261393e91906148a1565b6139489190614870565b9150505b90565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600f54601154915091509091565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516139b891906143cc565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016139f795949392919061453a565b60405160208183030381529060405280519060200120905090565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a6191906148fb565b9250508190555080600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ad69190614774565b60405180910390a35050565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080613b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b8190614694565b60405180910390fd5b50505050565b8060026000828254613ba2919061481a565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c549190614774565b60405180910390a35050565b6000806203345061025863658823ad42613c7a91906148fb565b613c849190614870565b620c8dc1613c92919061481a565b613c9c9190614a0f565b905061cd148110158015613cb3575062019a288111155b15613cc2576001915050613cc8565b60009150505b90565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080613d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8690614674565b60405180910390fd5b5050505050565b600081359050613da581614cf8565b92915050565b600081359050613dba81614d0f565b92915050565b600081359050613dcf81614d26565b92915050565b600081519050613de481614d26565b92915050565b600081359050613df981614d3d565b92915050565b600060208284031215613e1557613e14614acd565b5b6000613e2384828501613d96565b91505092915050565b60008060408385031215613e4357613e42614acd565b5b6000613e5185828601613d96565b9250506020613e6285828601613d96565b9150509250929050565b600080600080600060a08688031215613e8857613e87614acd565b5b6000613e9688828901613d96565b9550506020613ea788828901613d96565b9450506040613eb888828901613d96565b9350506060613ec988828901613d96565b9250506080613eda88828901613d96565b9150509295509295909350565b600080600060608486031215613f0057613eff614acd565b5b6000613f0e86828701613d96565b9350506020613f1f86828701613d96565b9250506040613f3086828701613dc0565b9150509250925092565b600080600080600080600060e0888a031215613f5957613f58614acd565b5b6000613f678a828b01613d96565b9750506020613f788a828b01613d96565b9650506040613f898a828b01613dc0565b9550506060613f9a8a828b01613dc0565b9450506080613fab8a828b01613dea565b93505060a0613fbc8a828b01613dab565b92505060c0613fcd8a828b01613dab565b91505092959891949750929550565b60008060408385031215613ff357613ff2614acd565b5b600061400185828601613d96565b925050602061401285828601613dc0565b9150509250929050565b60008060006060848603121561403557614034614acd565b5b600061404386828701613d96565b935050602061405486828701613dc0565b925050604061406586828701613d96565b9150509250925092565b60006020828403121561408557614084614acd565b5b600061409384828501613dd5565b91505092915050565b600080604083850312156140b3576140b2614acd565b5b60006140c185828601613dc0565b92505060206140d285828601613d96565b9150509250929050565b6140e58161492f565b82525050565b6140f481614941565b82525050565b6141038161494d565b82525050565b61411a6141158261494d565b614a05565b82525050565b6000815461412d816149d3565b61413781866147f3565b94506001821660008114614152576001811461416357614196565b60ff19831686528186019350614196565b61416c856147d3565b60005b8381101561418e5781548189015260018201915060208101905061416f565b838801955050505b50505092915050565b6141a88161498e565b82525050565b60006141b9826147e8565b6141c381856147fe565b93506141d38185602086016149a0565b6141dc81614ad2565b840191505092915050565b60006141f46005836147fe565b91506141ff82614ae3565b602082019050919050565b6000614217600a836147fe565b915061422282614b0c565b602082019050919050565b600061423a60028361480f565b915061424582614b35565b600282019050919050565b600061425d6006836147fe565b915061426882614b5e565b602082019050919050565b60006142806009836147fe565b915061428b82614b87565b602082019050919050565b60006142a36014836147fe565b91506142ae82614bb0565b602082019050919050565b60006142c6600f836147fe565b91506142d182614bd9565b602082019050919050565b60006142e9600e836147fe565b91506142f482614c02565b602082019050919050565b600061430c6009836147fe565b915061431782614c2b565b602082019050919050565b600061432f600b836147fe565b915061433a82614c54565b602082019050919050565b6000614352600d836147fe565b915061435d82614c7d565b602082019050919050565b60006143756017836147fe565b915061438082614ca6565b602082019050919050565b6000614398600d836147fe565b91506143a382614ccf565b602082019050919050565b6143b781614977565b82525050565b6143c681614981565b82525050565b60006143d88284614120565b915081905092915050565b60006143ee8261422d565b91506143fa8285614109565b60208201915061440a8284614109565b6020820191508190509392505050565b600060208201905061442f60008301846140dc565b92915050565b600060608201905061444a60008301866140dc565b614457602083018561419f565b61446460408301846143ae565b949350505050565b600060608201905061448160008301866140dc565b61448e60208301856143ae565b61449b60408301846143ae565b949350505050565b60006020820190506144b860008301846140eb565b92915050565b60006020820190506144d360008301846140fa565b92915050565b600060c0820190506144ee60008301896140fa565b6144fb60208301886140dc565b61450860408301876140dc565b61451560608301866143ae565b61452260808301856143ae565b61452f60a08301846143ae565b979650505050505050565b600060a08201905061454f60008301886140fa565b61455c60208301876140fa565b61456960408301866140fa565b61457660608301856143ae565b61458360808301846140dc565b9695505050505050565b60006080820190506145a260008301876140fa565b6145af60208301866143bd565b6145bc60408301856140fa565b6145c960608301846140fa565b95945050505050565b600060208201905081810360008301526145ec81846141ae565b905092915050565b6000602082019050818103600083015261460d816141e7565b9050919050565b6000602082019050818103600083015261462d8161420a565b9050919050565b6000602082019050818103600083015261464d81614250565b9050919050565b6000602082019050818103600083015261466d81614273565b9050919050565b6000602082019050818103600083015261468d81614296565b9050919050565b600060208201905081810360008301526146ad816142b9565b9050919050565b600060208201905081810360008301526146cd816142dc565b9050919050565b600060208201905081810360008301526146ed816142ff565b9050919050565b6000602082019050818103600083015261470d81614322565b9050919050565b6000602082019050818103600083015261472d81614345565b9050919050565b6000602082019050818103600083015261474d81614368565b9050919050565b6000602082019050818103600083015261476d8161438b565b9050919050565b600060208201905061478960008301846143ae565b92915050565b60006040820190506147a460008301856143ae565b6147b160208301846143ae565b9392505050565b60006020820190506147cd60008301846143bd565b92915050565b60008190508160005260206000209050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061482582614977565b915061483083614977565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561486557614864614a40565b5b828201905092915050565b600061487b82614977565b915061488683614977565b92508261489657614895614a6f565b5b828204905092915050565b60006148ac82614977565b91506148b783614977565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148f0576148ef614a40565b5b828202905092915050565b600061490682614977565b915061491183614977565b92508282101561492457614923614a40565b5b828203905092915050565b600061493a82614957565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061499982614977565b9050919050565b60005b838110156149be5780820151818401526020810190506149a3565b838111156149cd576000848401525b50505050565b600060028204905060018216806149eb57607f821691505b602082108114156149ff576149fe614a9e565b5b50919050565b6000819050919050565b6000614a1a82614977565b9150614a2583614977565b925082614a3557614a34614a6f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b7f574254436f725745544800000000000000000000000000000000000000000000600082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f6d696e7465720000000000000000000000000000000000000000000000000000600082015250565b7f7a65726f20616464720000000000000000000000000000000000000000000000600082015250565b7f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000600082015250565b7f5452414e534645525f4641494c45440000000000000000000000000000000000600082015250565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b7f77657468206f6e6c790000000000000000000000000000000000000000000000600082015250565b7f535441424c45206f6e6c79000000000000000000000000000000000000000000600082015250565b7f756e6b6e6f776e5f746f6b656e00000000000000000000000000000000000000600082015250565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b7f756e6b6e6f776e20746f6b656e00000000000000000000000000000000000000600082015250565b614d018161492f565b8114614d0c57600080fd5b50565b614d188161494d565b8114614d2357600080fd5b50565b614d2f81614977565b8114614d3a57600080fd5b50565b614d4681614981565b8114614d5157600080fd5b5056fea264697066735822122095469fdfd146da5f4a820f7042685a12aa07d155040da93e6be9a93d3031c17964736f6c63430008060033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004555353440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553534400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102065760003560e01c80637bde82f21161011a578063ad5c4648116100ad578063da493c191161007c578063da493c19146105e0578063dd62ed3e146105ea578063df011c411461061a578063ee99205c14610638578063fb8456231461065657610206565b8063ad5c464814610558578063d012a5a814610576578063d3d107f614610594578063d505accf146105c457610206565b80639d3ac030116100e95780639d3ac030146104c0578063a6f9dae1146104dc578063a9059cbb146104f8578063ab81b1b31461052857610206565b80637bde82f21461043a5780637ecebe0014610456578063817b6a061461048657806395d89b41146104a257610206565b80632adba8791161019d5780634dede3de1161016c5780634dede3de146103a6578063522b8812146103c457806354d9f653146103e25780636442d6361461040057806370a082311461040a57610206565b80632adba8791461031b578063313ce567146103395780633644e5151461035757806346bf654d1461037557610206565b8063165e8079116101d9578063165e80791461029357806318160ddd146102b157806323b872dd146102cf57806326343784146102ff57610206565b806303afdab11461020b57806306fdde0314610227578063095ea7b3146102455780630fd9eeeb14610275575b600080fd5b61022560048036038101906102209190613dff565b610675565b005b61022f6107a4565b60405161023c91906145d2565b60405180910390f35b61025f600480360381019061025a9190613fdc565b610832565b60405161026c91906144a3565b60405180910390f35b61027d610924565b60405161028a919061441a565b60405180910390f35b61029b61093c565b6040516102a891906144a3565b60405180910390f35b6102b961094f565b6040516102c69190614774565b60405180910390f35b6102e960048036038101906102e49190613ee7565b610955565b6040516102f691906144a3565b60405180910390f35b61031960048036038101906103149190613e6c565b610b9f565b005b610323610dd6565b604051610330919061441a565b60405180910390f35b610341610dee565b60405161034e91906147b8565b60405180910390f35b61035f610e12565b60405161036c91906144be565b60405180910390f35b61038f600480360381019061038a9190613fdc565b610e6f565b60405161039d92919061478f565b60405180910390f35b6103ae61183f565b6040516103bb919061441a565b60405180910390f35b6103cc611857565b6040516103d991906144a3565b60405180910390f35b6103ea61186a565b6040516103f7919061441a565b60405180910390f35b610408611882565b005b610424600480360381019061041f9190613dff565b611962565b6040516104319190614774565b60405180910390f35b610454600480360381019061044f919061409c565b61197a565b005b610470600480360381019061046b9190613dff565b611dfd565b60405161047d9190614774565b60405180910390f35b6104a0600480360381019061049b9190613dff565b611e15565b005b6104aa611f44565b6040516104b791906145d2565b60405180910390f35b6104da60048036038101906104d5919061409c565b611fd2565b005b6104f660048036038101906104f19190613dff565b61216c565b005b610512600480360381019061050d9190613fdc565b6122d2565b60405161051f91906144a3565b60405180910390f35b610542600480360381019061053d9190613fdc565b6123e6565b60405161054f9190614774565b60405180910390f35b610560612868565b60405161056d919061441a565b60405180910390f35b61057e612880565b60405161058b919061441a565b60405180910390f35b6105ae60048036038101906105a9919061401c565b6128a6565b6040516105bb9190614774565b60405180910390f35b6105de60048036038101906105d99190613f3a565b612f6e565b005b6105e8613267565b005b61060460048036038101906105ff9190613e2c565b61332e565b6040516106119190614774565b60405180910390f35b610622613353565b60405161062f9190614774565b60405180910390f35b61064061394f565b60405161064d919061441a565b60405180910390f35b61065e613975565b60405161066c92919061478f565b60405180910390f35b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076057600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080546107b1906149d3565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906149d3565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109129190614774565b60405180910390a36001905092915050565b732ba64efb7a4ec8983e22a49c81fa216ac33f383a81565b600760159054906101000a900460ff1681565b60025481565b600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a8b578281610a0a91906148fb565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ada91906148fb565b9250508190555082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610b8b9190614774565b60405180910390a360019150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c26906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8a57600080fd5b84600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b73da10009cbd5d07dd0cecc66161fc93d7c9000da181565b7f000000000000000000000000000000000000000000000000000000000000000681565b60007f000000000000000000000000000000000000000000000000000000000000a4b14614610e4857610e43613986565b610e6a565b7f193188219fa0d7a1bfc068ac9614665ed04018896d180f5d10ab69264e7c89bc5b905090565b60008060007382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561101d57670de0b6b3a76400007382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f12919061441a565b60206040518083038186803b158015610f2a57600080fd5b505afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f62919061406f565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fca57600080fd5b505afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611002919061406f565b61100c91906148a1565b6110169190614870565b90506116f7565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156111c2576305f5e100732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110b7919061441a565b60206040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611107919061406f565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561116f57600080fd5b505afa158015611183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a7919061406f565b6111b191906148a1565b6111bb9190614870565b90506116f6565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561136657620f424073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161125b919061441a565b60206040518083038186803b15801561127357600080fd5b505afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab919061406f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b919061406f565b61135591906148a1565b61135f9190614870565b90506116f5565b73da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561150f57670de0b6b3a764000073da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611404919061441a565b60206040518083038186803b15801561141c57600080fd5b505afa158015611430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611454919061406f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f4919061406f565b6114fe91906148a1565b6115089190614870565b90506116f4565b732ba64efb7a4ec8983e22a49c81fa216ac33f383a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116b857670de0b6b3a7640000732ba64efb7a4ec8983e22a49c81fa216ac33f383a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ad919061441a565b60206040518083038186803b1580156115c557600080fd5b505afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd919061406f565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561166557600080fd5b505afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d919061406f565b6116a791906148a1565b6116b19190614870565b90506116f3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90614714565b60405180910390fd5b5b5b5b5b8084116117a85780848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611739919061441a565b60206040518083038186803b15801561175157600080fd5b505afa158015611765573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611789919061406f565b61179391906148a1565b61179d9190614870565b849250925050611838565b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117e1919061441a565b60206040518083038186803b1580156117f957600080fd5b505afa15801561180d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611831919061406f565b8192509250505b9250929050565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f81565b600760149054906101000a900460ff1681565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb981565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611909906145f4565b60405180910390fd5b600760159054906101000a900460ff1615801561193c5750600760149054906101000a900460ff16155b61194557600080fd5b6001600760146101000a81548160ff021916908315150217905550565b60036020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119b457600080fd5b60006119be613353565b9050670c7d713b49da0000811015611a5d57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e8fc79d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a3a57600080fd5b505af1158015611a4e573d6000803e3d6000fd5b50505050611a5a613353565b90505b6000670de0b6b3a76400009050670d2f13f7789f0000821015611aa457670de0b6b3a7640000670d2f13f7789f000083611a9791906148a1565b611aa19190614870565b90505b6000670de0b6b3a76400008264e8d4a5100087611ac191906148a1565b611acb91906148a1565b611ad59190614870565b9050611ae13386613a12565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc8784604051611b4092919061478f565b60405180910390a3600760149054906101000a900460ff16611bdf57600080611b7d73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb984610e6f565b915091506000821115611bd857611bc9868373fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611bd591906148fb565b92505b5050611c5e565b600080611c0073da10009cbd5d07dd0cecc66161fc93d7c9000da184610e6f565b915091506000821115611c5b57611c4c868373da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611c5891906148fb565b92505b50505b6000811115611ce657600080611c88732ba64efb7a4ec8983e22a49c81fa216ac33f383a84610e6f565b915091506000821115611ce357611cd48683732ba64efb7a4ec8983e22a49c81fa216ac33f383a73ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611ce091906148fb565b92505b50505b6000811115611d6e57600080611d10732f2a2543b76a4166549f7aab2e75bef0aefc5b0f84610e6f565b915091506000821115611d6b57611d5c8683732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611d6891906148fb565b92505b50505b6000811115611df657600080611d987382af49447d8a07e3bd95bd0d56f35241523fbab184610e6f565b915091506000821115611df357611de486837382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff16613ae29092919063ffffffff16565b8083611df091906148fb565b92505b50505b5050505050565b60056020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0057600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018054611f51906149d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7d906149d3565b8015611fca5780601f10611f9f57610100808354040283529160200191611fca565b820191906000526020600020905b815481529060010190602001808311611fad57829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061207b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190614634565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120f457600080fd5b6120fe8183613b90565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc0025304673122449dd60b9b0093874b0e2fd6fe57af1c7c2fbfee0ccf5ead586000808660405161216093929190614435565b60405180910390a35050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906145f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614654565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461232391906148fb565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123d49190614774565b60405180910390a36001905092915050565b60007382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124fa576c0c9f2c9cd04674edea4000000082600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a757600080fd5b505afa1580156124bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124df919061406f565b6124e991906148a1565b6124f39190614870565b9050612862565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126085768056bc75e2d6310000082600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b557600080fd5b505afa1580156125c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ed919061406f565b6125f791906148a1565b6126019190614870565b9050612862565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561271557670de0b6b3a764000082600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa919061406f565b61270491906148a1565b61270e9190614870565b9050612862565b73da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612827576c0c9f2c9cd04674edea4000000082600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156127d457600080fd5b505afa1580156127e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280c919061406f565b61281691906148a1565b6128209190614870565b9050612862565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990614714565b60405180910390fd5b92915050565b7382af49447d8a07e3bd95bd0d56f35241523fbab181565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128e157600080fd5b600760159054906101000a900460ff161561297d577382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f906146d4565b60405180910390fd5b612e80565b600073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129d1919061441a565b60206040518083038186803b1580156129e957600080fd5b505afa1580156129fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a21919061406f565b9050600760149054906101000a900460ff1615612aeb5773da10009cbd5d07dd0cecc66161fc93d7c9000da1915064e8d4a510008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a8e919061441a565b60206040518083038186803b158015612aa657600080fd5b505afa158015612aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ade919061406f565b612ae89190614870565b90505b612af3613c60565b80612b935750606460053073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4357600080fd5b505afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b919061406f565b612b8591906148a1565b612b8f9190614870565b8111155b15612c0b578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfd906146f4565b60405180910390fd5b612e7d565b6064600f3073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c5557600080fd5b505afa158015612c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8d919061406f565b612c9791906148a1565b612ca19190614870565b811115612d79577382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612d355750732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b612d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6b90614614565b60405180910390fd5b612e7c565b7382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612e065750732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80612e3c57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b612e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7290614754565b60405180910390fd5b5b5b50505b612e8a84846123e6565b9050612e968282613b90565b612ec33330858773ffffffffffffffffffffffffffffffffffffffff16613ccb909392919063ffffffff16565b601254431115612ee757600e54600f81905550601054601181905550436012819055505b600254600e81905550612ef8613353565b6010819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc0025304673122449dd60b9b0093874b0e2fd6fe57af1c7c2fbfee0ccf5ead58868685604051612f5f9392919061446c565b60405180910390a39392505050565b42841015612fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa890614734565b60405180910390fd5b60006001612fbd610e12565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001613045969594939291906144d9565b6040516020818303038152906040528051906020012060405160200161306c9291906143e3565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516130a2949392919061458d565b6020604051602081039080840390855afa1580156130c4573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561313857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316e906146b4565b60405180910390fd5b85600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516132569190614774565b60405180910390a350505050505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ee906145f4565b60405180910390fd5b600760159054906101000a900460ff161561331157600080fd5b6001600760156101000a81548160ff021916908315150217905550565b6004602052816000526040600020602052806000526040600020600091509150505481565b6000806002541415613368576000905061394c565b6000600760159054906101000a900460ff166137c557600760149054906101000a900460ff166134f957620f4240600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133fe57600080fd5b505afa158015613412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613436919061406f565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613483919061441a565b60206040518083038186803b15801561349b57600080fd5b505afa1580156134af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d3919061406f565b6134dd91906148a1565b6134e79190614870565b816134f2919061481a565b9050613661565b670de0b6b3a7640000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561356a57600080fd5b505afa15801561357e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a2919061406f565b73da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135ef919061441a565b60206040518083038186803b15801561360757600080fd5b505afa15801561361b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363f919061406f565b61364991906148a1565b6136539190614870565b8161365e919061481a565b90505b6305f5e100600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136ce57600080fd5b505afa1580156136e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613706919061406f565b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613753919061441a565b60206040518083038186803b15801561376b57600080fd5b505afa15801561377f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a3919061406f565b6137ad91906148a1565b6137b79190614870565b816137c2919061481a565b90505b670de0b6b3a7640000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357a9579e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561383657600080fd5b505afa15801561384a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386e919061406f565b7382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016138bb919061441a565b60206040518083038186803b1580156138d357600080fd5b505afa1580156138e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390b919061406f565b61391591906148a1565b61391f9190614870565b8161392a919061481a565b9050600254620f42408261393e91906148a1565b6139489190614870565b9150505b90565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600f54601154915091509091565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516139b891906143cc565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016139f795949392919061453a565b60405160208183030381529060405280519060200120905090565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a6191906148fb565b9250508190555080600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ad69190614774565b60405180910390a35050565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080613b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b8190614694565b60405180910390fd5b50505050565b8060026000828254613ba2919061481a565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c549190614774565b60405180910390a35050565b6000806203345061025863658823ad42613c7a91906148fb565b613c849190614870565b620c8dc1613c92919061481a565b613c9c9190614a0f565b905061cd148110158015613cb3575062019a288111155b15613cc2576001915050613cc8565b60009150505b90565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080613d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8690614674565b60405180910390fd5b5050505050565b600081359050613da581614cf8565b92915050565b600081359050613dba81614d0f565b92915050565b600081359050613dcf81614d26565b92915050565b600081519050613de481614d26565b92915050565b600081359050613df981614d3d565b92915050565b600060208284031215613e1557613e14614acd565b5b6000613e2384828501613d96565b91505092915050565b60008060408385031215613e4357613e42614acd565b5b6000613e5185828601613d96565b9250506020613e6285828601613d96565b9150509250929050565b600080600080600060a08688031215613e8857613e87614acd565b5b6000613e9688828901613d96565b9550506020613ea788828901613d96565b9450506040613eb888828901613d96565b9350506060613ec988828901613d96565b9250506080613eda88828901613d96565b9150509295509295909350565b600080600060608486031215613f0057613eff614acd565b5b6000613f0e86828701613d96565b9350506020613f1f86828701613d96565b9250506040613f3086828701613dc0565b9150509250925092565b600080600080600080600060e0888a031215613f5957613f58614acd565b5b6000613f678a828b01613d96565b9750506020613f788a828b01613d96565b9650506040613f898a828b01613dc0565b9550506060613f9a8a828b01613dc0565b9450506080613fab8a828b01613dea565b93505060a0613fbc8a828b01613dab565b92505060c0613fcd8a828b01613dab565b91505092959891949750929550565b60008060408385031215613ff357613ff2614acd565b5b600061400185828601613d96565b925050602061401285828601613dc0565b9150509250929050565b60008060006060848603121561403557614034614acd565b5b600061404386828701613d96565b935050602061405486828701613dc0565b925050604061406586828701613d96565b9150509250925092565b60006020828403121561408557614084614acd565b5b600061409384828501613dd5565b91505092915050565b600080604083850312156140b3576140b2614acd565b5b60006140c185828601613dc0565b92505060206140d285828601613d96565b9150509250929050565b6140e58161492f565b82525050565b6140f481614941565b82525050565b6141038161494d565b82525050565b61411a6141158261494d565b614a05565b82525050565b6000815461412d816149d3565b61413781866147f3565b94506001821660008114614152576001811461416357614196565b60ff19831686528186019350614196565b61416c856147d3565b60005b8381101561418e5781548189015260018201915060208101905061416f565b838801955050505b50505092915050565b6141a88161498e565b82525050565b60006141b9826147e8565b6141c381856147fe565b93506141d38185602086016149a0565b6141dc81614ad2565b840191505092915050565b60006141f46005836147fe565b91506141ff82614ae3565b602082019050919050565b6000614217600a836147fe565b915061422282614b0c565b602082019050919050565b600061423a60028361480f565b915061424582614b35565b600282019050919050565b600061425d6006836147fe565b915061426882614b5e565b602082019050919050565b60006142806009836147fe565b915061428b82614b87565b602082019050919050565b60006142a36014836147fe565b91506142ae82614bb0565b602082019050919050565b60006142c6600f836147fe565b91506142d182614bd9565b602082019050919050565b60006142e9600e836147fe565b91506142f482614c02565b602082019050919050565b600061430c6009836147fe565b915061431782614c2b565b602082019050919050565b600061432f600b836147fe565b915061433a82614c54565b602082019050919050565b6000614352600d836147fe565b915061435d82614c7d565b602082019050919050565b60006143756017836147fe565b915061438082614ca6565b602082019050919050565b6000614398600d836147fe565b91506143a382614ccf565b602082019050919050565b6143b781614977565b82525050565b6143c681614981565b82525050565b60006143d88284614120565b915081905092915050565b60006143ee8261422d565b91506143fa8285614109565b60208201915061440a8284614109565b6020820191508190509392505050565b600060208201905061442f60008301846140dc565b92915050565b600060608201905061444a60008301866140dc565b614457602083018561419f565b61446460408301846143ae565b949350505050565b600060608201905061448160008301866140dc565b61448e60208301856143ae565b61449b60408301846143ae565b949350505050565b60006020820190506144b860008301846140eb565b92915050565b60006020820190506144d360008301846140fa565b92915050565b600060c0820190506144ee60008301896140fa565b6144fb60208301886140dc565b61450860408301876140dc565b61451560608301866143ae565b61452260808301856143ae565b61452f60a08301846143ae565b979650505050505050565b600060a08201905061454f60008301886140fa565b61455c60208301876140fa565b61456960408301866140fa565b61457660608301856143ae565b61458360808301846140dc565b9695505050505050565b60006080820190506145a260008301876140fa565b6145af60208301866143bd565b6145bc60408301856140fa565b6145c960608301846140fa565b95945050505050565b600060208201905081810360008301526145ec81846141ae565b905092915050565b6000602082019050818103600083015261460d816141e7565b9050919050565b6000602082019050818103600083015261462d8161420a565b9050919050565b6000602082019050818103600083015261464d81614250565b9050919050565b6000602082019050818103600083015261466d81614273565b9050919050565b6000602082019050818103600083015261468d81614296565b9050919050565b600060208201905081810360008301526146ad816142b9565b9050919050565b600060208201905081810360008301526146cd816142dc565b9050919050565b600060208201905081810360008301526146ed816142ff565b9050919050565b6000602082019050818103600083015261470d81614322565b9050919050565b6000602082019050818103600083015261472d81614345565b9050919050565b6000602082019050818103600083015261474d81614368565b9050919050565b6000602082019050818103600083015261476d8161438b565b9050919050565b600060208201905061478960008301846143ae565b92915050565b60006040820190506147a460008301856143ae565b6147b160208301846143ae565b9392505050565b60006020820190506147cd60008301846143bd565b92915050565b60008190508160005260206000209050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061482582614977565b915061483083614977565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561486557614864614a40565b5b828201905092915050565b600061487b82614977565b915061488683614977565b92508261489657614895614a6f565b5b828204905092915050565b60006148ac82614977565b91506148b783614977565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148f0576148ef614a40565b5b828202905092915050565b600061490682614977565b915061491183614977565b92508282101561492457614923614a40565b5b828203905092915050565b600061493a82614957565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061499982614977565b9050919050565b60005b838110156149be5780820151818401526020810190506149a3565b838111156149cd576000848401525b50505050565b600060028204905060018216806149eb57607f821691505b602082108114156149ff576149fe614a9e565b5b50919050565b6000819050919050565b6000614a1a82614977565b9150614a2583614977565b925082614a3557614a34614a6f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b7f574254436f725745544800000000000000000000000000000000000000000000600082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f6d696e7465720000000000000000000000000000000000000000000000000000600082015250565b7f7a65726f20616464720000000000000000000000000000000000000000000000600082015250565b7f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000600082015250565b7f5452414e534645525f4641494c45440000000000000000000000000000000000600082015250565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b7f77657468206f6e6c790000000000000000000000000000000000000000000000600082015250565b7f535441424c45206f6e6c79000000000000000000000000000000000000000000600082015250565b7f756e6b6e6f776e5f746f6b656e00000000000000000000000000000000000000600082015250565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b7f756e6b6e6f776e20746f6b656e00000000000000000000000000000000000000600082015250565b614d018161492f565b8114614d0c57600080fd5b50565b614d188161494d565b8114614d2357600080fd5b50565b614d2f81614977565b8114614d3a57600080fd5b50565b614d4681614981565b8114614d5157600080fd5b5056fea264697066735822122095469fdfd146da5f4a820f7042685a12aa07d155040da93e6be9a93d3031c17964736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004555353440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553534400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): USSD
Arg [1] : _symbol (string): USSD
Arg [2] : _decimals (uint8): 6
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 5553534400000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 5553534400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
13812:13409:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15356:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1041:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2518:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14247:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14045:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1324;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3136:612;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16387:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14162:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1097:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5478:179;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24298:1334;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;14327:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14013:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14080:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15923:132;;;:::i;:::-;;1359:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21813:2359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1785:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15637:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1068:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17912:349;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16897:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2743:385;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20823:897;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14407:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13972:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18371:1815;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3943:1527;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16156:116;;;:::i;:::-;;1412:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26032:843;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13935:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27081:137;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;15356:183;15225:5;;;;;;;;;;;15211:19;;:10;:19;;;15203:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;15461:1:::1;15434:29;;:15;;;;;;;;;;;:29;;;15426:38;;;::::0;::::1;;15523:8;15505:15;;:26;;;;;;;;;;;;;;;;;;15356:183:::0;:::o;1041:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2518:217::-;2592:4;2642:6;2609:9;:21;2619:10;2609:21;;;;;;;;;;;;;;;:30;2631:7;2609:30;;;;;;;;;;;;;;;:39;;;;2687:7;2666:37;;2675:10;2666:37;;;2696:6;2666:37;;;;;;:::i;:::-;;;;;;;;2723:4;2716:11;;2518:217;;;;:::o;14247:73::-;14278:42;14247:73;:::o;14045:26::-;;;;;;;;;;;;;:::o;1324:::-;;;;:::o;3136:612::-;3258:4;3275:15;3293:9;:15;3303:4;3293:15;;;;;;;;;;;;;;;:27;3309:10;3293:27;;;;;;;;;;;;;;;;3275:45;;3384:17;3373:7;:28;3369:80;;3443:6;3433:7;:16;;;;:::i;:::-;3403:9;:15;3413:4;3403:15;;;;;;;;;;;;;;;:27;3419:10;3403:27;;;;;;;;;;;;;;;:46;;;;3369:80;3481:6;3462:9;:15;3472:4;3462:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;3655:6;3638:9;:13;3648:2;3638:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;3705:2;3690:26;;3699:4;3690:26;;;3709:6;3690:26;;;;;;:::i;:::-;;;;;;;;3736:4;3729:11;;;3136:612;;;;;:::o;16387:416::-;15225:5;;;;;;;;;;;15211:19;;:10;:19;;;15203:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;16574:1:::1;16549:27;;:13;;;;;;;;;;;:27;;;16541:36;;;::::0;::::1;;16634:13;16618;;:29;;;;;;;;;;;;;;;;;;16677:10;16658:16;;:29;;;;;;;;;;;;;;;;;;16712:11;16698;;:25;;;;;;;;;;;;;;;;;;16748:11;16734;;:25;;;;;;;;;;;;;;;;;;16784:11;16770;;:25;;;;;;;;;;;;;;;;;;16387:416:::0;;;;;:::o;14162:78::-;14198:42;14162:78;:::o;1097:31::-;;;:::o;5478:179::-;5535:7;5579:16;5562:13;:33;:87;;5625:24;:22;:24::i;:::-;5562:87;;;5598:24;5562:87;5555:94;;5478:179;:::o;24298:1334::-;24380:14;24396:17;24426:16;14438:42;24461:14;;:6;:14;;;24457:819;;;24585:4;14438:42;24546:21;;;24576:4;24546:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24517:11;;;;;;;;;;;24503:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;:86;;;;:::i;:::-;24492:97;;24457:819;;;14358:42;24611:14;;:6;:14;;;24607:669;;;24735:3;14358:42;24696:21;;;24726:4;24696:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24667:11;;;;;;;;;;;24653:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;:85;;;;:::i;:::-;24642:96;;24607:669;;;14113:42;24760:16;;:6;:16;;;24756:520;;;24890:3;14113:42;24849:23;;;24881:4;24849:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24818:13;;;;;;;;;;;24804:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:83;;;;:::i;:::-;:89;;;;:::i;:::-;24793:100;;24756:520;;;14198:42;24915:19;;:6;:19;;;24911:365;;;25054:4;14198:42;25010:26;;;25045:4;25010:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24976:16;;;;;;;;;;;24962:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:89;;;;:::i;:::-;:96;;;;:::i;:::-;24951:107;;24911:365;;;14278:42;25080:14;;:6;:14;;;25076:200;;;25204:4;14278:42;25165:21;;;25195:4;25165:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25136:11;;;;;;;;;;;25122:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;:86;;;;:::i;:::-;25111:97;;25076:200;;;25241:23;;;;;;;;;;:::i;:::-;;;;;;;;25076:200;24911:365;24756:520;24607:669;24457:819;25306:8;25292:10;:22;25288:337;;25461:8;25448:10;25413:6;25407:23;;;25439:4;25407:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;:62;;;;:::i;:::-;25471:10;25399:83;;;;;;;25288:337;25570:6;25564:23;;;25596:4;25564:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25604:8;25556:57;;;;;24298:1334;;;;;;:::o;14327:73::-;14358:42;14327:73;:::o;14013:25::-;;;;;;;;;;;;;:::o;14080:75::-;14113:42;14080:75;:::o;15923:132::-;15225:5;;;;;;;;;;;15211:19;;:10;:19;;;15203:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;15983:14:::1;;;;;;;;;;;15982:15;:33;;;;;16002:13;;;;;;;;;;;16001:14;15982:33;15974:42;;;::::0;::::1;;16043:4;16027:13;;:20;;;;;;;;;;;;;;;;;;15923:132::o:0;1359:44::-;;;;;;;;;;;;;;;;;:::o;21813:2359::-;21923:1;21909:16;;:2;:16;;;;21901:25;;;;;;21939:10;21952:18;:16;:18::i;:::-;21939:31;;21992:18;21987:2;:23;21983:243;;;22042:17;;;;;;;;;;;22027:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22196:18;:16;:18::i;:::-;22191:23;;21983:243;22238:14;22255:4;22238:21;;22279:18;22274:2;:23;22270:195;;;22449:4;22428:18;22423:2;:23;;;;:::i;:::-;:30;;;;:::i;:::-;22414:39;;22270:195;22516:23;22568:4;22559:6;22552:4;22542:7;:14;;;;:::i;:::-;:23;;;;:::i;:::-;:30;;;;:::i;:::-;22516:56;;22585:26;22591:10;22603:7;22585:5;:26::i;:::-;22692:2;22673:48;;22680:10;22673:48;;;22696:7;22705:15;22673:48;;;;;;;:::i;:::-;;;;;;;;22739:13;;;;;;;;;;;22734:552;;22770:14;22786:11;22801:40;14113:42;22825:15;22801;:40::i;:::-;22769:72;;;;22869:1;22860:6;:10;22856:147;;;22891:38;22918:2;22922:6;14113:42;22891:26;;;;:38;;;;;:::i;:::-;22984:3;22966:15;:21;;;;:::i;:::-;22948:39;;22856:147;22754:260;;22734:552;;;23036:14;23052:11;23067:43;14198:42;23094:15;23067;:43::i;:::-;23035:75;;;;23138:1;23129:6;:10;23125:150;;;23160:41;23190:2;23194:6;14198:42;23160:29;;;;:41;;;;;:::i;:::-;23256:3;23238:15;:21;;;;:::i;:::-;23220:39;;23125:150;23020:266;;22734:552;23320:1;23302:15;:19;23298:281;;;23339:14;23355:11;23370:38;14278:42;23392:15;23370;:38::i;:::-;23338:70;;;;23436:1;23427:6;:10;23423:145;;;23458:36;23483:2;23487:6;14278:42;23458:24;;;;:36;;;;;:::i;:::-;23549:3;23531:15;:21;;;;:::i;:::-;23513:39;;23423:145;23323:256;;23298:281;23613:1;23595:15;:19;23591:281;;;23632:14;23648:11;23663:38;14358:42;23685:15;23663;:38::i;:::-;23631:70;;;;23729:1;23720:6;:10;23716:145;;;23751:36;23776:2;23780:6;14358:42;23751:24;;;;:36;;;;;:::i;:::-;23842:3;23824:15;:21;;;;:::i;:::-;23806:39;;23716:145;23616:256;;23591:281;23906:1;23888:15;:19;23884:281;;;23925:14;23941:11;23956:38;14438:42;23978:15;23956;:38::i;:::-;23924:70;;;;24022:1;24013:6;:10;24009:145;;;24044:36;24069:2;24073:6;14438:42;24044:24;;;;:36;;;;;:::i;:::-;24135:3;24117:15;:21;;;;:::i;:::-;24099:39;;24009:145;23909:256;;23884:281;21890:2282;;;21813:2359;;:::o;1785:41::-;;;;;;;;;;;;;;;;;:::o;15637:193::-;15225:5;;;;;;;;;;;15211:19;;:10;:19;;;15203:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;15748:1:::1;15719:31;;:17;;;;;;;;;;;:31;;;15711:40;;;::::0;::::1;;15812:10;15792:17;;:30;;;;;;;;;;;;;;;;;;15637:193:::0;:::o;1068:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17912:349::-;18045:15;;;;;;;;;;;18031:29;;:10;:29;;;:64;;;;18078:17;;;;;;;;;;;18064:31;;:10;:31;;;18031:64;18023:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18139:1;18125:16;;:2;:16;;;;18117:25;;;;;;18155:27;18161:2;18165:16;18155:5;:27::i;:::-;18217:2;18200:53;;18205:10;18200:53;;;18229:1;18233;18236:16;18200:53;;;;;;;;:::i;:::-;;;;;;;;17912:349;;:::o;16897:171::-;15225:5;;;;;;;;;;;15211:19;;:10;:19;;;15203:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;16979:42:::1;16970:51;;:5;;;;;;;;;;;:51;;;;16962:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17054:6;17046:5;;:14;;;;;;;;;;;;;;;;;;16897:171:::0;:::o;2743:385::-;2813:4;2855:6;2830:9;:21;2840:10;2830:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;3029:6;3012:9;:13;3022:2;3012:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;3085:2;3064:32;;3073:10;3064:32;;;3089:6;3064:32;;;;;;:::i;:::-;;;;;;;;3116:4;3109:11;;2743:385;;;;:::o;20823:897::-;20900:7;14438:42;21055:14;;:6;:14;;;21051:628;;;21146:4;21136:7;21107:11;;;;;;;;;;;21093:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;:::i;:::-;:57;;;;:::i;:::-;21086:64;;;;21051:628;14358:42;21202:14;;:6;:14;;;21198:481;;;21293:4;21283:7;21254:11;;;;;;;;;;;21240:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;:::i;:::-;:57;;;;:::i;:::-;21233:64;;;;21198:481;14113:42;21365:16;;:6;:16;;;21361:318;;;21460:4;21450:7;21419:13;;;;;;;;;;;21405:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;;:::i;:::-;:59;;;;:::i;:::-;21398:66;;;;21361:318;14198:42;21532:19;;:6;:19;;;21528:151;;;21633:4;21623:7;21589:16;;;;;;;;;;;21575:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;;;:::i;:::-;:62;;;;:::i;:::-;21568:69;;;;21528:151;21689:23;;;;;;;;;;:::i;:::-;;;;;;;;20823:897;;;;;:::o;14407:73::-;14438:42;14407:73;:::o;13972:32::-;;;;;;;;;;;;;:::o;18371:1815::-;18491:24;18550:1;18536:16;;:2;:16;;;;18528:25;;;;;;18570:14;;;;;;;;;;;18566:909;;;14438:42;18609:13;;:5;:13;;;18601:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;18566:909;;;18669:14;14113:42;18669:23;;18707:15;18731:6;18725:23;;;18757:4;18725:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18707:56;;18782:13;;;;;;;;;;;18778:186;;;14198:42;18816:18;;18904:4;18869:6;18863:23;;;18895:4;18863:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;;:::i;:::-;18853:55;;18778:186;18984:11;:9;:11::i;:::-;:56;;;;19036:3;19032:1;19011:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;;;;:::i;:::-;:28;;;;:::i;:::-;18999:7;:41;;18984:56;18980:484;;;19131:6;19122:15;;:5;:15;;;19114:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;18980:484;;;19216:3;19211:2;19190:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;:::i;:::-;:29;;;;:::i;:::-;19179:7;:41;19175:289;;;14438:42;19287:13;;:5;:13;;;:30;;;;14358:42;19304:13;;:5;:13;;;19287:30;19279:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;19175:289;;;14438:42;19381:13;;:5;:13;;;:30;;;;14358:42;19398:13;;:5;:13;;;19381:30;:49;;;;19424:6;19415:15;;:5;:15;;;19381:49;19373:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19175:289;18980:484;18654:821;;18566:909;19506:33;19520:5;19527:11;19506:13;:33::i;:::-;19487:52;;19550:27;19556:2;19560:16;19550:5;:27::i;:::-;19598:119;19642:10;19675:4;19695:11;19604:5;19598:29;;;;:119;;;;;;:::i;:::-;19802:11;;19787:12;:26;19783:233;;;19843:10;;19830;:23;;;;19943:20;;19920;:43;;;;19992:12;19978:11;:26;;;;19783:233;20039:11;;20026:10;:24;;;;20084:18;:16;:18::i;:::-;20061:20;:41;;;;20137:2;20120:58;;20125:10;20120:58;;;20141:5;20148:11;20161:16;20120:58;;;;;;;;:::i;:::-;;;;;;;;18371:1815;;;;;:::o;3943:1527::-;4171:15;4159:8;:27;;4151:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4384:24;4411:827;4551:18;:16;:18::i;:::-;4681:167;4883:5;4923:7;4965:5;5005:6;:13;5012:5;5005:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;5055:8;4636:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4596:525;;;;;;4471:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4439:724;;;;;;5182:1;5202;5222;4411:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4384:854;;5291:1;5263:30;;:16;:30;;;;:59;;;;;5317:5;5297:25;;:16;:25;;;5263:59;5255:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;5397:5;5358:9;:27;5368:16;5358:27;;;;;;;;;;;;;;;:36;5386:7;5358:36;;;;;;;;;;;;;;;:44;;;;4359:1055;5447:7;5431:31;;5440:5;5431:31;;;5456:5;5431:31;;;;;;:::i;:::-;;;;;;;;3943:1527;;;;;;;:::o;16156:116::-;15225:5;;;;;;;;;;;15211:19;;:10;:19;;;15203:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;16217:14:::1;;;;;;;;;;;16216:15;16208:24;;;::::0;::::1;;16260:4;16243:14;;:21;;;;;;;;;;;;;;;;;;16156:116::o:0;1412:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26032:843::-;26081:7;26120:1;26105:11;;:16;26101:61;;;26147:1;26140:8;;;;26101:61;26174:22;26218:14;;;;;;;;;;;26213:484;;26254:13;;;;;;;;;;;26249:317;;26392:3;26361:13;;;;;;;;;;;26347:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14113;26306:23;;;26338:4;26306:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:83;;;;:::i;:::-;:89;;;;:::i;:::-;26288:107;;;;;:::i;:::-;;;26249:317;;;26546:4;26512:16;;;;;;;;;;;26498:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14198:42;26454:26;;;26489:4;26454:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:89;;;;:::i;:::-;:96;;;;:::i;:::-;26436:114;;;;;:::i;:::-;;;26249:317;26682:3;26653:11;;;;;;;;;;;26639:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14358:42;26600:21;;;26630:4;26600:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;:85;;;;:::i;:::-;26582:103;;;;;:::i;:::-;;;26213:484;26809:4;26780:11;;;;;;;;;;;26766:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14438:42;26727:21;;;26757:4;26727:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;:86;;;;:::i;:::-;26709:104;;;;;:::i;:::-;;;26856:11;;26850:3;26833:14;:20;;;;:::i;:::-;:34;;;;:::i;:::-;26826:41;;;26032:843;;:::o;13935:30::-;;;;;;;;;;;;;:::o;27081:137::-;27140:7;27149;27177:10;;27189:20;;27169:41;;;;27081:137;;:::o;5665:457::-;5730:7;5831:95;5965:4;5949:22;;;;;;:::i;:::-;;;;;;;;5994:14;6031:13;6075:4;5798:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5770:344;;;;;;5750:364;;5665:457;:::o;6665:338::-;6757:6;6738:9;:15;6748:4;6738:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6926:6;6911:11;;:21;;;;;;;;;;;6984:1;6961:34;;6970:4;6961:34;;;6988:6;6961:34;;;;;;:::i;:::-;;;;;;;;6665:338;;:::o;10075:1637::-;10192:12;10367:4;10361:11;10512:66;10493:17;10486:93;10635:42;10631:2;10627:51;10623:1;10604:17;10600:25;10593:86;10766:6;10761:2;10742:17;10738:26;10731:42;11628:2;11625:1;11621:2;11602:17;11599:1;11592:5;11585;11580:51;11144:16;11137:24;11131:2;11113:16;11110:24;11106:1;11102;11096:8;11093:15;11089:46;11086:76;10883:763;10872:774;;10270:1387;11677:7;11669:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;10181:1531;10075:1637;;;:::o;6322:335::-;6408:6;6393:11;;:21;;;;;;;:::i;:::-;;;;;;;;6582:6;6565:9;:13;6575:2;6565:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;6638:2;6617:32;;6634:1;6617:32;;;6642:6;6617:32;;;;;;:::i;:::-;;;;;;;;6322:335;;:::o;20275:444::-;20319:4;20529:13;20595:6;20588:3;20574:10;20556:15;:28;;;;:::i;:::-;20555:36;;;;:::i;:::-;20546:6;:45;;;;:::i;:::-;20545:56;;;;:::i;:::-;20529:72;;20625:5;20616;:14;;:33;;;;;20643:6;20634:5;:15;;20616:33;20612:77;;;20673:4;20666:11;;;;;20612:77;20706:5;20699:12;;;20275:444;;:::o;8253:1814::-;8397:12;8572:4;8566:11;8717:66;8698:17;8691:93;8842:42;8836:4;8832:53;8828:1;8809:17;8805:25;8798:88;8983:42;8979:2;8975:51;8970:2;8951:17;8947:26;8940:87;9114:6;9109:2;9090:17;9086:26;9079:42;9978:2;9975:1;9970:3;9951:17;9948:1;9941:5;9934;9929:52;9492:16;9485:24;9479:2;9461:16;9458:24;9454:1;9450;9444:8;9441:15;9437:46;9434:76;9231:765;9220:776;;8475:1532;10027:7;10019:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;8386:1681;8253:1814;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:139::-;343:5;381:6;368:20;359:29;;397:33;424:5;397:33;:::i;:::-;349:87;;;;:::o;442:143::-;499:5;530:6;524:13;515:22;;546:33;573:5;546:33;:::i;:::-;505:80;;;;:::o;591:135::-;635:5;673:6;660:20;651:29;;689:31;714:5;689:31;:::i;:::-;641:85;;;;:::o;732:329::-;791:6;840:2;828:9;819:7;815:23;811:32;808:2;;;846:79;;:::i;:::-;808:2;966:1;991:53;1036:7;1027:6;1016:9;1012:22;991:53;:::i;:::-;981:63;;937:117;798:263;;;;:::o;1067:474::-;1135:6;1143;1192:2;1180:9;1171:7;1167:23;1163:32;1160:2;;;1198:79;;:::i;:::-;1160:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1150:391;;;;;:::o;1547:911::-;1642:6;1650;1658;1666;1674;1723:3;1711:9;1702:7;1698:23;1694:33;1691:2;;;1730:79;;:::i;:::-;1691:2;1850:1;1875:53;1920:7;1911:6;1900:9;1896:22;1875:53;:::i;:::-;1865:63;;1821:117;1977:2;2003:53;2048:7;2039:6;2028:9;2024:22;2003:53;:::i;:::-;1993:63;;1948:118;2105:2;2131:53;2176:7;2167:6;2156:9;2152:22;2131:53;:::i;:::-;2121:63;;2076:118;2233:2;2259:53;2304:7;2295:6;2284:9;2280:22;2259:53;:::i;:::-;2249:63;;2204:118;2361:3;2388:53;2433:7;2424:6;2413:9;2409:22;2388:53;:::i;:::-;2378:63;;2332:119;1681:777;;;;;;;;:::o;2464:619::-;2541:6;2549;2557;2606:2;2594:9;2585:7;2581:23;2577:32;2574:2;;;2612:79;;:::i;:::-;2574:2;2732:1;2757:53;2802:7;2793:6;2782:9;2778:22;2757:53;:::i;:::-;2747:63;;2703:117;2859:2;2885:53;2930:7;2921:6;2910:9;2906:22;2885:53;:::i;:::-;2875:63;;2830:118;2987:2;3013:53;3058:7;3049:6;3038:9;3034:22;3013:53;:::i;:::-;3003:63;;2958:118;2564:519;;;;;:::o;3089:1199::-;3200:6;3208;3216;3224;3232;3240;3248;3297:3;3285:9;3276:7;3272:23;3268:33;3265:2;;;3304:79;;:::i;:::-;3265:2;3424:1;3449:53;3494:7;3485:6;3474:9;3470:22;3449:53;:::i;:::-;3439:63;;3395:117;3551:2;3577:53;3622:7;3613:6;3602:9;3598:22;3577:53;:::i;:::-;3567:63;;3522:118;3679:2;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3650:118;3807:2;3833:53;3878:7;3869:6;3858:9;3854:22;3833:53;:::i;:::-;3823:63;;3778:118;3935:3;3962:51;4005:7;3996:6;3985:9;3981:22;3962:51;:::i;:::-;3952:61;;3906:117;4062:3;4089:53;4134:7;4125:6;4114:9;4110:22;4089:53;:::i;:::-;4079:63;;4033:119;4191:3;4218:53;4263:7;4254:6;4243:9;4239:22;4218:53;:::i;:::-;4208:63;;4162:119;3255:1033;;;;;;;;;;:::o;4294:474::-;4362:6;4370;4419:2;4407:9;4398:7;4394:23;4390:32;4387:2;;;4425:79;;:::i;:::-;4387:2;4545:1;4570:53;4615:7;4606:6;4595:9;4591:22;4570:53;:::i;:::-;4560:63;;4516:117;4672:2;4698:53;4743:7;4734:6;4723:9;4719:22;4698:53;:::i;:::-;4688:63;;4643:118;4377:391;;;;;:::o;4774:619::-;4851:6;4859;4867;4916:2;4904:9;4895:7;4891:23;4887:32;4884:2;;;4922:79;;:::i;:::-;4884:2;5042:1;5067:53;5112:7;5103:6;5092:9;5088:22;5067:53;:::i;:::-;5057:63;;5013:117;5169:2;5195:53;5240:7;5231:6;5220:9;5216:22;5195:53;:::i;:::-;5185:63;;5140:118;5297:2;5323:53;5368:7;5359:6;5348:9;5344:22;5323:53;:::i;:::-;5313:63;;5268:118;4874:519;;;;;:::o;5399:351::-;5469:6;5518:2;5506:9;5497:7;5493:23;5489:32;5486:2;;;5524:79;;:::i;:::-;5486:2;5644:1;5669:64;5725:7;5716:6;5705:9;5701:22;5669:64;:::i;:::-;5659:74;;5615:128;5476:274;;;;:::o;5756:474::-;5824:6;5832;5881:2;5869:9;5860:7;5856:23;5852:32;5849:2;;;5887:79;;:::i;:::-;5849:2;6007:1;6032:53;6077:7;6068:6;6057:9;6053:22;6032:53;:::i;:::-;6022:63;;5978:117;6134:2;6160:53;6205:7;6196:6;6185:9;6181:22;6160:53;:::i;:::-;6150:63;;6105:118;5839:391;;;;;:::o;6236:118::-;6323:24;6341:5;6323:24;:::i;:::-;6318:3;6311:37;6301:53;;:::o;6360:109::-;6441:21;6456:5;6441:21;:::i;:::-;6436:3;6429:34;6419:50;;:::o;6475:118::-;6562:24;6580:5;6562:24;:::i;:::-;6557:3;6550:37;6540:53;;:::o;6599:157::-;6704:45;6724:24;6742:5;6724:24;:::i;:::-;6704:45;:::i;:::-;6699:3;6692:58;6682:74;;:::o;6784:849::-;6889:3;6926:5;6920:12;6955:36;6981:9;6955:36;:::i;:::-;7007:88;7088:6;7083:3;7007:88;:::i;:::-;7000:95;;7126:1;7115:9;7111:17;7142:1;7137:137;;;;7288:1;7283:344;;;;7104:523;;7137:137;7221:4;7217:9;7206;7202:25;7197:3;7190:38;7257:6;7252:3;7248:16;7241:23;;7137:137;;7283:344;7350:41;7385:5;7350:41;:::i;:::-;7413:1;7427:154;7441:6;7438:1;7435:13;7427:154;;;7515:7;7509:14;7505:1;7500:3;7496:11;7489:35;7565:1;7556:7;7552:15;7541:26;;7463:4;7460:1;7456:12;7451:17;;7427:154;;;7610:6;7605:3;7601:16;7594:23;;7290:337;;7104:523;;6893:740;;;;;;:::o;7639:147::-;7734:45;7773:5;7734:45;:::i;:::-;7729:3;7722:58;7712:74;;:::o;7792:364::-;7880:3;7908:39;7941:5;7908:39;:::i;:::-;7963:71;8027:6;8022:3;7963:71;:::i;:::-;7956:78;;8043:52;8088:6;8083:3;8076:4;8069:5;8065:16;8043:52;:::i;:::-;8120:29;8142:6;8120:29;:::i;:::-;8115:3;8111:39;8104:46;;7884:272;;;;;:::o;8162:365::-;8304:3;8325:66;8389:1;8384:3;8325:66;:::i;:::-;8318:73;;8400:93;8489:3;8400:93;:::i;:::-;8518:2;8513:3;8509:12;8502:19;;8308:219;;;:::o;8533:366::-;8675:3;8696:67;8760:2;8755:3;8696:67;:::i;:::-;8689:74;;8772:93;8861:3;8772:93;:::i;:::-;8890:2;8885:3;8881:12;8874:19;;8679:220;;;:::o;8905:400::-;9065:3;9086:84;9168:1;9163:3;9086:84;:::i;:::-;9079:91;;9179:93;9268:3;9179:93;:::i;:::-;9297:1;9292:3;9288:11;9281:18;;9069:236;;;:::o;9311:365::-;9453:3;9474:66;9538:1;9533:3;9474:66;:::i;:::-;9467:73;;9549:93;9638:3;9549:93;:::i;:::-;9667:2;9662:3;9658:12;9651:19;;9457:219;;;:::o;9682:365::-;9824:3;9845:66;9909:1;9904:3;9845:66;:::i;:::-;9838:73;;9920:93;10009:3;9920:93;:::i;:::-;10038:2;10033:3;10029:12;10022:19;;9828:219;;;:::o;10053:366::-;10195:3;10216:67;10280:2;10275:3;10216:67;:::i;:::-;10209:74;;10292:93;10381:3;10292:93;:::i;:::-;10410:2;10405:3;10401:12;10394:19;;10199:220;;;:::o;10425:366::-;10567:3;10588:67;10652:2;10647:3;10588:67;:::i;:::-;10581:74;;10664:93;10753:3;10664:93;:::i;:::-;10782:2;10777:3;10773:12;10766:19;;10571:220;;;:::o;10797:366::-;10939:3;10960:67;11024:2;11019:3;10960:67;:::i;:::-;10953:74;;11036:93;11125:3;11036:93;:::i;:::-;11154:2;11149:3;11145:12;11138:19;;10943:220;;;:::o;11169:365::-;11311:3;11332:66;11396:1;11391:3;11332:66;:::i;:::-;11325:73;;11407:93;11496:3;11407:93;:::i;:::-;11525:2;11520:3;11516:12;11509:19;;11315:219;;;:::o;11540:366::-;11682:3;11703:67;11767:2;11762:3;11703:67;:::i;:::-;11696:74;;11779:93;11868:3;11779:93;:::i;:::-;11897:2;11892:3;11888:12;11881:19;;11686:220;;;:::o;11912:366::-;12054:3;12075:67;12139:2;12134:3;12075:67;:::i;:::-;12068:74;;12151:93;12240:3;12151:93;:::i;:::-;12269:2;12264:3;12260:12;12253:19;;12058:220;;;:::o;12284:366::-;12426:3;12447:67;12511:2;12506:3;12447:67;:::i;:::-;12440:74;;12523:93;12612:3;12523:93;:::i;:::-;12641:2;12636:3;12632:12;12625:19;;12430:220;;;:::o;12656:366::-;12798:3;12819:67;12883:2;12878:3;12819:67;:::i;:::-;12812:74;;12895:93;12984:3;12895:93;:::i;:::-;13013:2;13008:3;13004:12;12997:19;;12802:220;;;:::o;13028:118::-;13115:24;13133:5;13115:24;:::i;:::-;13110:3;13103:37;13093:53;;:::o;13152:112::-;13235:22;13251:5;13235:22;:::i;:::-;13230:3;13223:35;13213:51;;:::o;13270:273::-;13401:3;13423:94;13513:3;13504:6;13423:94;:::i;:::-;13416:101;;13534:3;13527:10;;13405:138;;;;:::o;13549:663::-;13790:3;13812:148;13956:3;13812:148;:::i;:::-;13805:155;;13970:75;14041:3;14032:6;13970:75;:::i;:::-;14070:2;14065:3;14061:12;14054:19;;14083:75;14154:3;14145:6;14083:75;:::i;:::-;14183:2;14178:3;14174:12;14167:19;;14203:3;14196:10;;13794:418;;;;;:::o;14218:222::-;14311:4;14349:2;14338:9;14334:18;14326:26;;14362:71;14430:1;14419:9;14415:17;14406:6;14362:71;:::i;:::-;14316:124;;;;:::o;14446:458::-;14603:4;14641:2;14630:9;14626:18;14618:26;;14654:71;14722:1;14711:9;14707:17;14698:6;14654:71;:::i;:::-;14735:80;14811:2;14800:9;14796:18;14787:6;14735:80;:::i;:::-;14825:72;14893:2;14882:9;14878:18;14869:6;14825:72;:::i;:::-;14608:296;;;;;;:::o;14910:442::-;15059:4;15097:2;15086:9;15082:18;15074:26;;15110:71;15178:1;15167:9;15163:17;15154:6;15110:71;:::i;:::-;15191:72;15259:2;15248:9;15244:18;15235:6;15191:72;:::i;:::-;15273;15341:2;15330:9;15326:18;15317:6;15273:72;:::i;:::-;15064:288;;;;;;:::o;15358:210::-;15445:4;15483:2;15472:9;15468:18;15460:26;;15496:65;15558:1;15547:9;15543:17;15534:6;15496:65;:::i;:::-;15450:118;;;;:::o;15574:222::-;15667:4;15705:2;15694:9;15690:18;15682:26;;15718:71;15786:1;15775:9;15771:17;15762:6;15718:71;:::i;:::-;15672:124;;;;:::o;15802:775::-;16035:4;16073:3;16062:9;16058:19;16050:27;;16087:71;16155:1;16144:9;16140:17;16131:6;16087:71;:::i;:::-;16168:72;16236:2;16225:9;16221:18;16212:6;16168:72;:::i;:::-;16250;16318:2;16307:9;16303:18;16294:6;16250:72;:::i;:::-;16332;16400:2;16389:9;16385:18;16376:6;16332:72;:::i;:::-;16414:73;16482:3;16471:9;16467:19;16458:6;16414:73;:::i;:::-;16497;16565:3;16554:9;16550:19;16541:6;16497:73;:::i;:::-;16040:537;;;;;;;;;:::o;16583:664::-;16788:4;16826:3;16815:9;16811:19;16803:27;;16840:71;16908:1;16897:9;16893:17;16884:6;16840:71;:::i;:::-;16921:72;16989:2;16978:9;16974:18;16965:6;16921:72;:::i;:::-;17003;17071:2;17060:9;17056:18;17047:6;17003:72;:::i;:::-;17085;17153:2;17142:9;17138:18;17129:6;17085:72;:::i;:::-;17167:73;17235:3;17224:9;17220:19;17211:6;17167:73;:::i;:::-;16793:454;;;;;;;;:::o;17253:545::-;17426:4;17464:3;17453:9;17449:19;17441:27;;17478:71;17546:1;17535:9;17531:17;17522:6;17478:71;:::i;:::-;17559:68;17623:2;17612:9;17608:18;17599:6;17559:68;:::i;:::-;17637:72;17705:2;17694:9;17690:18;17681:6;17637:72;:::i;:::-;17719;17787:2;17776:9;17772:18;17763:6;17719:72;:::i;:::-;17431:367;;;;;;;:::o;17804:313::-;17917:4;17955:2;17944:9;17940:18;17932:26;;18004:9;17998:4;17994:20;17990:1;17979:9;17975:17;17968:47;18032:78;18105:4;18096:6;18032:78;:::i;:::-;18024:86;;17922:195;;;;:::o;18123:419::-;18289:4;18327:2;18316:9;18312:18;18304:26;;18376:9;18370:4;18366:20;18362:1;18351:9;18347:17;18340:47;18404:131;18530:4;18404:131;:::i;:::-;18396:139;;18294:248;;;:::o;18548:419::-;18714:4;18752:2;18741:9;18737:18;18729:26;;18801:9;18795:4;18791:20;18787:1;18776:9;18772:17;18765:47;18829:131;18955:4;18829:131;:::i;:::-;18821:139;;18719:248;;;:::o;18973:419::-;19139:4;19177:2;19166:9;19162:18;19154:26;;19226:9;19220:4;19216:20;19212:1;19201:9;19197:17;19190:47;19254:131;19380:4;19254:131;:::i;:::-;19246:139;;19144:248;;;:::o;19398:419::-;19564:4;19602:2;19591:9;19587:18;19579:26;;19651:9;19645:4;19641:20;19637:1;19626:9;19622:17;19615:47;19679:131;19805:4;19679:131;:::i;:::-;19671:139;;19569:248;;;:::o;19823:419::-;19989:4;20027:2;20016:9;20012:18;20004:26;;20076:9;20070:4;20066:20;20062:1;20051:9;20047:17;20040:47;20104:131;20230:4;20104:131;:::i;:::-;20096:139;;19994:248;;;:::o;20248:419::-;20414:4;20452:2;20441:9;20437:18;20429:26;;20501:9;20495:4;20491:20;20487:1;20476:9;20472:17;20465:47;20529:131;20655:4;20529:131;:::i;:::-;20521:139;;20419:248;;;:::o;20673:419::-;20839:4;20877:2;20866:9;20862:18;20854:26;;20926:9;20920:4;20916:20;20912:1;20901:9;20897:17;20890:47;20954:131;21080:4;20954:131;:::i;:::-;20946:139;;20844:248;;;:::o;21098:419::-;21264:4;21302:2;21291:9;21287:18;21279:26;;21351:9;21345:4;21341:20;21337:1;21326:9;21322:17;21315:47;21379:131;21505:4;21379:131;:::i;:::-;21371:139;;21269:248;;;:::o;21523:419::-;21689:4;21727:2;21716:9;21712:18;21704:26;;21776:9;21770:4;21766:20;21762:1;21751:9;21747:17;21740:47;21804:131;21930:4;21804:131;:::i;:::-;21796:139;;21694:248;;;:::o;21948:419::-;22114:4;22152:2;22141:9;22137:18;22129:26;;22201:9;22195:4;22191:20;22187:1;22176:9;22172:17;22165:47;22229:131;22355:4;22229:131;:::i;:::-;22221:139;;22119:248;;;:::o;22373:419::-;22539:4;22577:2;22566:9;22562:18;22554:26;;22626:9;22620:4;22616:20;22612:1;22601:9;22597:17;22590:47;22654:131;22780:4;22654:131;:::i;:::-;22646:139;;22544:248;;;:::o;22798:419::-;22964:4;23002:2;22991:9;22987:18;22979:26;;23051:9;23045:4;23041:20;23037:1;23026:9;23022:17;23015:47;23079:131;23205:4;23079:131;:::i;:::-;23071:139;;22969:248;;;:::o;23223:222::-;23316:4;23354:2;23343:9;23339:18;23331:26;;23367:71;23435:1;23424:9;23420:17;23411:6;23367:71;:::i;:::-;23321:124;;;;:::o;23451:332::-;23572:4;23610:2;23599:9;23595:18;23587:26;;23623:71;23691:1;23680:9;23676:17;23667:6;23623:71;:::i;:::-;23704:72;23772:2;23761:9;23757:18;23748:6;23704:72;:::i;:::-;23577:206;;;;;:::o;23789:214::-;23878:4;23916:2;23905:9;23901:18;23893:26;;23929:67;23993:1;23982:9;23978:17;23969:6;23929:67;:::i;:::-;23883:120;;;;:::o;24090:144::-;24142:4;24165:3;24157:11;;24188:3;24185:1;24178:14;24222:4;24219:1;24209:18;24201:26;;24147:87;;;:::o;24240:99::-;24292:6;24326:5;24320:12;24310:22;;24299:40;;;:::o;24345:147::-;24446:11;24483:3;24468:18;;24458:34;;;;:::o;24498:169::-;24582:11;24616:6;24611:3;24604:19;24656:4;24651:3;24647:14;24632:29;;24594:73;;;;:::o;24673:148::-;24775:11;24812:3;24797:18;;24787:34;;;;:::o;24827:305::-;24867:3;24886:20;24904:1;24886:20;:::i;:::-;24881:25;;24920:20;24938:1;24920:20;:::i;:::-;24915:25;;25074:1;25006:66;25002:74;24999:1;24996:81;24993:2;;;25080:18;;:::i;:::-;24993:2;25124:1;25121;25117:9;25110:16;;24871:261;;;;:::o;25138:185::-;25178:1;25195:20;25213:1;25195:20;:::i;:::-;25190:25;;25229:20;25247:1;25229:20;:::i;:::-;25224:25;;25268:1;25258:2;;25273:18;;:::i;:::-;25258:2;25315:1;25312;25308:9;25303:14;;25180:143;;;;:::o;25329:348::-;25369:7;25392:20;25410:1;25392:20;:::i;:::-;25387:25;;25426:20;25444:1;25426:20;:::i;:::-;25421:25;;25614:1;25546:66;25542:74;25539:1;25536:81;25531:1;25524:9;25517:17;25513:105;25510:2;;;25621:18;;:::i;:::-;25510:2;25669:1;25666;25662:9;25651:20;;25377:300;;;;:::o;25683:191::-;25723:4;25743:20;25761:1;25743:20;:::i;:::-;25738:25;;25777:20;25795:1;25777:20;:::i;:::-;25772:25;;25816:1;25813;25810:8;25807:2;;;25821:18;;:::i;:::-;25807:2;25866:1;25863;25859:9;25851:17;;25728:146;;;;:::o;25880:96::-;25917:7;25946:24;25964:5;25946:24;:::i;:::-;25935:35;;25925:51;;;:::o;25982:90::-;26016:7;26059:5;26052:13;26045:21;26034:32;;26024:48;;;:::o;26078:77::-;26115:7;26144:5;26133:16;;26123:32;;;:::o;26161:126::-;26198:7;26238:42;26231:5;26227:54;26216:65;;26206:81;;;:::o;26293:77::-;26330:7;26359:5;26348:16;;26338:32;;;:::o;26376:86::-;26411:7;26451:4;26444:5;26440:16;26429:27;;26419:43;;;:::o;26468:121::-;26526:9;26559:24;26577:5;26559:24;:::i;:::-;26546:37;;26536:53;;;:::o;26595:307::-;26663:1;26673:113;26687:6;26684:1;26681:13;26673:113;;;26772:1;26767:3;26763:11;26757:18;26753:1;26748:3;26744:11;26737:39;26709:2;26706:1;26702:10;26697:15;;26673:113;;;26804:6;26801:1;26798:13;26795:2;;;26884:1;26875:6;26870:3;26866:16;26859:27;26795:2;26644:258;;;;:::o;26908:320::-;26952:6;26989:1;26983:4;26979:12;26969:22;;27036:1;27030:4;27026:12;27057:18;27047:2;;27113:4;27105:6;27101:17;27091:27;;27047:2;27175;27167:6;27164:14;27144:18;27141:38;27138:2;;;27194:18;;:::i;:::-;27138:2;26959:269;;;;:::o;27234:79::-;27273:7;27302:5;27291:16;;27281:32;;;:::o;27319:176::-;27351:1;27368:20;27386:1;27368:20;:::i;:::-;27363:25;;27402:20;27420:1;27402:20;:::i;:::-;27397:25;;27441:1;27431:2;;27446:18;;:::i;:::-;27431:2;27487:1;27484;27480:9;27475:14;;27353:142;;;;:::o;27501:180::-;27549:77;27546:1;27539:88;27646:4;27643:1;27636:15;27670:4;27667:1;27660:15;27687:180;27735:77;27732:1;27725:88;27832:4;27829:1;27822:15;27856:4;27853:1;27846:15;27873:180;27921:77;27918:1;27911:88;28018:4;28015:1;28008:15;28042:4;28039:1;28032:15;28182:117;28291:1;28288;28281:12;28305:102;28346:6;28397:2;28393:7;28388:2;28381:5;28377:14;28373:28;28363:38;;28353:54;;;:::o;28413:155::-;28553:7;28549:1;28541:6;28537:14;28530:31;28519:49;:::o;28574:160::-;28714:12;28710:1;28702:6;28698:14;28691:36;28680:54;:::o;28740:214::-;28880:66;28876:1;28868:6;28864:14;28857:90;28846:108;:::o;28960:156::-;29100:8;29096:1;29088:6;29084:14;29077:32;29066:50;:::o;29122:159::-;29262:11;29258:1;29250:6;29246:14;29239:35;29228:53;:::o;29287:170::-;29427:22;29423:1;29415:6;29411:14;29404:46;29393:64;:::o;29463:165::-;29603:17;29599:1;29591:6;29587:14;29580:41;29569:59;:::o;29634:164::-;29774:16;29770:1;29762:6;29758:14;29751:40;29740:58;:::o;29804:159::-;29944:11;29940:1;29932:6;29928:14;29921:35;29910:53;:::o;29969:161::-;30109:13;30105:1;30097:6;30093:14;30086:37;30075:55;:::o;30136:163::-;30276:15;30272:1;30264:6;30260:14;30253:39;30242:57;:::o;30305:173::-;30445:25;30441:1;30433:6;30429:14;30422:49;30411:67;:::o;30484:163::-;30624:15;30620:1;30612:6;30608:14;30601:39;30590:57;:::o;30653:122::-;30726:24;30744:5;30726:24;:::i;:::-;30719:5;30716:35;30706:2;;30765:1;30762;30755:12;30706:2;30696:79;:::o;30781:122::-;30854:24;30872:5;30854:24;:::i;:::-;30847:5;30844:35;30834:2;;30893:1;30890;30883:12;30834:2;30824:79;:::o;30909:122::-;30982:24;31000:5;30982:24;:::i;:::-;30975:5;30972:35;30962:2;;31021:1;31018;31011:12;30962:2;30952:79;:::o;31037:118::-;31108:22;31124:5;31108:22;:::i;:::-;31101:5;31098:33;31088:2;;31145:1;31142;31135:12;31088:2;31078:77;:::o
Swarm Source
ipfs://95469fdfd146da5f4a820f7042685a12aa07d155040da93e6be9a93d3031c179
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)