Source Code
Overview
ETH Balance
0.00214 ETH
Eth Value
$4.42 (@ $2,067.05/ETH)Latest 23 from a total of 23 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Purchase | 22230926 | 322 days ago | IN | 0.0001 ETH | 0.00004227 | ||||
| Purchase | 22230918 | 322 days ago | IN | 0.0005 ETH | 0.0000278 | ||||
| Purchase | 22230703 | 322 days ago | IN | 0.0001 ETH | 0.00002335 | ||||
| Buy Token | 22217780 | 324 days ago | IN | 0.001 ETH | 0.00046055 | ||||
| Buy Token | 22217723 | 324 days ago | IN | 0.001 ETH | 0.00071893 | ||||
| Purchase | 22139254 | 335 days ago | IN | 0.0005 ETH | 0.00003197 | ||||
| Purchase | 22139214 | 335 days ago | IN | 0.0009 ETH | 0.00004669 | ||||
| Purchase | 22139177 | 335 days ago | IN | 0.00003 ETH | 0.00005119 | ||||
| Init Sale | 22039691 | 348 days ago | IN | 0 ETH | 0.0000493 | ||||
| Init Sale | 22039683 | 348 days ago | IN | 0 ETH | 0.0000641 | ||||
| Transfer | 21967112 | 359 days ago | IN | 0.00001 ETH | 0.0000958 | ||||
| Buy Token | 21868284 | 372 days ago | IN | 0.00001 ETH | 0.00021348 | ||||
| Buy Token | 21867376 | 373 days ago | IN | 0.00001 ETH | 0.00116811 | ||||
| Buy Token | 21867342 | 373 days ago | IN | 0.00001 ETH | 0.00304892 | ||||
| Buy Token | 21823858 | 379 days ago | IN | 0.00004 ETH | 0.00015407 | ||||
| Buy Token | 21823818 | 379 days ago | IN | 0.0001 ETH | 0.0003698 | ||||
| Buy Token | 21823809 | 379 days ago | IN | 0.0005 ETH | 0.00025876 | ||||
| Buy Token | 21165386 | 471 days ago | IN | 0.00001 ETH | 0.00214952 | ||||
| Buy Token | 21150341 | 473 days ago | IN | 0.00001 ETH | 0.00068944 | ||||
| Buy Token | 21035257 | 489 days ago | IN | 0.001 ETH | 0.00126129 | ||||
| Buy Token | 20663103 | 541 days ago | IN | 0.00001 ETH | 0.00031936 | ||||
| Add Payable Toke... | 20656804 | 542 days ago | IN | 0 ETH | 0.00029837 | ||||
| Init Sale | 20656802 | 542 days ago | IN | 0 ETH | 0.00020551 |
Latest 12 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 22217780 | 324 days ago | 0.001 ETH | ||||
| Transfer | 22217723 | 324 days ago | 0.001 ETH | ||||
| Transfer | 21868284 | 372 days ago | 0.00001 ETH | ||||
| Transfer | 21867376 | 373 days ago | 0.00001 ETH | ||||
| Transfer | 21867342 | 373 days ago | 0.00001 ETH | ||||
| Transfer | 21823858 | 379 days ago | 0.00004 ETH | ||||
| Transfer | 21823818 | 379 days ago | 0.0001 ETH | ||||
| Transfer | 21823809 | 379 days ago | 0.0005 ETH | ||||
| Transfer | 21165386 | 471 days ago | 0.00001 ETH | ||||
| Transfer | 21150341 | 473 days ago | 0.00001 ETH | ||||
| Transfer | 21035257 | 489 days ago | 0.001 ETH | ||||
| Transfer | 20663103 | 541 days ago | 0.00001 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PresaleEVM
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-09-01
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library SafeMath {
function tryAdd(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
pragma solidity ^0.8.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
pragma solidity ^0.8.0;
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_transferOwnership(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
pragma solidity ^0.8.0;
contract OwnerWithdrawable is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
receive() external payable {}
fallback() external payable {}
function withdraw(address token, uint256 amt) public onlyOwner {
IERC20(token).safeTransfer(msg.sender, amt);
}
function withdrawAll(address token) public onlyOwner {
uint256 amt = IERC20(token).balanceOf(address(this));
withdraw(token, amt);
}
function withdrawCurrency(uint256 amt) public onlyOwner {
payable(msg.sender).transfer(amt);
}
// function deposit(address token, uint256 amt) public onlyOwner {
// uint256 allowance = IERC20(token).allowance(msg.sender, address(this));
// require(allowance >= amt, "Check the token allowance");
// IERC20(token).transferFrom(owner(), address(this), amt);
// }
}
pragma solidity ^0.8.0;
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
function functionCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(
address target,
bytes memory data
) internal view returns (bytes memory) {
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
pragma solidity ^0.8.0;
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.transfer.selector, to, value)
);
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
);
}
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(
token,
abi.encodeWithSelector(token.approve.selector, spender, value)
);
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(
token,
abi.encodeWithSelector(
token.approve.selector,
spender,
newAllowance
)
);
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(
oldAllowance >= value,
"SafeERC20: decreased allowance below zero"
);
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(
token,
abi.encodeWithSelector(
token.approve.selector,
spender,
newAllowance
)
);
}
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(
data,
"SafeERC20: low-level call failed"
);
if (returndata.length > 0) {
require(
abi.decode(returndata, (bool)),
"SafeERC20: ERC20 operation did not succeed"
);
}
}
}
pragma solidity ^0.8.0;
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
pragma solidity ^0.8.0;
contract PresaleEVM is OwnerWithdrawable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
using SafeERC20 for IERC20Metadata;
uint256 public rate;
address public saleToken;
uint public saleTokenDec;
uint256 public totalTokensforSale;
mapping(address => bool) public payableTokens;
mapping(address => uint256) public tokenPrices;
bool public saleStatus;
address[] public buyers;
mapping(address => BuyerDetails) public buyersDetails;
uint256 public totalBuyers;
uint256 public totalTokensSold;
struct BuyerDetails {
uint amount;
bool exists;
}
struct BuyerAmount {
uint amount;
address buyer;
}
constructor() {
saleStatus = false;
}
modifier saleEnabled() {
require(saleStatus == true, "Presale: is not enabled");
_;
}
modifier saleStoped() {
require(saleStatus == false, "Presale: is not stopped");
_;
}
function initSale(
uint256 _decimals,
uint256 _totalTokensforSale,
uint256 _rate,
bool _saleStatus
) external onlyOwner {
require(_rate != 0);
rate = _rate;
saleStatus = _saleStatus;
saleTokenDec = _decimals;
totalTokensforSale = _totalTokensforSale;
}
function stopSale() external onlyOwner saleEnabled {
saleStatus = false;
}
function resumeSale() external onlyOwner saleStoped {
saleStatus = true;
}
function addPayableTokens(
address[] memory _tokens,
uint256[] memory _prices
) external onlyOwner {
require(
_tokens.length == _prices.length,
"Presale: tokens & prices arrays length mismatch"
);
for (uint256 i = 0; i < _tokens.length; i++) {
require(_prices[i] != 0);
payableTokens[_tokens[i]] = true;
tokenPrices[_tokens[i]] = _prices[i];
}
}
function payableTokenStatus(
address _token,
bool _status
) external onlyOwner {
require(payableTokens[_token] != _status);
payableTokens[_token] = _status;
}
function updateTokenRate(
address[] memory _tokens,
uint256[] memory _prices,
uint256 _rate
) external onlyOwner {
require(
_tokens.length == _prices.length,
"Presale: tokens & prices arrays length mismatch"
);
if (_rate != 0) {
rate = _rate;
}
for (uint256 i = 0; i < _tokens.length; i += 1) {
require(payableTokens[_tokens[i]] == true);
require(_prices[i] != 0);
tokenPrices[_tokens[i]] = _prices[i];
}
}
function getTokenAmount(
address token,
uint256 amount
) public view returns (uint256) {
uint256 amtOut;
if (token != address(0)) {
require(payableTokens[token] == true, "Presale: Token not allowed");
uint256 price = tokenPrices[token];
amtOut = amount.mul(10 ** saleTokenDec).div(price);
} else {
amtOut = amount.mul(10 ** saleTokenDec).div(rate);
}
return amtOut;
}
function transferETH() private {
payable(owner()).transfer(msg.value);
}
function transferToken(address _token, uint256 _amount) private {
IERC20(_token).safeTransferFrom(
msg.sender,
owner(),
_amount
);
}
function buyToken(
address _token,
uint256 _amount
) external payable saleEnabled {
uint256 saleTokenAmt = _token != address(0)
? getTokenAmount(_token, _amount)
: getTokenAmount(address(0), msg.value);
require(saleTokenAmt != 0, "Presale: Amount is 0");
require(
(totalTokensSold + saleTokenAmt) < totalTokensforSale,
"Presale: Not enough tokens to be sale"
);
if (_token != address(0)) {
transferToken(_token, _amount);
} else {
transferETH();
}
totalTokensSold += saleTokenAmt;
if (!buyersDetails[msg.sender].exists) {
buyers.push(msg.sender);
buyersDetails[msg.sender].exists = true;
totalBuyers += 1;
}
buyersDetails[msg.sender].amount += saleTokenAmt;
}
function exportBuyers(
uint _from,
uint _to
) external view returns (BuyerAmount[] memory) {
require(_from < _to, "Presale: _from should be less than _to");
uint to = _to > totalBuyers ? totalBuyers : _to;
uint from = _from > totalBuyers ? totalBuyers : _from;
BuyerAmount[] memory buyersAmt = new BuyerAmount[](to - from);
for (uint i = from; i < to; i += 1) {
buyersAmt[i].amount = buyersDetails[buyers[i]].amount;
buyersAmt[i].buyer = buyers[i];
}
return buyersAmt;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"addPayableTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyersDetails","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"exportBuyers","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct PresaleEVM.BuyerAmount[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_totalTokensforSale","type":"uint256"},{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"bool","name":"_saleStatus","type":"bool"}],"name":"initSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"payableTokenStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"payableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleTokenDec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensforSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"updateTokenRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b5062000032620000266200005360201b60201c565b6200005b60201b60201c565b6000600760006101000a81548160ff0219169083151502179055506200011f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61329f806200012f6000396000f3fe6080604052600436106101855760003560e01c8063715018a6116100d1578063e985e3671161008a578063f3fef3a311610064578063f3fef3a314610543578063f4739ee31461056c578063f9020e33146105aa578063fa09e630146105d55761018c565b8063e985e367146104b2578063f2aa8218146104dd578063f2fde38b1461051a5761018c565b8063715018a6146103b457806380655eef146103cb5780638da5cb5b14610408578063ace1741c14610433578063c4a0869b1461045e578063e36b0b371461049b5761018c565b80633471bbbb1161013e5780635413c1c8116101185780635413c1c81461031957806363b201171461034257806368f8fc101461036d5780636bcedf9c146103895761018c565b80633471bbbb1461029c5780633abd0136146102c55780633c00a36c146102f05761018c565b8063115ece4c1461018e578063204120bc146101cb57806329d429a8146102085780632c4e722e146102315780633115329e1461025c57806333e364cb146102855761018c565b3661018c57005b005b34801561019a57600080fd5b506101b560048036038101906101b09190612307565b6105fe565b6040516101c29190612cf7565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906122a2565b610789565b6040516101ff9190612cf7565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122cb565b6107a1565b005b34801561023d57600080fd5b506102466108d5565b6040516102539190612cf7565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e91906123af565b6108db565b005b34801561029157600080fd5b5061029a610b80565b005b3480156102a857600080fd5b506102c360048036038101906102be91906124e5565b610c6f565b005b3480156102d157600080fd5b506102da610d2e565b6040516102e79190612cf7565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190612457565b610d34565b005b34801561032557600080fd5b50610340600480360381019061033b9190612343565b610dfa565b005b34801561034e57600080fd5b50610357611088565b6040516103649190612cf7565b60405180910390f35b61038760048036038101906103829190612307565b61108e565b005b34801561039557600080fd5b5061039e6113bc565b6040516103ab9190612cf7565b60405180910390f35b3480156103c057600080fd5b506103c96113c2565b005b3480156103d757600080fd5b506103f260048036038101906103ed91906122a2565b61144a565b6040516103ff9190612b3a565b60405180910390f35b34801561041457600080fd5b5061041d61146a565b60405161042a9190612a9d565b60405180910390f35b34801561043f57600080fd5b50610448611493565b6040516104559190612cf7565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906124a9565b611499565b6040516104929190612b18565b60405180910390f35b3480156104a757600080fd5b506104b061178f565b005b3480156104be57600080fd5b506104c761187e565b6040516104d49190612a9d565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612457565b6118a4565b6040516105119190612a9d565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906122a2565b6118e3565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612307565b6119db565b005b34801561057857600080fd5b50610593600480360381019061058e91906122a2565b611a86565b6040516105a1929190612d12565b60405180910390f35b3480156105b657600080fd5b506105bf611ab7565b6040516105cc9190612b3a565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906122a2565b611aca565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107475760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612b97565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061073f81610731600354600a6107229190612f09565b87611be190919063ffffffff16565b611bf790919063ffffffff16565b91505061077f565b61077c60015461076e600354600a61075f9190612f09565b86611be190919063ffffffff16565b611bf790919063ffffffff16565b90505b8091505092915050565b60066020528060005260406000206000915090505481565b6107a9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166107c761146a565b73ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612c77565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561087a57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b6108e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661090161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90612c77565b60405180910390fd5b815183511461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612c17565b60405180910390fd5b600081146109ab57806001819055505b60005b8351811015610b7a5760011515600560008684815181106109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610a5457600080fd5b6000838281518110610a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610aa257600080fd5b828181518110610adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610b20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610b739190612e2f565b90506109ae565b50505050565b610b88611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610ba661146a565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390612c77565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612bd7565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b610c77611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c9561146a565b73ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290612c77565b60405180910390fd5b6000821415610cf957600080fd5b8160018190555080600760006101000a81548160ff021916908315150217905550836003819055508260048190555050505050565b600a5481565b610d3c611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610d5a61146a565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790612c77565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610df6573d6000803e3d6000fd5b5050565b610e02611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610e2061146a565b73ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90612c77565b60405180910390fd5b8051825114610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190612c17565b60405180910390fd5b60005b8251811015611083576000828281518110610f01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610f1457600080fd5b600160056000858481518110610f53577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610fe5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516006600085848151811061102a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808061107b90613130565b915050610ebd565b505050565b600b5481565b60011515600760009054906101000a900460ff161515146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90612cb7565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561112a576111256000346105fe565b611135565b61113483836105fe565b5b9050600081141561117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290612c37565b60405180910390fd5b60045481600b5461118c9190612e2f565b106111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390612c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461120f5761120a8383611c15565b611218565b611217611c4d565b5b80600b600082825461122a9190612e2f565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661135e576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600a60008282546113569190612e2f565b925050819055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546113b09190612e2f565b92505081905550505050565b60045481565b6113ca611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113e861146a565b73ffffffffffffffffffffffffffffffffffffffff161461143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590612c77565b60405180910390fd5b6114486000611c9d565b565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60608183106114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490612bb7565b60405180910390fd5b6000600a5483116114ee57826114f2565b600a545b90506000600a5485116115055784611509565b600a545b9050600081836115199190613081565b67ffffffffffffffff811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561159157816020015b61157e6120dd565b8152602001906001900390816115765790505b50905060008290505b838110156117825760096000600883815481106115e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154828281518110611682577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600881815481106116cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611730577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018161177b9190612e2f565b905061159a565b5080935050505092915050565b611797611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117b561146a565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612c77565b60405180910390fd5b60011515600760009054906101000a900460ff16151514611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612cb7565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106118b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118eb611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661190961146a565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612b77565b60405180910390fd5b6119d881611c9d565b50565b6119e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a0161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90612c77565b60405180910390fd5b611a8233828473ffffffffffffffffffffffffffffffffffffffff16611d619092919063ffffffff16565b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600760009054906101000a900460ff1681565b611ad2611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611af061146a565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612c77565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b819190612a9d565b60206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612480565b9050611bdd82826119db565b5050565b60008183611bef9190613027565b905092915050565b60008183611c059190612e85565b905092915050565b600033905090565b611c4933611c2161146a565b838573ffffffffffffffffffffffffffffffffffffffff16611de7909392919063ffffffff16565b5050565b611c5561146a565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c9a573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611de28363a9059cbb60e01b8484604051602401611d80929190612aef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b505050565b611e6a846323b872dd60e01b858585604051602401611e0893929190612ab8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b50505050565b6000611ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b9050600081511115611f325780806020019051810190611ef2919061242e565b611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890612cd7565b60405180910390fd5b5b505050565b6060611f468484600085611f4f565b90509392505050565b606082471015611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90612bf7565b60405180910390fd5b611f9d85612063565b611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390612c97565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120059190612a86565b60006040518083038185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b5091509150612057828286612076565b92505050949350505050565b600080823b905060008111915050919050565b60608315612086578290506120d6565b6000835111156120995782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612b55565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061212061211b84612d6c565b612d3b565b9050808382526020820190508285602086028201111561213f57600080fd5b60005b8581101561216f578161215588826121e5565b845260208401935060208301925050600181019050612142565b5050509392505050565b600061218c61218784612d98565b612d3b565b905080838252602082019050828560208602820111156121ab57600080fd5b60005b858110156121db57816121c18882612278565b8452602084019350602083019250506001810190506121ae565b5050509392505050565b6000813590506121f481613224565b92915050565b600082601f83011261220b57600080fd5b813561221b84826020860161210d565b91505092915050565b600082601f83011261223557600080fd5b8135612245848260208601612179565b91505092915050565b60008135905061225d8161323b565b92915050565b6000815190506122728161323b565b92915050565b60008135905061228781613252565b92915050565b60008151905061229c81613252565b92915050565b6000602082840312156122b457600080fd5b60006122c2848285016121e5565b91505092915050565b600080604083850312156122de57600080fd5b60006122ec858286016121e5565b92505060206122fd8582860161224e565b9150509250929050565b6000806040838503121561231a57600080fd5b6000612328858286016121e5565b925050602061233985828601612278565b9150509250929050565b6000806040838503121561235657600080fd5b600083013567ffffffffffffffff81111561237057600080fd5b61237c858286016121fa565b925050602083013567ffffffffffffffff81111561239957600080fd5b6123a585828601612224565b9150509250929050565b6000806000606084860312156123c457600080fd5b600084013567ffffffffffffffff8111156123de57600080fd5b6123ea868287016121fa565b935050602084013567ffffffffffffffff81111561240757600080fd5b61241386828701612224565b925050604061242486828701612278565b9150509250925092565b60006020828403121561244057600080fd5b600061244e84828501612263565b91505092915050565b60006020828403121561246957600080fd5b600061247784828501612278565b91505092915050565b60006020828403121561249257600080fd5b60006124a08482850161228d565b91505092915050565b600080604083850312156124bc57600080fd5b60006124ca85828601612278565b92505060206124db85828601612278565b9150509250929050565b600080600080608085870312156124fb57600080fd5b600061250987828801612278565b945050602061251a87828801612278565b935050604061252b87828801612278565b925050606061253c8782880161224e565b91505092959194509250565b60006125548383612a39565b60408301905092915050565b612569816130b5565b82525050565b612578816130b5565b82525050565b600061258982612dd4565b6125938185612e02565b935061259e83612dc4565b8060005b838110156125cf5781516125b68882612548565b97506125c183612df5565b9250506001810190506125a2565b5085935050505092915050565b6125e5816130c7565b82525050565b60006125f682612ddf565b6126008185612e13565b93506126108185602086016130fd565b80840191505092915050565b600061262782612dea565b6126318185612e1e565b93506126418185602086016130fd565b61264a81613206565b840191505092915050565b6000612662602683612e1e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8601a83612e1e565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612708602683612e1e565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061276e601783612e1e565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b60006127ae602683612e1e565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612814602f83612e1e565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b600061287a601483612e1e565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b60006128ba602583612e1e565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612920602083612e1e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612960601d83612e1e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006129a0601783612e1e565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b60006129e0602a83612e1e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612a4f6000850182612a68565b506020820151612a626020850182612560565b50505050565b612a71816130f3565b82525050565b612a80816130f3565b82525050565b6000612a9282846125eb565b915081905092915050565b6000602082019050612ab2600083018461256f565b92915050565b6000606082019050612acd600083018661256f565b612ada602083018561256f565b612ae76040830184612a77565b949350505050565b6000604082019050612b04600083018561256f565b612b116020830184612a77565b9392505050565b60006020820190508181036000830152612b32818461257e565b905092915050565b6000602082019050612b4f60008301846125dc565b92915050565b60006020820190508181036000830152612b6f818461261c565b905092915050565b60006020820190508181036000830152612b9081612655565b9050919050565b60006020820190508181036000830152612bb0816126bb565b9050919050565b60006020820190508181036000830152612bd0816126fb565b9050919050565b60006020820190508181036000830152612bf081612761565b9050919050565b60006020820190508181036000830152612c10816127a1565b9050919050565b60006020820190508181036000830152612c3081612807565b9050919050565b60006020820190508181036000830152612c508161286d565b9050919050565b60006020820190508181036000830152612c70816128ad565b9050919050565b60006020820190508181036000830152612c9081612913565b9050919050565b60006020820190508181036000830152612cb081612953565b9050919050565b60006020820190508181036000830152612cd081612993565b9050919050565b60006020820190508181036000830152612cf0816129d3565b9050919050565b6000602082019050612d0c6000830184612a77565b92915050565b6000604082019050612d276000830185612a77565b612d3460208301846125dc565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612d6257612d616131d7565b5b8060405250919050565b600067ffffffffffffffff821115612d8757612d866131d7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db357612db26131d7565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e3a826130f3565b9150612e45836130f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7a57612e79613179565b5b828201905092915050565b6000612e90826130f3565b9150612e9b836130f3565b925082612eab57612eaa6131a8565b5b828204905092915050565b6000808291508390505b6001851115612f0057808604811115612edc57612edb613179565b5b6001851615612eeb5780820291505b8081029050612ef985613217565b9450612ec0565b94509492505050565b6000612f14826130f3565b9150612f1f836130f3565b9250612f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f54565b905092915050565b600082612f645760019050613020565b81612f725760009050613020565b8160018114612f885760028114612f9257612fc1565b6001915050613020565b60ff841115612fa457612fa3613179565b5b8360020a915084821115612fbb57612fba613179565b5b50613020565b5060208310610133831016604e8410600b8410161715612ff65782820a905083811115612ff157612ff0613179565b5b613020565b6130038484846001612eb6565b9250905081840481111561301a57613019613179565b5b81810290505b9392505050565b6000613032826130f3565b915061303d836130f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561307657613075613179565b5b828202905092915050565b600061308c826130f3565b9150613097836130f3565b9250828210156130aa576130a9613179565b5b828203905092915050565b60006130c0826130d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561311b578082015181840152602081019050613100565b8381111561312a576000848401525b50505050565b600061313b826130f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561316e5761316d613179565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61322d816130b5565b811461323857600080fd5b50565b613244816130c7565b811461324f57600080fd5b50565b61325b816130f3565b811461326657600080fd5b5056fea2646970667358221220ad7d8ebe92da40c52f9c358ce39f1486eab31992a771954a5b43cf491f683e5d64736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101855760003560e01c8063715018a6116100d1578063e985e3671161008a578063f3fef3a311610064578063f3fef3a314610543578063f4739ee31461056c578063f9020e33146105aa578063fa09e630146105d55761018c565b8063e985e367146104b2578063f2aa8218146104dd578063f2fde38b1461051a5761018c565b8063715018a6146103b457806380655eef146103cb5780638da5cb5b14610408578063ace1741c14610433578063c4a0869b1461045e578063e36b0b371461049b5761018c565b80633471bbbb1161013e5780635413c1c8116101185780635413c1c81461031957806363b201171461034257806368f8fc101461036d5780636bcedf9c146103895761018c565b80633471bbbb1461029c5780633abd0136146102c55780633c00a36c146102f05761018c565b8063115ece4c1461018e578063204120bc146101cb57806329d429a8146102085780632c4e722e146102315780633115329e1461025c57806333e364cb146102855761018c565b3661018c57005b005b34801561019a57600080fd5b506101b560048036038101906101b09190612307565b6105fe565b6040516101c29190612cf7565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906122a2565b610789565b6040516101ff9190612cf7565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122cb565b6107a1565b005b34801561023d57600080fd5b506102466108d5565b6040516102539190612cf7565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e91906123af565b6108db565b005b34801561029157600080fd5b5061029a610b80565b005b3480156102a857600080fd5b506102c360048036038101906102be91906124e5565b610c6f565b005b3480156102d157600080fd5b506102da610d2e565b6040516102e79190612cf7565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190612457565b610d34565b005b34801561032557600080fd5b50610340600480360381019061033b9190612343565b610dfa565b005b34801561034e57600080fd5b50610357611088565b6040516103649190612cf7565b60405180910390f35b61038760048036038101906103829190612307565b61108e565b005b34801561039557600080fd5b5061039e6113bc565b6040516103ab9190612cf7565b60405180910390f35b3480156103c057600080fd5b506103c96113c2565b005b3480156103d757600080fd5b506103f260048036038101906103ed91906122a2565b61144a565b6040516103ff9190612b3a565b60405180910390f35b34801561041457600080fd5b5061041d61146a565b60405161042a9190612a9d565b60405180910390f35b34801561043f57600080fd5b50610448611493565b6040516104559190612cf7565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906124a9565b611499565b6040516104929190612b18565b60405180910390f35b3480156104a757600080fd5b506104b061178f565b005b3480156104be57600080fd5b506104c761187e565b6040516104d49190612a9d565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612457565b6118a4565b6040516105119190612a9d565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906122a2565b6118e3565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612307565b6119db565b005b34801561057857600080fd5b50610593600480360381019061058e91906122a2565b611a86565b6040516105a1929190612d12565b60405180910390f35b3480156105b657600080fd5b506105bf611ab7565b6040516105cc9190612b3a565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906122a2565b611aca565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107475760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612b97565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061073f81610731600354600a6107229190612f09565b87611be190919063ffffffff16565b611bf790919063ffffffff16565b91505061077f565b61077c60015461076e600354600a61075f9190612f09565b86611be190919063ffffffff16565b611bf790919063ffffffff16565b90505b8091505092915050565b60066020528060005260406000206000915090505481565b6107a9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166107c761146a565b73ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612c77565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561087a57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b6108e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661090161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90612c77565b60405180910390fd5b815183511461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612c17565b60405180910390fd5b600081146109ab57806001819055505b60005b8351811015610b7a5760011515600560008684815181106109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610a5457600080fd5b6000838281518110610a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610aa257600080fd5b828181518110610adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610b20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610b739190612e2f565b90506109ae565b50505050565b610b88611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610ba661146a565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390612c77565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612bd7565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b610c77611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c9561146a565b73ffffffffffffffffffffffffffffffffffffffff1614610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce290612c77565b60405180910390fd5b6000821415610cf957600080fd5b8160018190555080600760006101000a81548160ff021916908315150217905550836003819055508260048190555050505050565b600a5481565b610d3c611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610d5a61146a565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790612c77565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610df6573d6000803e3d6000fd5b5050565b610e02611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610e2061146a565b73ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90612c77565b60405180910390fd5b8051825114610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190612c17565b60405180910390fd5b60005b8251811015611083576000828281518110610f01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610f1457600080fd5b600160056000858481518110610f53577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610fe5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516006600085848151811061102a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808061107b90613130565b915050610ebd565b505050565b600b5481565b60011515600760009054906101000a900460ff161515146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90612cb7565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561112a576111256000346105fe565b611135565b61113483836105fe565b5b9050600081141561117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290612c37565b60405180910390fd5b60045481600b5461118c9190612e2f565b106111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390612c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461120f5761120a8383611c15565b611218565b611217611c4d565b5b80600b600082825461122a9190612e2f565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661135e576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600a60008282546113569190612e2f565b925050819055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546113b09190612e2f565b92505081905550505050565b60045481565b6113ca611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113e861146a565b73ffffffffffffffffffffffffffffffffffffffff161461143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590612c77565b60405180910390fd5b6114486000611c9d565b565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60608183106114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490612bb7565b60405180910390fd5b6000600a5483116114ee57826114f2565b600a545b90506000600a5485116115055784611509565b600a545b9050600081836115199190613081565b67ffffffffffffffff811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561159157816020015b61157e6120dd565b8152602001906001900390816115765790505b50905060008290505b838110156117825760096000600883815481106115e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154828281518110611682577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600881815481106116cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611730577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018161177b9190612e2f565b905061159a565b5080935050505092915050565b611797611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117b561146a565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612c77565b60405180910390fd5b60011515600760009054906101000a900460ff16151514611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612cb7565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106118b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118eb611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661190961146a565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612b77565b60405180910390fd5b6119d881611c9d565b50565b6119e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a0161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90612c77565b60405180910390fd5b611a8233828473ffffffffffffffffffffffffffffffffffffffff16611d619092919063ffffffff16565b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600760009054906101000a900460ff1681565b611ad2611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611af061146a565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612c77565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b819190612a9d565b60206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612480565b9050611bdd82826119db565b5050565b60008183611bef9190613027565b905092915050565b60008183611c059190612e85565b905092915050565b600033905090565b611c4933611c2161146a565b838573ffffffffffffffffffffffffffffffffffffffff16611de7909392919063ffffffff16565b5050565b611c5561146a565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c9a573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611de28363a9059cbb60e01b8484604051602401611d80929190612aef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b505050565b611e6a846323b872dd60e01b858585604051602401611e0893929190612ab8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b50505050565b6000611ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b9050600081511115611f325780806020019051810190611ef2919061242e565b611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890612cd7565b60405180910390fd5b5b505050565b6060611f468484600085611f4f565b90509392505050565b606082471015611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90612bf7565b60405180910390fd5b611f9d85612063565b611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390612c97565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120059190612a86565b60006040518083038185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b5091509150612057828286612076565b92505050949350505050565b600080823b905060008111915050919050565b60608315612086578290506120d6565b6000835111156120995782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612b55565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061212061211b84612d6c565b612d3b565b9050808382526020820190508285602086028201111561213f57600080fd5b60005b8581101561216f578161215588826121e5565b845260208401935060208301925050600181019050612142565b5050509392505050565b600061218c61218784612d98565b612d3b565b905080838252602082019050828560208602820111156121ab57600080fd5b60005b858110156121db57816121c18882612278565b8452602084019350602083019250506001810190506121ae565b5050509392505050565b6000813590506121f481613224565b92915050565b600082601f83011261220b57600080fd5b813561221b84826020860161210d565b91505092915050565b600082601f83011261223557600080fd5b8135612245848260208601612179565b91505092915050565b60008135905061225d8161323b565b92915050565b6000815190506122728161323b565b92915050565b60008135905061228781613252565b92915050565b60008151905061229c81613252565b92915050565b6000602082840312156122b457600080fd5b60006122c2848285016121e5565b91505092915050565b600080604083850312156122de57600080fd5b60006122ec858286016121e5565b92505060206122fd8582860161224e565b9150509250929050565b6000806040838503121561231a57600080fd5b6000612328858286016121e5565b925050602061233985828601612278565b9150509250929050565b6000806040838503121561235657600080fd5b600083013567ffffffffffffffff81111561237057600080fd5b61237c858286016121fa565b925050602083013567ffffffffffffffff81111561239957600080fd5b6123a585828601612224565b9150509250929050565b6000806000606084860312156123c457600080fd5b600084013567ffffffffffffffff8111156123de57600080fd5b6123ea868287016121fa565b935050602084013567ffffffffffffffff81111561240757600080fd5b61241386828701612224565b925050604061242486828701612278565b9150509250925092565b60006020828403121561244057600080fd5b600061244e84828501612263565b91505092915050565b60006020828403121561246957600080fd5b600061247784828501612278565b91505092915050565b60006020828403121561249257600080fd5b60006124a08482850161228d565b91505092915050565b600080604083850312156124bc57600080fd5b60006124ca85828601612278565b92505060206124db85828601612278565b9150509250929050565b600080600080608085870312156124fb57600080fd5b600061250987828801612278565b945050602061251a87828801612278565b935050604061252b87828801612278565b925050606061253c8782880161224e565b91505092959194509250565b60006125548383612a39565b60408301905092915050565b612569816130b5565b82525050565b612578816130b5565b82525050565b600061258982612dd4565b6125938185612e02565b935061259e83612dc4565b8060005b838110156125cf5781516125b68882612548565b97506125c183612df5565b9250506001810190506125a2565b5085935050505092915050565b6125e5816130c7565b82525050565b60006125f682612ddf565b6126008185612e13565b93506126108185602086016130fd565b80840191505092915050565b600061262782612dea565b6126318185612e1e565b93506126418185602086016130fd565b61264a81613206565b840191505092915050565b6000612662602683612e1e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8601a83612e1e565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612708602683612e1e565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061276e601783612e1e565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b60006127ae602683612e1e565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612814602f83612e1e565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b600061287a601483612e1e565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b60006128ba602583612e1e565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612920602083612e1e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612960601d83612e1e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006129a0601783612e1e565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b60006129e0602a83612e1e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612a4f6000850182612a68565b506020820151612a626020850182612560565b50505050565b612a71816130f3565b82525050565b612a80816130f3565b82525050565b6000612a9282846125eb565b915081905092915050565b6000602082019050612ab2600083018461256f565b92915050565b6000606082019050612acd600083018661256f565b612ada602083018561256f565b612ae76040830184612a77565b949350505050565b6000604082019050612b04600083018561256f565b612b116020830184612a77565b9392505050565b60006020820190508181036000830152612b32818461257e565b905092915050565b6000602082019050612b4f60008301846125dc565b92915050565b60006020820190508181036000830152612b6f818461261c565b905092915050565b60006020820190508181036000830152612b9081612655565b9050919050565b60006020820190508181036000830152612bb0816126bb565b9050919050565b60006020820190508181036000830152612bd0816126fb565b9050919050565b60006020820190508181036000830152612bf081612761565b9050919050565b60006020820190508181036000830152612c10816127a1565b9050919050565b60006020820190508181036000830152612c3081612807565b9050919050565b60006020820190508181036000830152612c508161286d565b9050919050565b60006020820190508181036000830152612c70816128ad565b9050919050565b60006020820190508181036000830152612c9081612913565b9050919050565b60006020820190508181036000830152612cb081612953565b9050919050565b60006020820190508181036000830152612cd081612993565b9050919050565b60006020820190508181036000830152612cf0816129d3565b9050919050565b6000602082019050612d0c6000830184612a77565b92915050565b6000604082019050612d276000830185612a77565b612d3460208301846125dc565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612d6257612d616131d7565b5b8060405250919050565b600067ffffffffffffffff821115612d8757612d866131d7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db357612db26131d7565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e3a826130f3565b9150612e45836130f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7a57612e79613179565b5b828201905092915050565b6000612e90826130f3565b9150612e9b836130f3565b925082612eab57612eaa6131a8565b5b828204905092915050565b6000808291508390505b6001851115612f0057808604811115612edc57612edb613179565b5b6001851615612eeb5780820291505b8081029050612ef985613217565b9450612ec0565b94509492505050565b6000612f14826130f3565b9150612f1f836130f3565b9250612f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f54565b905092915050565b600082612f645760019050613020565b81612f725760009050613020565b8160018114612f885760028114612f9257612fc1565b6001915050613020565b60ff841115612fa457612fa3613179565b5b8360020a915084821115612fbb57612fba613179565b5b50613020565b5060208310610133831016604e8410600b8410161715612ff65782820a905083811115612ff157612ff0613179565b5b613020565b6130038484846001612eb6565b9250905081840481111561301a57613019613179565b5b81810290505b9392505050565b6000613032826130f3565b915061303d836130f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561307657613075613179565b5b828202905092915050565b600061308c826130f3565b9150613097836130f3565b9250828210156130aa576130a9613179565b5b828203905092915050565b60006130c0826130d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561311b578082015181840152602081019050613100565b8381111561312a576000848401525b50505050565b600061313b826130f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561316e5761316d613179565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61322d816130b5565b811461323857600080fd5b50565b613244816130c7565b811461324f57600080fd5b50565b61325b816130f3565b811461326657600080fd5b5056fea2646970667358221220ad7d8ebe92da40c52f9c358ce39f1486eab31992a771954a5b43cf491f683e5d64736f6c63430008000033
Deployed Bytecode Sourcemap
12597:5192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15474:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12944:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14673:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12754:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14887:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14093:88;;;;;;;;;;;;;:::i;:::-;;13646:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13122:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5289:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14189:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13155:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16270:913;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12848:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4223:103;;;;;;;;;;;;;:::i;:::-;;12890:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4000:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12815:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17191:595;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13997:88;;;;;;;;;;;;;:::i;:::-;;12782:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13030:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4334:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4993:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13060:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;12999:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5126:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15474:492;15575:7;15595:14;15641:1;15624:19;;:5;:19;;;15620:315;;15692:4;15668:28;;:13;:20;15682:5;15668:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;15660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15742:13;15758:11;:18;15770:5;15758:18;;;;;;;;;;;;;;;;15742:34;;15800:41;15835:5;15800:30;15817:12;;15811:2;:18;;;;:::i;:::-;15800:6;:10;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;15791:50;;15620:315;;;;15883:40;15918:4;;15883:30;15900:12;;15894:2;:18;;;;:::i;:::-;15883:6;:10;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15874:49;;15620:315;15952:6;15945:13;;;15474:492;;;;:::o;12944:46::-;;;;;;;;;;;;;;;;;:::o;14673:206::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14819:7:::1;14794:32;;:13;:21;14808:6;14794:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;14786:41;;;::::0;::::1;;14864:7;14840:13;:21;14854:6;14840:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14673:206:::0;;:::o;12754:19::-;;;;:::o;14887:579::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15083:7:::1;:14;15065:7;:14;:32;15043:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;15198:1;15189:5;:10;15185:55;;15223:5;15216:4;:12;;;;15185:55;15257:9;15252:207;15276:7;:14;15272:1;:18;15252:207;;;15352:4;15323:33;;:13;:25;15337:7;15345:1;15337:10;;;;;;;;;;;;;;;;;;;;;;15323:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;15315:42;;;::::0;::::1;;15394:1;15380:7;15388:1;15380:10;;;;;;;;;;;;;;;;;;;;;;:15;;15372:24;;;::::0;::::1;;15437:7;15445:1;15437:10;;;;;;;;;;;;;;;;;;;;;;15411:11;:23;15423:7;15431:1;15423:10;;;;;;;;;;;;;;;;;;;;;;15411:23;;;;;;;;;;;;;;;:36;;;;15297:1;15292:6;;;;;:::i;:::-;;;15252:207;;;;14887:579:::0;;;:::o;14093:88::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13585:5:::1;13571:19;;:10;;;;;;;;;;;:19;;;13563:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14169:4:::2;14156:10;;:17;;;;;;;;;;;;;;;;;;14093:88::o:0;13646:343::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13835:1:::1;13826:5;:10;;13818:19;;;::::0;::::1;;13855:5;13848:4;:12;;;;13884:11;13871:10;;:24;;;;;;;;;;;;;;;;;;13921:9;13906:12;:24;;;;13962:19;13941:18;:40;;;;13646:343:::0;;;;:::o;13122:26::-;;;;:::o;5289:108::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5364:10:::1;5356:28;;:33;5385:3;5356:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;5289:108:::0;:::o;14189:476::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14362:7:::1;:14;14344:7;:14;:32;14322:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;14469:9;14464:194;14488:7;:14;14484:1;:18;14464:194;;;14546:1;14532:7;14540:1;14532:10;;;;;;;;;;;;;;;;;;;;;;:15;;14524:24;;;::::0;::::1;;14591:4;14563:13;:25;14577:7;14585:1;14577:10;;;;;;;;;;;;;;;;;;;;;;14563:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14636:7;14644:1;14636:10;;;;;;;;;;;;;;;;;;;;;;14610:11;:23;14622:7;14630:1;14622:10;;;;;;;;;;;;;;;;;;;;;;14610:23;;;;;;;;;;;;;;;:36;;;;14504:3;;;;;:::i;:::-;;;;14464:194;;;;14189:476:::0;;:::o;13155:30::-;;;;:::o;16270:913::-;13470:4;13456:18;;:10;;;;;;;;;;;:18;;;13448:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16386:20:::1;16427:1:::0;16409:20:::1;;:6;:20;;;;:120;;16492:37;16515:1;16519:9;16492:14;:37::i;:::-;16409:120;;;16445:31;16460:6;16468:7;16445:14;:31::i;:::-;16409:120;16386:143;;16566:1;16550:12;:17;;16542:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16660:18;;16644:12;16626:15;;:30;;;;:::i;:::-;16625:53;16603:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16778:1;16760:20;;:6;:20;;;16756:129;;16797:30;16811:6;16819:7;16797:13;:30::i;:::-;16756:129;;;16860:13;:11;:13::i;:::-;16756:129;16916:12;16897:15;;:31;;;;;;;:::i;:::-;;;;;;;;16946:13;:25;16960:10;16946:25;;;;;;;;;;;;;;;:32;;;;;;;;;;;;16941:174;;16995:6;17007:10;16995:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17068:4;17033:13;:25;17047:10;17033:25;;;;;;;;;;;;;;;:32;;;:39;;;;;;;;;;;;;;;;;;17102:1;17087:11;;:16;;;;;;;:::i;:::-;;;;;;;;16941:174;17163:12;17127:13;:25;17141:10;17127:25;;;;;;;;;;;;;;;:32;;;:48;;;;;;;:::i;:::-;;;;;;;;13513:1;16270:913:::0;;:::o;12848:33::-;;;;:::o;4223:103::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4288:30:::1;4315:1;4288:18;:30::i;:::-;4223:103::o:0;12890:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;4000:87::-;4046:7;4073:6;;;;;;;;;;;4066:13;;4000:87;:::o;12815:24::-;;;;:::o;17191:595::-;17283:20;17332:3;17324:5;:11;17316:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17391:7;17407:11;;17401:3;:17;:37;;17435:3;17401:37;;;17421:11;;17401:37;17391:47;;17449:9;17469:11;;17461:5;:19;:41;;17497:5;17461:41;;;17483:11;;17461:41;17449:53;;17515:30;17571:4;17566:2;:9;;;;:::i;:::-;17548:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17515:61;;17594:6;17603:4;17594:13;;17589:161;17613:2;17609:1;:6;17589:161;;;17662:13;:24;17676:6;17683:1;17676:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17662:24;;;;;;;;;;;;;;;:31;;;17640:9;17650:1;17640:12;;;;;;;;;;;;;;;;;;;;;;:19;;:53;;;;;17729:6;17736:1;17729:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17708;17718:1;17708:12;;;;;;;;;;;;;;;;;;;;;;:18;;:30;;;;;;;;;;;17622:1;17617:6;;;;;:::i;:::-;;;17589:161;;;;17769:9;17762:16;;;;;17191:595;;;;:::o;13997:88::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13470:4:::1;13456:18;;:10;;;;;;;;;;;:18;;;13448:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14072:5:::2;14059:10;;:18;;;;;;;;;;;;;;;;;;13997:88::o:0;12782:24::-;;;;;;;;;;;;;:::o;13030:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4334:238::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4457:1:::1;4437:22;;:8;:22;;;;4415:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4536:28;4555:8;4536:18;:28::i;:::-;4334:238:::0;:::o;4993:125::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5067:43:::1;5094:10;5106:3;5074:5;5067:26;;;;:43;;;;;:::i;:::-;4993:125:::0;;:::o;13060:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12999:22::-;;;;;;;;;;;;;:::o;5126:155::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5190:11:::1;5211:5;5204:23;;;5236:4;5204:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5190:52;;5253:20;5262:5;5269:3;5253:8;:20::i;:::-;4206:1;5126:155:::0;:::o;1539:98::-;1597:7;1628:1;1624;:5;;;;:::i;:::-;1617:12;;1539:98;;;;:::o;1645:::-;1703:7;1734:1;1730;:5;;;;:::i;:::-;1723:12;;1645:98;;;;:::o;3494:::-;3547:7;3574:10;3567:17;;3494:98;:::o;16068:194::-;16143:111;16189:10;16214:7;:5;:7::i;:::-;16236;16150:6;16143:31;;;;:111;;;;;;:::i;:::-;16068:194;;:::o;15974:86::-;16024:7;:5;:7::i;:::-;16016:25;;:36;16042:9;16016:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15974:86::o;4580:191::-;4654:16;4673:6;;;;;;;;;;;4654:25;;4699:8;4690:6;;:17;;;;;;;;;;;;;;;;;;4754:8;4723:40;;4744:8;4723:40;;;;;;;;;;;;4580:191;;:::o;9823:214::-;9906:123;9940:5;9983:23;;;10008:2;10012:5;9960:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9906:19;:123::i;:::-;9823:214;;;:::o;10045:285::-;10189:133;10223:5;10266:27;;;10295:4;10301:2;10305:5;10243:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10189:19;:133::i;:::-;10045:285;;;;:::o;11892:419::-;11973:23;11999:106;12041:4;11999:106;;;;;;;;;;;;;;;;;12007:5;11999:27;;;;:106;;;;;:::i;:::-;11973:132;;12140:1;12120:10;:17;:21;12116:188;;;12195:10;12184:30;;;;;;;;;;;;:::i;:::-;12158:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;12116:188;11892:419;;;:::o;6570:229::-;6707:12;6739:52;6761:6;6769:4;6775:1;6778:12;6739:21;:52::i;:::-;6732:59;;6570:229;;;;;:::o;7171:571::-;7341:12;7413:5;7388:21;:30;;7366:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;7503:18;7514:6;7503:10;:18::i;:::-;7495:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7569:12;7583:23;7610:6;:11;;7629:5;7650:4;7610:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7568:97;;;;7683:51;7700:7;7709:10;7721:12;7683:16;:51::i;:::-;7676:58;;;;7171:571;;;;;;:::o;5759:196::-;5819:4;5836:12;5903:7;5891:20;5883:28;;5946:1;5939:4;:8;5932:15;;;5759:196;;;:::o;9180:550::-;9330:12;9359:7;9355:368;;;9390:10;9383:17;;;;9355:368;9457:1;9437:10;:17;:21;9433:279;;;9540:10;9534:17;9601:15;9588:10;9584:2;9580:19;9573:44;9488:148;9683:12;9676:20;;;;;;;;;;;:::i;:::-;;;;;;;;9180:550;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:139::-;;1381:6;1368:20;1359:29;;1397:33;1424:5;1397:33;:::i;:::-;1349:87;;;;:::o;1459:303::-;;1579:3;1572:4;1564:6;1560:17;1556:27;1546:2;;1597:1;1594;1587:12;1546:2;1637:6;1624:20;1662:94;1752:3;1744:6;1737:4;1729:6;1725:17;1662:94;:::i;:::-;1653:103;;1536:226;;;;;:::o;1785:303::-;;1905:3;1898:4;1890:6;1886:17;1882:27;1872:2;;1923:1;1920;1913:12;1872:2;1963:6;1950:20;1988:94;2078:3;2070:6;2063:4;2055:6;2051:17;1988:94;:::i;:::-;1979:103;;1862:226;;;;;:::o;2094:133::-;;2175:6;2162:20;2153:29;;2191:30;2215:5;2191:30;:::i;:::-;2143:84;;;;:::o;2233:137::-;;2318:6;2312:13;2303:22;;2334:30;2358:5;2334:30;:::i;:::-;2293:77;;;;:::o;2376:139::-;;2460:6;2447:20;2438:29;;2476:33;2503:5;2476:33;:::i;:::-;2428:87;;;;:::o;2521:143::-;;2609:6;2603:13;2594:22;;2625:33;2652:5;2625:33;:::i;:::-;2584:80;;;;:::o;2670:262::-;;2778:2;2766:9;2757:7;2753:23;2749:32;2746:2;;;2794:1;2791;2784:12;2746:2;2837:1;2862:53;2907:7;2898:6;2887:9;2883:22;2862:53;:::i;:::-;2852:63;;2808:117;2736:196;;;;:::o;2938:401::-;;;3060:2;3048:9;3039:7;3035:23;3031:32;3028:2;;;3076:1;3073;3066:12;3028:2;3119:1;3144:53;3189:7;3180:6;3169:9;3165:22;3144:53;:::i;:::-;3134:63;;3090:117;3246:2;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3217:115;3018:321;;;;;:::o;3345:407::-;;;3470:2;3458:9;3449:7;3445:23;3441:32;3438:2;;;3486:1;3483;3476:12;3438:2;3529:1;3554:53;3599:7;3590:6;3579:9;3575:22;3554:53;:::i;:::-;3544:63;;3500:117;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3428:324;;;;;:::o;3758:693::-;;;3933:2;3921:9;3912:7;3908:23;3904:32;3901:2;;;3949:1;3946;3939:12;3901:2;4020:1;4009:9;4005:17;3992:31;4050:18;4042:6;4039:30;4036:2;;;4082:1;4079;4072:12;4036:2;4110:78;4180:7;4171:6;4160:9;4156:22;4110:78;:::i;:::-;4100:88;;3963:235;4265:2;4254:9;4250:18;4237:32;4296:18;4288:6;4285:30;4282:2;;;4328:1;4325;4318:12;4282:2;4356:78;4426:7;4417:6;4406:9;4402:22;4356:78;:::i;:::-;4346:88;;4208:236;3891:560;;;;;:::o;4457:838::-;;;;4649:2;4637:9;4628:7;4624:23;4620:32;4617:2;;;4665:1;4662;4655:12;4617:2;4736:1;4725:9;4721:17;4708:31;4766:18;4758:6;4755:30;4752:2;;;4798:1;4795;4788:12;4752:2;4826:78;4896:7;4887:6;4876:9;4872:22;4826:78;:::i;:::-;4816:88;;4679:235;4981:2;4970:9;4966:18;4953:32;5012:18;5004:6;5001:30;4998:2;;;5044:1;5041;5034:12;4998:2;5072:78;5142:7;5133:6;5122:9;5118:22;5072:78;:::i;:::-;5062:88;;4924:236;5199:2;5225:53;5270:7;5261:6;5250:9;5246:22;5225:53;:::i;:::-;5215:63;;5170:118;4607:688;;;;;:::o;5301:278::-;;5417:2;5405:9;5396:7;5392:23;5388:32;5385:2;;;5433:1;5430;5423:12;5385:2;5476:1;5501:61;5554:7;5545:6;5534:9;5530:22;5501:61;:::i;:::-;5491:71;;5447:125;5375:204;;;;:::o;5585:262::-;;5693:2;5681:9;5672:7;5668:23;5664:32;5661:2;;;5709:1;5706;5699:12;5661:2;5752:1;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5723:117;5651:196;;;;:::o;5853:284::-;;5972:2;5960:9;5951:7;5947:23;5943:32;5940:2;;;5988:1;5985;5978:12;5940:2;6031:1;6056:64;6112:7;6103:6;6092:9;6088:22;6056:64;:::i;:::-;6046:74;;6002:128;5930:207;;;;:::o;6143:407::-;;;6268:2;6256:9;6247:7;6243:23;6239:32;6236:2;;;6284:1;6281;6274:12;6236:2;6327:1;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6298:117;6454:2;6480:53;6525:7;6516:6;6505:9;6501:22;6480:53;:::i;:::-;6470:63;;6425:118;6226:324;;;;;:::o;6556:692::-;;;;;6712:3;6700:9;6691:7;6687:23;6683:33;6680:2;;;6729:1;6726;6719:12;6680:2;6772:1;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6743:117;6899:2;6925:53;6970:7;6961:6;6950:9;6946:22;6925:53;:::i;:::-;6915:63;;6870:118;7027:2;7053:53;7098:7;7089:6;7078:9;7074:22;7053:53;:::i;:::-;7043:63;;6998:118;7155:2;7181:50;7223:7;7214:6;7203:9;7199:22;7181:50;:::i;:::-;7171:60;;7126:115;6670:578;;;;;;;:::o;7254:295::-;;7402:104;7502:3;7494:6;7402:104;:::i;:::-;7538:4;7533:3;7529:14;7515:28;;7392:157;;;;:::o;7555:108::-;7632:24;7650:5;7632:24;:::i;:::-;7627:3;7620:37;7610:53;;:::o;7669:118::-;7756:24;7774:5;7756:24;:::i;:::-;7751:3;7744:37;7734:53;;:::o;7867:964::-;;8073:83;8150:5;8073:83;:::i;:::-;8172:115;8280:6;8275:3;8172:115;:::i;:::-;8165:122;;8311:85;8390:5;8311:85;:::i;:::-;8419:7;8450:1;8435:371;8460:6;8457:1;8454:13;8435:371;;;8536:6;8530:13;8563:121;8680:3;8665:13;8563:121;:::i;:::-;8556:128;;8707:89;8789:6;8707:89;:::i;:::-;8697:99;;8495:311;8482:1;8479;8475:9;8470:14;;8435:371;;;8439:14;8822:3;8815:10;;8049:782;;;;;;;:::o;8837:109::-;8918:21;8933:5;8918:21;:::i;:::-;8913:3;8906:34;8896:50;;:::o;8952:373::-;;9084:38;9116:5;9084:38;:::i;:::-;9138:88;9219:6;9214:3;9138:88;:::i;:::-;9131:95;;9235:52;9280:6;9275:3;9268:4;9261:5;9257:16;9235:52;:::i;:::-;9312:6;9307:3;9303:16;9296:23;;9060:265;;;;;:::o;9331:364::-;;9447:39;9480:5;9447:39;:::i;:::-;9502:71;9566:6;9561:3;9502:71;:::i;:::-;9495:78;;9582:52;9627:6;9622:3;9615:4;9608:5;9604:16;9582:52;:::i;:::-;9659:29;9681:6;9659:29;:::i;:::-;9654:3;9650:39;9643:46;;9423:272;;;;;:::o;9701:370::-;;9864:67;9928:2;9923:3;9864:67;:::i;:::-;9857:74;;9961:34;9957:1;9952:3;9948:11;9941:55;10027:8;10022:2;10017:3;10013:12;10006:30;10062:2;10057:3;10053:12;10046:19;;9847:224;;;:::o;10077:324::-;;10240:67;10304:2;10299:3;10240:67;:::i;:::-;10233:74;;10337:28;10333:1;10328:3;10324:11;10317:49;10392:2;10387:3;10383:12;10376:19;;10223:178;;;:::o;10407:370::-;;10570:67;10634:2;10629:3;10570:67;:::i;:::-;10563:74;;10667:34;10663:1;10658:3;10654:11;10647:55;10733:8;10728:2;10723:3;10719:12;10712:30;10768:2;10763:3;10759:12;10752:19;;10553:224;;;:::o;10783:321::-;;10946:67;11010:2;11005:3;10946:67;:::i;:::-;10939:74;;11043:25;11039:1;11034:3;11030:11;11023:46;11095:2;11090:3;11086:12;11079:19;;10929:175;;;:::o;11110:370::-;;11273:67;11337:2;11332:3;11273:67;:::i;:::-;11266:74;;11370:34;11366:1;11361:3;11357:11;11350:55;11436:8;11431:2;11426:3;11422:12;11415:30;11471:2;11466:3;11462:12;11455:19;;11256:224;;;:::o;11486:379::-;;11649:67;11713:2;11708:3;11649:67;:::i;:::-;11642:74;;11746:34;11742:1;11737:3;11733:11;11726:55;11812:17;11807:2;11802:3;11798:12;11791:39;11856:2;11851:3;11847:12;11840:19;;11632:233;;;:::o;11871:318::-;;12034:67;12098:2;12093:3;12034:67;:::i;:::-;12027:74;;12131:22;12127:1;12122:3;12118:11;12111:43;12180:2;12175:3;12171:12;12164:19;;12017:172;;;:::o;12195:369::-;;12358:67;12422:2;12417:3;12358:67;:::i;:::-;12351:74;;12455:34;12451:1;12446:3;12442:11;12435:55;12521:7;12516:2;12511:3;12507:12;12500:29;12555:2;12550:3;12546:12;12539:19;;12341:223;;;:::o;12570:330::-;;12733:67;12797:2;12792:3;12733:67;:::i;:::-;12726:74;;12830:34;12826:1;12821:3;12817:11;12810:55;12891:2;12886:3;12882:12;12875:19;;12716:184;;;:::o;12906:327::-;;13069:67;13133:2;13128:3;13069:67;:::i;:::-;13062:74;;13166:31;13162:1;13157:3;13153:11;13146:52;13224:2;13219:3;13215:12;13208:19;;13052:181;;;:::o;13239:321::-;;13402:67;13466:2;13461:3;13402:67;:::i;:::-;13395:74;;13499:25;13495:1;13490:3;13486:11;13479:46;13551:2;13546:3;13542:12;13535:19;;13385:175;;;:::o;13566:374::-;;13729:67;13793:2;13788:3;13729:67;:::i;:::-;13722:74;;13826:34;13822:1;13817:3;13813:11;13806:55;13892:12;13887:2;13882:3;13878:12;13871:34;13931:2;13926:3;13922:12;13915:19;;13712:228;;;:::o;14016:508::-;14161:4;14156:3;14152:14;14250:4;14243:5;14239:16;14233:23;14269:63;14326:4;14321:3;14317:14;14303:12;14269:63;:::i;:::-;14176:166;14425:4;14418:5;14414:16;14408:23;14444:63;14501:4;14496:3;14492:14;14478:12;14444:63;:::i;:::-;14352:165;14130:394;;;:::o;14530:108::-;14607:24;14625:5;14607:24;:::i;:::-;14602:3;14595:37;14585:53;;:::o;14644:118::-;14731:24;14749:5;14731:24;:::i;:::-;14726:3;14719:37;14709:53;;:::o;14768:271::-;;14920:93;15009:3;15000:6;14920:93;:::i;:::-;14913:100;;15030:3;15023:10;;14902:137;;;;:::o;15045:222::-;;15176:2;15165:9;15161:18;15153:26;;15189:71;15257:1;15246:9;15242:17;15233:6;15189:71;:::i;:::-;15143:124;;;;:::o;15273:442::-;;15460:2;15449:9;15445:18;15437:26;;15473:71;15541:1;15530:9;15526:17;15517:6;15473:71;:::i;:::-;15554:72;15622:2;15611:9;15607:18;15598:6;15554:72;:::i;:::-;15636;15704:2;15693:9;15689:18;15680:6;15636:72;:::i;:::-;15427:288;;;;;;:::o;15721:332::-;;15880:2;15869:9;15865:18;15857:26;;15893:71;15961:1;15950:9;15946:17;15937:6;15893:71;:::i;:::-;15974:72;16042:2;16031:9;16027:18;16018:6;15974:72;:::i;:::-;15847:206;;;;;:::o;16059:489::-;;16298:2;16287:9;16283:18;16275:26;;16347:9;16341:4;16337:20;16333:1;16322:9;16318:17;16311:47;16375:166;16536:4;16527:6;16375:166;:::i;:::-;16367:174;;16265:283;;;;:::o;16554:210::-;;16679:2;16668:9;16664:18;16656:26;;16692:65;16754:1;16743:9;16739:17;16730:6;16692:65;:::i;:::-;16646:118;;;;:::o;16770:313::-;;16921:2;16910:9;16906:18;16898:26;;16970:9;16964:4;16960:20;16956:1;16945:9;16941:17;16934:47;16998:78;17071:4;17062:6;16998:78;:::i;:::-;16990:86;;16888:195;;;;:::o;17089:419::-;;17293:2;17282:9;17278:18;17270:26;;17342:9;17336:4;17332:20;17328:1;17317:9;17313:17;17306:47;17370:131;17496:4;17370:131;:::i;:::-;17362:139;;17260:248;;;:::o;17514:419::-;;17718:2;17707:9;17703:18;17695:26;;17767:9;17761:4;17757:20;17753:1;17742:9;17738:17;17731:47;17795:131;17921:4;17795:131;:::i;:::-;17787:139;;17685:248;;;:::o;17939:419::-;;18143:2;18132:9;18128:18;18120:26;;18192:9;18186:4;18182:20;18178:1;18167:9;18163:17;18156:47;18220:131;18346:4;18220:131;:::i;:::-;18212:139;;18110:248;;;:::o;18364:419::-;;18568:2;18557:9;18553:18;18545:26;;18617:9;18611:4;18607:20;18603:1;18592:9;18588:17;18581:47;18645:131;18771:4;18645:131;:::i;:::-;18637:139;;18535:248;;;:::o;18789:419::-;;18993:2;18982:9;18978:18;18970:26;;19042:9;19036:4;19032:20;19028:1;19017:9;19013:17;19006:47;19070:131;19196:4;19070:131;:::i;:::-;19062:139;;18960:248;;;:::o;19214:419::-;;19418:2;19407:9;19403:18;19395:26;;19467:9;19461:4;19457:20;19453:1;19442:9;19438:17;19431:47;19495:131;19621:4;19495:131;:::i;:::-;19487:139;;19385:248;;;:::o;19639:419::-;;19843:2;19832:9;19828:18;19820:26;;19892:9;19886:4;19882:20;19878:1;19867:9;19863:17;19856:47;19920:131;20046:4;19920:131;:::i;:::-;19912:139;;19810:248;;;:::o;20064:419::-;;20268:2;20257:9;20253:18;20245:26;;20317:9;20311:4;20307:20;20303:1;20292:9;20288:17;20281:47;20345:131;20471:4;20345:131;:::i;:::-;20337:139;;20235:248;;;:::o;20489:419::-;;20693:2;20682:9;20678:18;20670:26;;20742:9;20736:4;20732:20;20728:1;20717:9;20713:17;20706:47;20770:131;20896:4;20770:131;:::i;:::-;20762:139;;20660:248;;;:::o;20914:419::-;;21118:2;21107:9;21103:18;21095:26;;21167:9;21161:4;21157:20;21153:1;21142:9;21138:17;21131:47;21195:131;21321:4;21195:131;:::i;:::-;21187:139;;21085:248;;;:::o;21339:419::-;;21543:2;21532:9;21528:18;21520:26;;21592:9;21586:4;21582:20;21578:1;21567:9;21563:17;21556:47;21620:131;21746:4;21620:131;:::i;:::-;21612:139;;21510:248;;;:::o;21764:419::-;;21968:2;21957:9;21953:18;21945:26;;22017:9;22011:4;22007:20;22003:1;21992:9;21988:17;21981:47;22045:131;22171:4;22045:131;:::i;:::-;22037:139;;21935:248;;;:::o;22189:222::-;;22320:2;22309:9;22305:18;22297:26;;22333:71;22401:1;22390:9;22386:17;22377:6;22333:71;:::i;:::-;22287:124;;;;:::o;22417:320::-;;22570:2;22559:9;22555:18;22547:26;;22583:71;22651:1;22640:9;22636:17;22627:6;22583:71;:::i;:::-;22664:66;22726:2;22715:9;22711:18;22702:6;22664:66;:::i;:::-;22537:200;;;;;:::o;22743:283::-;;22809:2;22803:9;22793:19;;22851:4;22843:6;22839:17;22958:6;22946:10;22943:22;22922:18;22910:10;22907:34;22904:62;22901:2;;;22969:18;;:::i;:::-;22901:2;23009:10;23005:2;22998:22;22783:243;;;;:::o;23032:311::-;;23199:18;23191:6;23188:30;23185:2;;;23221:18;;:::i;:::-;23185:2;23271:4;23263:6;23259:17;23251:25;;23331:4;23325;23321:15;23313:23;;23114:229;;;:::o;23349:311::-;;23516:18;23508:6;23505:30;23502:2;;;23538:18;;:::i;:::-;23502:2;23588:4;23580:6;23576:17;23568:25;;23648:4;23642;23638:15;23630:23;;23431:229;;;:::o;23666:161::-;;23785:3;23777:11;;23815:4;23810:3;23806:14;23798:22;;23767:60;;;:::o;23833:143::-;;23963:5;23957:12;23947:22;;23936:40;;;:::o;23982:98::-;;24067:5;24061:12;24051:22;;24040:40;;;:::o;24086:99::-;;24172:5;24166:12;24156:22;;24145:40;;;:::o;24191:142::-;;24322:4;24317:3;24313:14;24305:22;;24295:38;;;:::o;24339:213::-;;24501:6;24496:3;24489:19;24541:4;24536:3;24532:14;24517:29;;24479:73;;;;:::o;24558:147::-;;24696:3;24681:18;;24671:34;;;;:::o;24711:169::-;;24829:6;24824:3;24817:19;24869:4;24864:3;24860:14;24845:29;;24807:73;;;;:::o;24886:305::-;;24945:20;24963:1;24945:20;:::i;:::-;24940:25;;24979:20;24997:1;24979:20;:::i;:::-;24974:25;;25133:1;25065:66;25061:74;25058:1;25055:81;25052:2;;;25139:18;;:::i;:::-;25052:2;25183:1;25180;25176:9;25169:16;;24930:261;;;;:::o;25197:185::-;;25254:20;25272:1;25254:20;:::i;:::-;25249:25;;25288:20;25306:1;25288:20;:::i;:::-;25283:25;;25327:1;25317:2;;25332:18;;:::i;:::-;25317:2;25374:1;25371;25367:9;25362:14;;25239:143;;;;:::o;25388:848::-;;;25480:6;25471:15;;25504:5;25495:14;;25518:712;25539:1;25529:8;25526:15;25518:712;;;25634:4;25629:3;25625:14;25619:4;25616:24;25613:2;;;25643:18;;:::i;:::-;25613:2;25693:1;25683:8;25679:16;25676:2;;;26108:4;26101:5;26097:16;26088:25;;25676:2;26158:4;26152;26148:15;26140:23;;26188:32;26211:8;26188:32;:::i;:::-;26176:44;;25518:712;;;25461:775;;;;;;;:::o;26242:285::-;;26326:23;26344:4;26326:23;:::i;:::-;26318:31;;26370:27;26388:8;26370:27;:::i;:::-;26358:39;;26416:104;26453:66;26443:8;26437:4;26416:104;:::i;:::-;26407:113;;26308:219;;;;:::o;26533:1073::-;;26778:8;26768:2;;26799:1;26790:10;;26801:5;;26768:2;26827:4;26817:2;;26844:1;26835:10;;26846:5;;26817:2;26913:4;26961:1;26956:27;;;;26997:1;26992:191;;;;26906:277;;26956:27;26974:1;26965:10;;26976:5;;;26992:191;27037:3;27027:8;27024:17;27021:2;;;27044:18;;:::i;:::-;27021:2;27093:8;27090:1;27086:16;27077:25;;27128:3;27121:5;27118:14;27115:2;;;27135:18;;:::i;:::-;27115:2;27168:5;;;26906:277;;27292:2;27282:8;27279:16;27273:3;27267:4;27264:13;27260:36;27242:2;27232:8;27229:16;27224:2;27218:4;27215:12;27211:35;27195:111;27192:2;;;27348:8;27342:4;27338:19;27329:28;;27383:3;27376:5;27373:14;27370:2;;;27390:18;;:::i;:::-;27370:2;27423:5;;27192:2;27463:42;27501:3;27491:8;27485:4;27482:1;27463:42;:::i;:::-;27448:57;;;;27537:4;27532:3;27528:14;27521:5;27518:25;27515:2;;;27546:18;;:::i;:::-;27515:2;27595:4;27588:5;27584:16;27575:25;;26593:1013;;;;;;:::o;27612:348::-;;27675:20;27693:1;27675:20;:::i;:::-;27670:25;;27709:20;27727:1;27709:20;:::i;:::-;27704:25;;27897:1;27829:66;27825:74;27822:1;27819:81;27814:1;27807:9;27800:17;27796:105;27793:2;;;27904:18;;:::i;:::-;27793:2;27952:1;27949;27945:9;27934:20;;27660:300;;;;:::o;27966:191::-;;28026:20;28044:1;28026:20;:::i;:::-;28021:25;;28060:20;28078:1;28060:20;:::i;:::-;28055:25;;28099:1;28096;28093:8;28090:2;;;28104:18;;:::i;:::-;28090:2;28149:1;28146;28142:9;28134:17;;28011:146;;;;:::o;28163:96::-;;28229:24;28247:5;28229:24;:::i;:::-;28218:35;;28208:51;;;:::o;28265:90::-;;28342:5;28335:13;28328:21;28317:32;;28307:48;;;:::o;28361:126::-;;28438:42;28431:5;28427:54;28416:65;;28406:81;;;:::o;28493:77::-;;28559:5;28548:16;;28538:32;;;:::o;28576:307::-;28644:1;28654:113;28668:6;28665:1;28662:13;28654:113;;;28753:1;28748:3;28744:11;28738:18;28734:1;28729:3;28725:11;28718:39;28690:2;28687:1;28683:10;28678:15;;28654:113;;;28785:6;28782:1;28779:13;28776:2;;;28865:1;28856:6;28851:3;28847:16;28840:27;28776:2;28625:258;;;;:::o;28889:233::-;;28951:24;28969:5;28951:24;:::i;:::-;28942:33;;28997:66;28990:5;28987:77;28984:2;;;29067:18;;:::i;:::-;28984:2;29114:1;29107:5;29103:13;29096:20;;28932:190;;;:::o;29128:180::-;29176:77;29173:1;29166:88;29273:4;29270:1;29263:15;29297:4;29294:1;29287:15;29314:180;29362:77;29359:1;29352:88;29459:4;29456:1;29449:15;29483:4;29480:1;29473:15;29500:180;29548:77;29545:1;29538:88;29645:4;29642:1;29635:15;29669:4;29666:1;29659:15;29686:102;;29778:2;29774:7;29769:2;29762:5;29758:14;29754:28;29744:38;;29734:54;;;:::o;29794:102::-;;29883:5;29880:1;29876:13;29855:34;;29845:51;;;:::o;29902:122::-;29975:24;29993:5;29975:24;:::i;:::-;29968:5;29965:35;29955:2;;30014:1;30011;30004:12;29955:2;29945:79;:::o;30030:116::-;30100:21;30115:5;30100:21;:::i;:::-;30093:5;30090:32;30080:2;;30136:1;30133;30126:12;30080:2;30070:76;:::o;30152:122::-;30225:24;30243:5;30225:24;:::i;:::-;30218:5;30215:35;30205:2;;30264:1;30261;30254:12;30205:2;30195:79;:::o
Swarm Source
ipfs://ad7d8ebe92da40c52f9c358ce39f1486eab31992a771954a5b43cf491f683e5d
Loading...
Loading
Loading...
Loading
Net Worth in USD
$4.42
Net Worth in ETH
0.00214
Token Allocations
ETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,067.05 | 0.00214 | $4.42 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.