ETH Price: $3,268.71 (+4.66%)
Gas: 2 Gwei

Contract

0xEe111E3A87e6Ac9a98B52d6fDc7a293AF4CfC3F5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Old Token Mi...175956182023-07-01 0:21:59391 days ago1688170919IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0007152615.43352009
Set Old Token Mi...175955412023-07-01 0:06:23391 days ago1688169983IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0006587214.21346203
Set Old Token Mi...175955052023-06-30 23:59:11391 days ago1688169551IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0007036315.18248242
Set Old Token Mi...175954262023-06-30 23:43:11391 days ago1688168591IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0007488116.15737396
Set Old Token Mi...175953882023-06-30 23:35:35391 days ago1688168135IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0007398715.9645109
Berc Vote175953582023-06-30 23:29:35391 days ago1688167775IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0192127315.02092427
Set Old Token Mi...175953512023-06-30 23:28:11391 days ago1688167691IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0007985917.23606797
Set Old Token Mi...175946702023-06-30 21:10:35391 days ago1688159435IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0012898927.83244826
Pay Berc Vote175918302023-06-30 11:35:23392 days ago1688124923IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0309342823.58279731
Set Berc Address175917752023-06-30 11:24:23392 days ago1688124263IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0008848619.18906098
Set Berc Store A...175917742023-06-30 11:24:11392 days ago1688124251IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0008416418.25584365
Set Voting Perio...175917702023-06-30 11:23:23392 days ago1688124203IN
0xEe111E3A...AF4CfC3F5
0 ETH0.000541618.88519416
Set Old Token Mi...175917662023-06-30 11:22:35392 days ago1688124155IN
0xEe111E3A...AF4CfC3F5
0 ETH0.0009453220.4028332
0x60806040175917552023-06-30 11:20:23392 days ago1688124023IN
 Create: VotingContract
0 ETH0.0533864118.60544102

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VotingContract

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-30
*/

// SPDX-License-Identifier: MIT

//'########::'########:'########:::'######:::'#######::::'#####:::
//##.... ##: ##.....:: ##.... ##:'##... ##:'##.... ##::'##.. ##::
//##:::: ##: ##::::::: ##:::: ##: ##:::..::..::::: ##:'##:::: ##:
//########:: ######::: ########:: ##::::::::'#######:: ##:::: ##:
//##.... ##: ##...:::: ##.. ##::: ##:::::::'##:::::::: ##:::: ##:
//##:::: ##: ##::::::: ##::. ##:: ##::: ##: ##::::::::. ##:: ##::
//########:: ########: ##:::. ##:. ######:: #########::. #####:::
//........:::........::..:::::..:::......:::.........::::.....::::
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;
    }
}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        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);
    }
}

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface Berc20Store {
    struct TokenInfo {
        address tokenAddress;
        string logo;
        string name;
        string symbol;
        uint256 totalSupply;
        uint256 maxMintCount;
        uint256 maxMintPerAddress;
        uint256 mintPrice;
        address creator;
        uint256 progress;
        uint256[4] limits;  // 0 - erc20,1 - erc721,2 - erc1155,3 - white list
    }

    struct TokenMsg {
        string description;
        string logoUrl;
        string bannerUrl;
        string website;
        string twitter;
        string telegram;
        string discord;
        string detailUrl;
    }

    function getTokenBase(address tokenAddress) external view returns (TokenInfo memory tokenInfo, TokenMsg memory tokenMsg);
}

interface IUniswapV2Pair {
    function sync() external;
}

interface IWETH {
    function deposit() external payable;
    function withdraw(uint256 amount) external;
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

interface BlackErc20 {
    function getMintedCounts() external view returns (uint256);
    function getAllContractTypes() external view returns (uint256[] memory);
}

contract VotingContract  is Ownable {

    struct Candidate {
        address candidateAddress;
        uint256 votes;
        uint256 counts;
        uint256 top10EndTime;
    }

    enum VoteStatus {
        PayVote,
        BercVote
    }

    struct VoteData{
        address tokenAddress;
        string description;
        string logoUrl;
        string bannerUrl;
        string website;
        string twitter;
        string telegram;
        string discord;
        string detailUrl;       
        string name;
        string symbol;
        uint256 totalSupply;
        uint256 maxMintCount;
        uint256 maxMintPerAddress;
        uint256 mintPrice;    
        address creator;
        uint256 progress;
        uint256[4] limits;    
        uint256 votes;
        uint256 counts;
        uint256 top10EndTime;
    }


    address public devAddress;

    Candidate[] public payCandidates;
    Candidate[] public bercCandidates;

    mapping(address => uint256) public addressIndexs;
    uint256 public indexs=0;

    mapping(address=>uint256[]) public payVotesByAddress; 
    uint256[] public payTotalVotesByAddress; 

    mapping(address=>uint256[])  public bercVotesByAddress;
    uint256[] public bercTotalVotesByAddress;

    bool public votingActive;

    uint256 public currentPayStart;
    uint256 public currentBercStart;
    uint256 public votingPeriod;

    address public bercAddress;
    address public fundAddress = 0xc6Cec2dA269Bf0eE69c539407b227AF2cb13931e;
    address public bercLpAddress;
    address public bercStoreAddress;

    mapping(address => uint256) public oldTokenMintedNums;

    constructor() {
        votingActive = true;
        currentPayStart = block.timestamp;
        currentBercStart = block.timestamp;
        votingPeriod = 40000;
    }

   function payBercVote(address candidateAddress,uint256 _amount) public {
        require(votingActive, "Voting is not active.");
        require(candidateAddress != address(0), "Invalid candidate address.");
        Berc20Store berc20Store = Berc20Store(bercStoreAddress);
        (Berc20Store.TokenInfo memory tokenInfo, Berc20Store.TokenMsg memory tokenMsg) = berc20Store.getTokenBase(candidateAddress);
        require(tokenInfo.tokenAddress!= address(0),"illegal address!");
        require(_amount >0, "amount error");

        if (block.timestamp >= currentPayStart + votingPeriod) {
            currentPayStart = block.timestamp;
            resetVotes(candidateAddress,VoteStatus.PayVote);
        }

        IERC20 token = IERC20(bercAddress);
        require(token.transferFrom(msg.sender, fundAddress, _amount), "Transfer failed");

        bool candidateExists = false;
        for (uint256 i = 0; i < payCandidates.length; i++) {
            if (payCandidates[i].candidateAddress == candidateAddress) {
                payCandidates[i].votes += _amount;
                payCandidates[i].counts += 1;
                candidateExists = true;
                break;
            }
        }

        if (!candidateExists) {
            payCandidates.push(Candidate(candidateAddress, _amount,1,currentPayStart + votingPeriod));
        }

        if (payVotesByAddress[candidateAddress].length == 0) {
            payVotesByAddress[candidateAddress] = new uint256[](200);
            payTotalVotesByAddress = new uint256[](200);
        }
        if (addressIndexs[msg.sender]==0){
            addressIndexs[msg.sender] = indexs;
            indexs += 1;
        }
        payVotesByAddress[candidateAddress][addressIndexs[msg.sender]]+=_amount;
        payTotalVotesByAddress[addressIndexs[msg.sender]] += _amount;

        sortCandidates(VoteStatus.PayVote);
    }

    function bercVote(address candidateAddress, uint256 voteAmount) public {
        require(votingActive, "not active!");
        require(candidateAddress != address(0), "illegal address!");
        Berc20Store berc20Store = Berc20Store(bercStoreAddress);
        (Berc20Store.TokenInfo memory tokenInfo, Berc20Store.TokenMsg memory tokenMsg) = berc20Store.getTokenBase(candidateAddress);
        require(tokenInfo.tokenAddress!= address(0),"illegal address!");

        IERC20 token = IERC20(bercAddress);
        uint256 voterBalance = token.balanceOf(msg.sender);
        require(voteAmount > 0, "not illegal amount");
        require(voteAmount <= voterBalance, "Insufficient margin");
        if(bercVotesByAddress[candidateAddress].length>0){
            uint256 remainingVotes = voterBalance - bercVotesByAddress[candidateAddress][addressIndexs[msg.sender]];
            require(voteAmount <= remainingVotes, "over remain vote amounts");
        }
        if (block.timestamp >= currentBercStart + votingPeriod) {
            currentBercStart = block.timestamp;
            resetVotes(candidateAddress,VoteStatus.BercVote);
        }

        bool candidateExists = false;
        for (uint256 i = 0; i < bercCandidates.length; i++) {
            if (bercCandidates[i].candidateAddress == candidateAddress) {
                bercCandidates[i].votes += voteAmount;
                bercCandidates[i].counts += 1;
                candidateExists = true;
                break;
            }
        }

        if (!candidateExists) {
            bercCandidates.push(Candidate(candidateAddress, voteAmount,1,currentPayStart + votingPeriod));
        }

                
        if (bercVotesByAddress[candidateAddress].length == 0) {
            bercVotesByAddress[candidateAddress] = new uint256[](200);
            bercTotalVotesByAddress = new uint256[](200);
        }
        if (addressIndexs[msg.sender]==0){
            addressIndexs[msg.sender] = indexs;
            indexs += 1;
        }

        bercVotesByAddress[candidateAddress][addressIndexs[msg.sender]]+=voteAmount;
        bercTotalVotesByAddress[addressIndexs[msg.sender]] += voteAmount;

        sortCandidates(VoteStatus.BercVote);
    }

    function sortCandidates(VoteStatus voteStatus) internal {
        if (voteStatus == VoteStatus.PayVote) {
            uint256 count = payCandidates.length;
            for (uint256 i = 0; i < count - 1; i++) {
                uint256 maxVotesIndex = i;
                for (uint256 j = i + 1; j < count; j++) {
                    if (payCandidates[j].votes > payCandidates[maxVotesIndex].votes) {
                        maxVotesIndex = j;
                    }
                }
                if (maxVotesIndex != i) {
                    Candidate memory temp = payCandidates[i];
                    payCandidates[i] = payCandidates[maxVotesIndex];
                    payCandidates[maxVotesIndex] = temp;
                }
            }
        } else if (voteStatus == VoteStatus.BercVote) {
            uint256 count = bercCandidates.length;
            for (uint256 i = 0; i < count - 1; i++) {
                uint256 maxVotesIndex = i;
                for (uint256 j = i + 1; j < count; j++) {
                    if (bercCandidates[j].votes > bercCandidates[maxVotesIndex].votes) {
                        maxVotesIndex = j;
                    }
                }
                if (maxVotesIndex != i) {
                    Candidate memory temp = bercCandidates[i];
                    bercCandidates[i] = bercCandidates[maxVotesIndex];
                    bercCandidates[maxVotesIndex] = temp;
                }
            }
        }
    }


    function resetVotes(address candidateAddress,VoteStatus voteStatus) internal {
        if (voteStatus == VoteStatus.PayVote) {
            for (uint256 i = 0; i < payCandidates.length; i++) {
                payCandidates[i].votes = 0;
                payCandidates[i].counts = 0;
                payCandidates[i].top10EndTime = block.timestamp + votingPeriod;
            }
            delete payVotesByAddress[candidateAddress];
            delete payTotalVotesByAddress;
        } else if (voteStatus == VoteStatus.BercVote) {
            for (uint256 i = 0; i < bercCandidates.length; i++) {
                bercCandidates[i].votes = 0;
                bercCandidates[i].counts = 0;
                bercCandidates[i].top10EndTime = block.timestamp + votingPeriod;
            }
            delete bercVotesByAddress[candidateAddress];
            delete bercTotalVotesByAddress;
        }
    }

    function calculateTotalVotes(VoteStatus voteStatus,address contractAddress) public view returns (uint256) {
        uint256 totalVotes = 0;
        Candidate[] memory candidates;
        if (voteStatus == VoteStatus.PayVote) {
            candidates = payCandidates;
        } else if (voteStatus == VoteStatus.BercVote) {
            candidates = bercCandidates;   
        }    
        for (uint256 i = 0; i < candidates.length; i++) {
            if (candidates[i].candidateAddress == contractAddress) {
                totalVotes = candidates[i].votes;
                break;
            }
        }
        return totalVotes;
    }

    function getLastVotes(VoteStatus voteStatus) public view returns (uint256) {
        uint256 tenVotes = 0;
        Candidate[] memory candidates;
        if (voteStatus == VoteStatus.PayVote) {
            candidates = payCandidates;
        } else if (voteStatus == VoteStatus.BercVote) {
            candidates = bercCandidates;   
        }   
        if (candidates.length >= 10) {
            tenVotes = candidates[9].votes;
        }else if (candidates.length>0&&candidates.length<10) {
            tenVotes = candidates[candidates.length-1].votes;
        }
        return tenVotes;
    }

    function getTopCandidates(VoteStatus voteStatus) public view returns (VoteData[] memory) {
        Candidate[] memory candidates;
        if (voteStatus == VoteStatus.PayVote) {
            candidates = payCandidates;
        } else if (voteStatus == VoteStatus.BercVote) {
            candidates = bercCandidates;   
        }    
        uint256 count = candidates.length;
        uint256 topCount = count < 10 ? count : 10;

        VoteData[] memory topCandidates = new VoteData[](topCount);
        for (uint256 i = 0; i < topCount; i++) {
            Berc20Store berc20Store = Berc20Store(bercStoreAddress);
            (Berc20Store.TokenInfo memory tokenInfo, Berc20Store.TokenMsg memory tokenMsg) = berc20Store.getTokenBase(candidates[i].candidateAddress);
            uint256 progress = calculateTokenProgress(tokenInfo.tokenAddress,tokenInfo.maxMintCount);
            topCandidates[i].tokenAddress = tokenInfo.tokenAddress;
            topCandidates[i].description = tokenMsg.description;
            topCandidates[i].logoUrl = tokenMsg.logoUrl;
            topCandidates[i].bannerUrl = tokenMsg.bannerUrl;
            topCandidates[i].website = tokenMsg.website;
            topCandidates[i].twitter = tokenMsg.twitter;
            topCandidates[i].telegram = tokenMsg.telegram;
            topCandidates[i].discord = tokenMsg.discord;
            topCandidates[i].detailUrl = tokenMsg.detailUrl;
            topCandidates[i].name = tokenInfo.name;
            topCandidates[i].symbol = tokenInfo.symbol;
            topCandidates[i].totalSupply = tokenInfo.totalSupply;
            topCandidates[i].maxMintCount = tokenInfo.maxMintCount;
            topCandidates[i].maxMintPerAddress = tokenInfo.maxMintPerAddress;
            topCandidates[i].mintPrice = tokenInfo.mintPrice;
            topCandidates[i].creator = tokenInfo.creator;
            topCandidates[i].progress = progress;
            topCandidates[i].limits = tokenInfo.limits; 
            topCandidates[i].votes = candidates[i].votes;  
            topCandidates[i].counts = candidates[i].counts;  
            topCandidates[i].top10EndTime = candidates[i].top10EndTime;  
        }
        return topCandidates;
    }

    function getVoteData(address contractAddress,address user) public view returns (uint256[7] memory) {
        uint256 payVotes = payVotesByAddress[contractAddress][addressIndexs[user]];
        uint256 bercVotes = bercVotesByAddress[contractAddress][addressIndexs[user]];

        uint256 totalPayVotes = calculateTotalVotes(VoteStatus.PayVote,contractAddress);
        uint256 totalBercVotes = calculateTotalVotes(VoteStatus.BercVote,contractAddress);

        uint256 tenPayVotes = getLastVotes(VoteStatus.PayVote);
        uint256 tenBercVotes = getLastVotes(VoteStatus.BercVote);

        IERC20 berc = IERC20(bercAddress);
        uint256 voterBalance = berc.balanceOf(user);
        return [payVotes,totalPayVotes,tenPayVotes,bercVotes,totalBercVotes,tenBercVotes,voterBalance-bercVotes];
    }

    function getEndVoteTime()public view returns(uint256,uint256){
        return (currentPayStart+votingPeriod,currentBercStart+votingPeriod);
    } 

    function setVotingActive(bool _votingActive)external onlyOwner {
        votingActive = _votingActive;
    }

    function setBercStoreAddress(address _bercStoreAddress)external onlyOwner {
        bercStoreAddress = _bercStoreAddress;
    }

    function setBercAddress(address _bercAddress)external onlyOwner {
        bercAddress = _bercAddress;
    }


    function setVotingPeriod(uint256 _votingPeriod)external onlyOwner {
        votingPeriod = _votingPeriod;
    }
    
    function setDevAddress(address dev) external onlyOwner {
        devAddress = dev;
    }

    function setfundAddress(address fund) external onlyOwner {
        fundAddress = fund;
    }


    function setBercLpAddress(address _bercLpAddress) external onlyOwner {
        bercLpAddress = _bercLpAddress;
    }

    function calculateTokenProgress(address tokenAddress, uint256 maxMintCount) internal view returns (uint256) {
        uint256 tokenProgress = 0;
        if(oldTokenMintedNums[tokenAddress]==0){
            BlackErc20 blackErc20 = BlackErc20(tokenAddress);
            uint256 mintedCount = blackErc20.getMintedCounts();
            tokenProgress = (mintedCount * 10000) / maxMintCount;
        }else {
            tokenProgress = oldTokenMintedNums[tokenAddress] * 10000 / maxMintCount;
        }
        return tokenProgress;
    }

    function setOldTokenMintedNum(address tokenAddress, uint256 mintedNum) external  onlyOwner {
        oldTokenMintedNums[tokenAddress] = mintedNum;
    }

    function devAward() external onlyOwner{
        uint256 balance = address(this).balance;
        require(balance > 0, "Contract has no ETH balance.");
        address payable sender = payable(devAddress);
        sender.transfer(balance);
    }
}

Contract Security Audit

Contract ABI

[{"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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressIndexs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bercAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bercCandidates","outputs":[{"internalType":"address","name":"candidateAddress","type":"address"},{"internalType":"uint256","name":"votes","type":"uint256"},{"internalType":"uint256","name":"counts","type":"uint256"},{"internalType":"uint256","name":"top10EndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bercLpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bercStoreAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bercTotalVotesByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"candidateAddress","type":"address"},{"internalType":"uint256","name":"voteAmount","type":"uint256"}],"name":"bercVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"bercVotesByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum VotingContract.VoteStatus","name":"voteStatus","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"}],"name":"calculateTotalVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentBercStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPayStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEndVoteTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum VotingContract.VoteStatus","name":"voteStatus","type":"uint8"}],"name":"getLastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum VotingContract.VoteStatus","name":"voteStatus","type":"uint8"}],"name":"getTopCandidates","outputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"logoUrl","type":"string"},{"internalType":"string","name":"bannerUrl","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"twitter","type":"string"},{"internalType":"string","name":"telegram","type":"string"},{"internalType":"string","name":"discord","type":"string"},{"internalType":"string","name":"detailUrl","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"maxMintCount","type":"uint256"},{"internalType":"uint256","name":"maxMintPerAddress","type":"uint256"},{"internalType":"uint256","name":"mintPrice","type":"uint256"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"progress","type":"uint256"},{"internalType":"uint256[4]","name":"limits","type":"uint256[4]"},{"internalType":"uint256","name":"votes","type":"uint256"},{"internalType":"uint256","name":"counts","type":"uint256"},{"internalType":"uint256","name":"top10EndTime","type":"uint256"}],"internalType":"struct VotingContract.VoteData[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getVoteData","outputs":[{"internalType":"uint256[7]","name":"","type":"uint256[7]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"indexs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oldTokenMintedNums","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"candidateAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"payBercVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payCandidates","outputs":[{"internalType":"address","name":"candidateAddress","type":"address"},{"internalType":"uint256","name":"votes","type":"uint256"},{"internalType":"uint256","name":"counts","type":"uint256"},{"internalType":"uint256","name":"top10EndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payTotalVotesByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"payVotesByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bercAddress","type":"address"}],"name":"setBercAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bercLpAddress","type":"address"}],"name":"setBercLpAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bercStoreAddress","type":"address"}],"name":"setBercStoreAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"mintedNum","type":"uint256"}],"name":"setOldTokenMintedNum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_votingActive","type":"bool"}],"name":"setVotingActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votingPeriod","type":"uint256"}],"name":"setVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fund","type":"address"}],"name":"setfundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"votingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040525f600555600f80546001600160a01b03191673c6cec2da269bf0ee69c539407b227af2cb13931e179055348015610039575f80fd5b5061004333610064565b600a805460ff1916600117905542600b819055600c55619c40600d556100b3565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61305b80620000c15f395ff3fe608060405234801561000f575f80fd5b506004361061021e575f3560e01c80638da5cb5b1161012a578063d0d41fe1116100b4578063e82bef2911610079578063e82bef29146104d1578063ea0217cf146104e4578063f26434ed146104f7578063f2fde38b14610517578063febd3de41461052a575f80fd5b8063d0d41fe11461046f578063d4c1b37914610482578063d776496714610495578063dc2a7efe1461049e578063e650b97d146104be575f80fd5b8063ae35b881116100fa578063ae35b8811461041a578063c2be68551461042d578063cc2dba4214610440578063cdc23c2314610453578063d006882d1461045c575f80fd5b80638da5cb5b146103c5578063a0f5e0a2146103d5578063a151939f146103f4578063a7956f0d14610407575f80fd5b806349a1ccd6116101ab57806365edf3071161017b57806365edf3071461037c5780636cccb1901461038f578063715018a6146103a2578063805bc643146103aa578063859c2af1146103bd575f80fd5b806349a1ccd61461032457806353339c60146103375780635e16225014610356578063623a789714610369575f80fd5b8063345a2eff116101f1578063345a2eff146102915780633ad10ef61461029a578063408e2727146102ad57806344207379146102ca57806344a62a74146102e7575f80fd5b806302a251a31461022257806315b050931461023e578063223d16d01461025157806329b7d44e14610266575b5f80fd5b61022b600d5481565b6040519081526020015b60405180910390f35b61022b61024c366004612784565b61053d565b61026461025f3660046127af565b61055c565b005b601054610279906001600160a01b031681565b6040516001600160a01b039091168152602001610235565b61022b600c5481565b600154610279906001600160a01b031681565b600a546102ba9060ff1681565b6040519015158152602001610235565b6102d261057f565b60408051928352602083019190915201610235565b6102fa6102f5366004612784565b6105a9565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610235565b61022b610332366004612784565b6105eb565b61022b6103453660046127d9565b60046020525f908152604090205481565b601154610279906001600160a01b031681565b610264610377366004612801565b6105fa565b61026461038a3660046127d9565b610615565b61026461039d3660046127af565b61063f565b610264610c16565b61022b6103b83660046127af565b610c29565b610264610c54565b5f546001600160a01b0316610279565b61022b6103e33660046127d9565b60126020525f908152604090205481565b6102646104023660046127d9565b610ce8565b61022b61041536600461282f565b610d12565b600e54610279906001600160a01b031681565b61026461043b3660046127d9565b610ecd565b61026461044e3660046127af565b610ef7565b61022b60055481565b6102fa61046a366004612784565b611446565b61026461047d3660046127d9565b611455565b6102646104903660046127d9565b61147f565b61022b600b5481565b6104b16104ac366004612848565b6114a9565b604051610235919061287f565b61022b6104cc3660046127af565b611630565b600f54610279906001600160a01b031681565b6102646104f2366004612784565b611649565b61050a61050536600461282f565b611656565b6040516102359190612924565b6102646105253660046127d9565b611c80565b61022b610538366004612b21565b611cf9565b6009818154811061054c575f80fd5b5f91825260209091200154905081565b610564611ebb565b6001600160a01b039091165f90815260126020526040902055565b5f80600d54600b546105919190612b4f565b600d54600c546105a19190612b4f565b915091509091565b600381815481106105b8575f80fd5b5f91825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b6007818154811061054c575f80fd5b610602611ebb565b600a805460ff1916911515919091179055565b61061d611ebb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460ff166106845760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206163746976652160a81b60448201526064015b60405180910390fd5b6001600160a01b0382166106aa5760405162461bcd60e51b815260040161067b90612b62565b601154604051630a28333d60e21b81526001600160a01b038481166004830152909116905f90819083906328a0ccf4906024015f60405180830381865afa1580156106f7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261071e9190810190612e2d565b815191935091506001600160a01b031661074a5760405162461bcd60e51b815260040161067b90612b62565b600e546040516370a0823160e01b81523360048201526001600160a01b03909116905f9082906370a0823190602401602060405180830381865afa158015610794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b89190612f6a565b90505f86116107fe5760405162461bcd60e51b81526020600482015260126024820152711b9bdd081a5b1b1959d85b08185b5bdd5b9d60721b604482015260640161067b565b808611156108445760405162461bcd60e51b815260206004820152601360248201527224b739bab33334b1b4b2b73a1036b0b933b4b760691b604482015260640161067b565b6001600160a01b0387165f90815260086020526040902054156108fe576001600160a01b0387165f90815260086020908152604080832033845260049092528220548154811061089657610896612f81565b905f5260205f200154826108aa9190612f95565b9050808711156108fc5760405162461bcd60e51b815260206004820152601860248201527f6f7665722072656d61696e20766f746520616d6f756e74730000000000000000604482015260640161067b565b505b600d54600c5461090e9190612b4f565b42106109235742600c55610923876001611f14565b5f805b6003548110156109f657886001600160a01b03166003828154811061094d5761094d612f81565b5f9182526020909120600490910201546001600160a01b0316036109e457876003828154811061097f5761097f612f81565b905f5260205f2090600402016001015f82825461099c9190612b4f565b925050819055506001600382815481106109b8576109b8612f81565b905f5260205f2090600402016002015f8282546109d59190612b4f565b90915550600192506109f69050565b806109ee81612fa8565b915050610926565b5080610a8f57600360405180608001604052808a6001600160a01b0316815260200189815260200160018152602001600d54600b54610a359190612b4f565b90528154600180820184555f938452602093849020835160049093020180546001600160a01b0319166001600160a01b03909316929092178255928201519281019290925560408101516002830155606001516003909101555b6001600160a01b0388165f908152600860205260408120549003610b2e576040805160c880825261192082019092529060208201611900803683375050506001600160a01b0389165f9081526008602090815260409091208251610af99391929190910190612626565b506040805160c8808252611920820190925290602082016119008036833750508151610b2c926009925060200190612626565b505b335f908152600460205260408120549003610b6d5760058054335f90815260046020526040812082905560019291610b67908490612b4f565b90915550505b6001600160a01b0388165f9081526008602090815260408083203384526004909252909120548154899291908110610ba757610ba7612f81565b905f5260205f20015f828254610bbd9190612b4f565b9091555050335f90815260046020526040902054600980548992908110610be657610be6612f81565b905f5260205f20015f828254610bfc9190612b4f565b90915550610c0c905060016120df565b5050505050505050565b610c1e611ebb565b610c275f6124f6565b565b6006602052815f5260405f208181548110610c42575f80fd5b905f5260205f20015f91509150505481565b610c5c611ebb565b4780610caa5760405162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420686173206e6f204554482062616c616e63652e00000000604482015260640161067b565b6001546040516001600160a01b0390911690819083156108fc029084905f818181858888f19350505050158015610ce3573d5f803e3d5ffd5b505050565b610cf0611ebb565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80606081846001811115610d2957610d29612fc0565b03610db6576002805480602002602001604051908101604052809291908181526020015f905b82821015610dab575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610d4f565b505050509050610e53565b6001846001811115610dca57610dca612fc0565b03610e53576003805480602002602001604051908101604052809291908181526020015f905b82821015610e4c575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610df0565b5050505090505b600a815110610e825780600981518110610e6f57610e6f612f81565b6020026020010151602001519150610ec6565b5f8151118015610e935750600a8151105b15610ec6578060018251610ea79190612f95565b81518110610eb757610eb7612f81565b60200260200101516020015191505b5092915050565b610ed5611ebb565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460ff16610f415760405162461bcd60e51b81526020600482015260156024820152742b37ba34b7339034b9903737ba1030b1ba34bb329760591b604482015260640161067b565b6001600160a01b038216610f975760405162461bcd60e51b815260206004820152601a60248201527f496e76616c69642063616e64696461746520616464726573732e000000000000604482015260640161067b565b601154604051630a28333d60e21b81526001600160a01b038481166004830152909116905f90819083906328a0ccf4906024015f60405180830381865afa158015610fe4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261100b9190810190612e2d565b815191935091506001600160a01b03166110375760405162461bcd60e51b815260040161067b90612b62565b5f84116110755760405162461bcd60e51b815260206004820152600c60248201526b30b6b7bab73a1032b93937b960a11b604482015260640161067b565b600d54600b546110859190612b4f565b42106110995742600b55611099855f611f14565b600e54600f546040516323b872dd60e01b81523360048201526001600160a01b0391821660248201526044810187905291169081906323b872dd906064016020604051808303815f875af11580156110f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111179190612fd4565b6111555760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161067b565b5f805b60025481101561122857876001600160a01b03166002828154811061117f5761117f612f81565b5f9182526020909120600490910201546001600160a01b0316036112165786600282815481106111b1576111b1612f81565b905f5260205f2090600402016001015f8282546111ce9190612b4f565b925050819055506001600282815481106111ea576111ea612f81565b905f5260205f2090600402016002015f8282546112079190612b4f565b90915550600192506112289050565b8061122081612fa8565b915050611158565b50806112c15760026040518060800160405280896001600160a01b0316815260200188815260200160018152602001600d54600b546112679190612b4f565b90528154600180820184555f938452602093849020835160049093020180546001600160a01b0319166001600160a01b03909316929092178255928201519281019290925560408101516002830155606001516003909101555b6001600160a01b0387165f908152600660205260408120549003611360576040805160c880825261192082019092529060208201611900803683375050506001600160a01b0388165f908152600660209081526040909120825161132b9391929190910190612626565b506040805160c880825261192082019092529060208201611900803683375050815161135e926007925060200190612626565b505b335f90815260046020526040812054900361139f5760058054335f90815260046020526040812082905560019291611399908490612b4f565b90915550505b6001600160a01b0387165f90815260066020908152604080832033845260049092529091205481548892919081106113d9576113d9612f81565b905f5260205f20015f8282546113ef9190612b4f565b9091555050335f9081526004602052604090205460078054889290811061141857611418612f81565b905f5260205f20015f82825461142e9190612b4f565b9091555061143d90505f6120df565b50505050505050565b600281815481106105b8575f80fd5b61145d611ebb565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b611487611ebb565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6114b161266f565b6001600160a01b038084165f90815260066020908152604080832093861683526004909152812054825491929181106114ec576114ec612f81565b5f9182526020808320909101546001600160a01b0380881684526008835260408085209188168552600490935291832054825491945090811061153157611531612f81565b905f5260205f20015490505f6115475f87611cf9565b90505f611555600188611cf9565b90505f6115615f610d12565b90505f61156e6001610d12565b600e546040516370a0823160e01b81526001600160a01b038b811660048301529293509116905f9082906370a0823190602401602060405180830381865afa1580156115bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e09190612f6a565b90506040518060e00160405280898152602001878152602001858152602001888152602001868152602001848152602001888361161d9190612f95565b9052985050505050505050505b92915050565b6008602052815f5260405f208181548110610c42575f80fd5b611651611ebb565b600d55565b6060805f83600181111561166c5761166c612fc0565b036116f9576002805480602002602001604051908101604052809291908181526020015f905b828210156116ee575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611692565b505050509050611796565b600183600181111561170d5761170d612fc0565b03611796576003805480602002602001604051908101604052809291908181526020015f905b8282101561178f575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611733565b5050505090505b80515f600a82106117a857600a6117aa565b815b90505f8167ffffffffffffffff8111156117c6576117c6612b8c565b6040519080825280602002602001820160405280156117ff57816020015b6117ec61268d565b8152602001906001900390816117e45790505b5090505f5b82811015611c765760115485516001600160a01b03909116905f90819083906328a0ccf4908a908790811061183b5761183b612f81565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f60405180830381865afa158015611888573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118af9190810190612e2d565b915091505f6118c5835f01518460a00151612545565b9050825f01518686815181106118dd576118dd612f81565b60209081029190910101516001600160a01b0390911690528151865187908790811061190b5761190b612f81565b602002602001015160200181905250816020015186868151811061193157611931612f81565b602002602001015160400181905250816040015186868151811061195757611957612f81565b602002602001015160600181905250816060015186868151811061197d5761197d612f81565b60200260200101516080018190525081608001518686815181106119a3576119a3612f81565b602002602001015160a001819052508160a001518686815181106119c9576119c9612f81565b602002602001015160c001819052508160c001518686815181106119ef576119ef612f81565b602002602001015160e001819052508160e00151868681518110611a1557611a15612f81565b602002602001015161010001819052508260400151868681518110611a3c57611a3c612f81565b602002602001015161012001819052508260600151868681518110611a6357611a63612f81565b602002602001015161014001819052508260800151868681518110611a8a57611a8a612f81565b60200260200101516101600181815250508260a00151868681518110611ab257611ab2612f81565b60200260200101516101800181815250508260c00151868681518110611ada57611ada612f81565b60200260200101516101a00181815250508260e00151868681518110611b0257611b02612f81565b60200260200101516101c0018181525050826101000151868681518110611b2b57611b2b612f81565b60200260200101516101e001906001600160a01b031690816001600160a01b03168152505080868681518110611b6357611b63612f81565b6020026020010151610200018181525050826101400151868681518110611b8c57611b8c612f81565b60200260200101516102200181905250888581518110611bae57611bae612f81565b602002602001015160200151868681518110611bcc57611bcc612f81565b6020026020010151610240018181525050888581518110611bef57611bef612f81565b602002602001015160400151868681518110611c0d57611c0d612f81565b6020026020010151610260018181525050888581518110611c3057611c30612f81565b602002602001015160600151868681518110611c4e57611c4e612f81565b6020026020010151610280018181525050505050508080611c6e90612fa8565b915050611804565b5095945050505050565b611c88611ebb565b6001600160a01b038116611ced5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067b565b611cf6816124f6565b50565b5f80606081856001811115611d1057611d10612fc0565b03611d9d576002805480602002602001604051908101604052809291908181526020015f905b82821015611d92575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611d36565b505050509050611e3a565b6001856001811115611db157611db1612fc0565b03611e3a576003805480602002602001604051908101604052809291908181526020015f905b82821015611e33575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611dd7565b5050505090505b5f5b8151811015611eb157846001600160a01b0316828281518110611e6157611e61612f81565b60200260200101515f01516001600160a01b031603611e9f57818181518110611e8c57611e8c612f81565b6020026020010151602001519250611eb1565b80611ea981612fa8565b915050611e3c565b5090949350505050565b5f546001600160a01b03163314610c275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161067b565b5f816001811115611f2757611f27612fc0565b03611ffb575f5b600254811015611fcb575f60028281548110611f4c57611f4c612f81565b905f5260205f209060040201600101819055505f60028281548110611f7357611f73612f81565b5f918252602090912060026004909202010155600d54611f939042612b4f565b60028281548110611fa657611fa6612f81565b5f91825260209091206003600490920201015580611fc381612fa8565b915050611f2e565b506001600160a01b0382165f908152600660205260408120611fec9161273b565b611ff760075f61273b565b5050565b600181600181111561200f5761200f612fc0565b03611ff7575f5b6003548110156120b3575f6003828154811061203457612034612f81565b905f5260205f209060040201600101819055505f6003828154811061205b5761205b612f81565b5f918252602090912060026004909202010155600d5461207b9042612b4f565b6003828154811061208e5761208e612f81565b5f918252602090912060036004909202010155806120ab81612fa8565b915050612016565b506001600160a01b0382165f9081526008602052604081206120d49161273b565b611ff760095f61273b565b5f8160018111156120f2576120f2612fc0565b036122ee576002545f5b612107600183612f95565b811015610ce357805f61211b826001612b4f565b90505b83811015612188576002828154811061213957612139612f81565b905f5260205f209060040201600101546002828154811061215c5761215c612f81565b905f5260205f209060040201600101541115612176578091505b8061218081612fa8565b91505061211e565b508181146122db575f600283815481106121a4576121a4612f81565b5f91825260209182902060408051608081018252600490930290910180546001600160a01b0316835260018101549383019390935260028084015491830191909152600390920154606082015281549092508390811061220657612206612f81565b905f5260205f2090600402016002848154811061222557612225612f81565b5f9182526020909120825460049092020180546001600160a01b0319166001600160a01b039092169190911781556001808301549082015560028083015481830155600392830154929091019190915580548291908490811061228a5761228a612f81565b5f91825260209182902083516004929092020180546001600160a01b0319166001600160a01b0390921691909117815590820151600182015560408201516002820155606090910151600390910155505b50806122e681612fa8565b9150506120fc565b600181600181111561230257612302612fc0565b03611cf6576003545f5b612317600183612f95565b811015610ce357805f61232b826001612b4f565b90505b83811015612398576003828154811061234957612349612f81565b905f5260205f209060040201600101546003828154811061236c5761236c612f81565b905f5260205f209060040201600101541115612386578091505b8061239081612fa8565b91505061232e565b508181146124e3575f600383815481106123b4576123b4612f81565b5f91825260209182902060408051608081018252600490930290910180546001600160a01b03168352600181015493830193909352600283015490820152600391820154606082015281549092508390811061241257612412612f81565b905f5260205f2090600402016003848154811061243157612431612f81565b5f9182526020909120825460049092020180546001600160a01b0319166001600160a01b0390921691909117815560018083015490820155600280830154908201556003918201549082015580548291908490811061249257612492612f81565b5f91825260209182902083516004929092020180546001600160a01b0319166001600160a01b0390921691909117815590820151600182015560408201516002820155606090910151600390910155505b50806124ee81612fa8565b91505061230c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382165f90815260126020526040812054819081036125ec575f8490505f816001600160a01b03166374b527b06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ca9190612f6a565b9050846125d982612710612fef565b6125e39190613006565b9250505061261f565b6001600160a01b0384165f90815260126020526040902054839061261290612710612fef565b61261c9190613006565b90505b9392505050565b828054828255905f5260205f2090810192821561265f579160200282015b8281111561265f578251825591602001919060010190612644565b5061266b929150612752565b5090565b6040518060e001604052806007906020820280368337509192915050565b604051806102a001604052805f6001600160a01b03168152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f8152602001612723612766565b81526020015f81526020015f81526020015f81525090565b5080545f8255905f5260205f2090810190611cf691905b5b8082111561266b575f8155600101612753565b60405180608001604052806004906020820280368337509192915050565b5f60208284031215612794575f80fd5b5035919050565b6001600160a01b0381168114611cf6575f80fd5b5f80604083850312156127c0575f80fd5b82356127cb8161279b565b946020939093013593505050565b5f602082840312156127e9575f80fd5b813561261f8161279b565b8015158114611cf6575f80fd5b5f60208284031215612811575f80fd5b813561261f816127f4565b80356002811061282a575f80fd5b919050565b5f6020828403121561283f575f80fd5b61261f8261281c565b5f8060408385031215612859575f80fd5b82356128648161279b565b915060208301356128748161279b565b809150509250929050565b60e0810181835f5b60078110156128a6578151835260209283019290910190600101612887565b50505092915050565b5f5b838110156128c95781810151838201526020016128b1565b50505f910152565b5f81518084526128e88160208601602086016128af565b601f01601f19169290920160200192915050565b805f5b600481101561291e5781518452602093840193909101906001016128ff565b50505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b83811015612b1357888303603f19018552815180516001600160a01b0316845261030088820151818a870152612981828701826128d1565b915050878201518582038987015261299982826128d1565b915050606080830151868303828801526129b383826128d1565b92505050608080830151868303828801526129ce83826128d1565b9250505060a080830151868303828801526129e983826128d1565b9250505060c08083015186830382880152612a0483826128d1565b9250505060e08083015186830382880152612a1f83826128d1565b925050506101008083015186830382880152612a3b83826128d1565b925050506101208083015186830382880152612a5783826128d1565b925050506101408083015186830382880152612a7383826128d1565b610160858101519089015261018080860151908901526101a080860151908901526101c080860151908901526101e0808601516001600160a01b03169089015261020080860151908901526102208086015191945092509050612ad8828801826128fc565b50506102408201516102a08601526102608201516102c0860152610280909101516102e0909401939093529386019390860190600101612949565b509098975050505050505050565b5f8060408385031215612b32575f80fd5b6128648361281c565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561162a5761162a612b3b565b60208082526010908201526f696c6c6567616c20616464726573732160801b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604051610100810167ffffffffffffffff81118282101715612bc457612bc4612b8c565b60405290565b604051610160810167ffffffffffffffff81118282101715612bc457612bc4612b8c565b805161282a8161279b565b5f82601f830112612c08575f80fd5b815167ffffffffffffffff80821115612c2357612c23612b8c565b604051601f8301601f19908116603f01168101908282118183101715612c4b57612c4b612b8c565b81604052838152866020858801011115612c63575f80fd5b612c748460208301602089016128af565b9695505050505050565b5f82601f830112612c8d575f80fd5b6040516080810181811067ffffffffffffffff82111715612cb057612cb0612b8c565b604052806080840185811115612cc4575f80fd5b845b81811015612cde578051835260209283019201612cc6565b509195945050505050565b5f6101008284031215612cfa575f80fd5b612d02612ba0565b9050815167ffffffffffffffff80821115612d1b575f80fd5b612d2785838601612bf9565b83526020840151915080821115612d3c575f80fd5b612d4885838601612bf9565b60208401526040840151915080821115612d60575f80fd5b612d6c85838601612bf9565b60408401526060840151915080821115612d84575f80fd5b612d9085838601612bf9565b60608401526080840151915080821115612da8575f80fd5b612db485838601612bf9565b608084015260a0840151915080821115612dcc575f80fd5b612dd885838601612bf9565b60a084015260c0840151915080821115612df0575f80fd5b612dfc85838601612bf9565b60c084015260e0840151915080821115612e14575f80fd5b50612e2184828501612bf9565b60e08301525092915050565b5f8060408385031215612e3e575f80fd5b825167ffffffffffffffff80821115612e55575f80fd5b908401906101c08287031215612e69575f80fd5b612e71612bca565b612e7a83612bee565b8152602083015182811115612e8d575f80fd5b612e9988828601612bf9565b602083015250604083015182811115612eb0575f80fd5b612ebc88828601612bf9565b604083015250606083015182811115612ed3575f80fd5b612edf88828601612bf9565b6060830152506080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612f1b818501612bee565b908201526101208381015190820152610140612f3988828601612c7e565b908201526020860151909450915080821115612f53575f80fd5b50612f6085828601612ce9565b9150509250929050565b5f60208284031215612f7a575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561162a5761162a612b3b565b5f60018201612fb957612fb9612b3b565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215612fe4575f80fd5b815161261f816127f4565b808202811582820484141761162a5761162a612b3b565b5f8261302057634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220b9052f6844735868a6868d22c178e2d6e093108431aa1c96e0796acc16a47b8264736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061021e575f3560e01c80638da5cb5b1161012a578063d0d41fe1116100b4578063e82bef2911610079578063e82bef29146104d1578063ea0217cf146104e4578063f26434ed146104f7578063f2fde38b14610517578063febd3de41461052a575f80fd5b8063d0d41fe11461046f578063d4c1b37914610482578063d776496714610495578063dc2a7efe1461049e578063e650b97d146104be575f80fd5b8063ae35b881116100fa578063ae35b8811461041a578063c2be68551461042d578063cc2dba4214610440578063cdc23c2314610453578063d006882d1461045c575f80fd5b80638da5cb5b146103c5578063a0f5e0a2146103d5578063a151939f146103f4578063a7956f0d14610407575f80fd5b806349a1ccd6116101ab57806365edf3071161017b57806365edf3071461037c5780636cccb1901461038f578063715018a6146103a2578063805bc643146103aa578063859c2af1146103bd575f80fd5b806349a1ccd61461032457806353339c60146103375780635e16225014610356578063623a789714610369575f80fd5b8063345a2eff116101f1578063345a2eff146102915780633ad10ef61461029a578063408e2727146102ad57806344207379146102ca57806344a62a74146102e7575f80fd5b806302a251a31461022257806315b050931461023e578063223d16d01461025157806329b7d44e14610266575b5f80fd5b61022b600d5481565b6040519081526020015b60405180910390f35b61022b61024c366004612784565b61053d565b61026461025f3660046127af565b61055c565b005b601054610279906001600160a01b031681565b6040516001600160a01b039091168152602001610235565b61022b600c5481565b600154610279906001600160a01b031681565b600a546102ba9060ff1681565b6040519015158152602001610235565b6102d261057f565b60408051928352602083019190915201610235565b6102fa6102f5366004612784565b6105a9565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610235565b61022b610332366004612784565b6105eb565b61022b6103453660046127d9565b60046020525f908152604090205481565b601154610279906001600160a01b031681565b610264610377366004612801565b6105fa565b61026461038a3660046127d9565b610615565b61026461039d3660046127af565b61063f565b610264610c16565b61022b6103b83660046127af565b610c29565b610264610c54565b5f546001600160a01b0316610279565b61022b6103e33660046127d9565b60126020525f908152604090205481565b6102646104023660046127d9565b610ce8565b61022b61041536600461282f565b610d12565b600e54610279906001600160a01b031681565b61026461043b3660046127d9565b610ecd565b61026461044e3660046127af565b610ef7565b61022b60055481565b6102fa61046a366004612784565b611446565b61026461047d3660046127d9565b611455565b6102646104903660046127d9565b61147f565b61022b600b5481565b6104b16104ac366004612848565b6114a9565b604051610235919061287f565b61022b6104cc3660046127af565b611630565b600f54610279906001600160a01b031681565b6102646104f2366004612784565b611649565b61050a61050536600461282f565b611656565b6040516102359190612924565b6102646105253660046127d9565b611c80565b61022b610538366004612b21565b611cf9565b6009818154811061054c575f80fd5b5f91825260209091200154905081565b610564611ebb565b6001600160a01b039091165f90815260126020526040902055565b5f80600d54600b546105919190612b4f565b600d54600c546105a19190612b4f565b915091509091565b600381815481106105b8575f80fd5b5f91825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b6007818154811061054c575f80fd5b610602611ebb565b600a805460ff1916911515919091179055565b61061d611ebb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460ff166106845760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206163746976652160a81b60448201526064015b60405180910390fd5b6001600160a01b0382166106aa5760405162461bcd60e51b815260040161067b90612b62565b601154604051630a28333d60e21b81526001600160a01b038481166004830152909116905f90819083906328a0ccf4906024015f60405180830381865afa1580156106f7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261071e9190810190612e2d565b815191935091506001600160a01b031661074a5760405162461bcd60e51b815260040161067b90612b62565b600e546040516370a0823160e01b81523360048201526001600160a01b03909116905f9082906370a0823190602401602060405180830381865afa158015610794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b89190612f6a565b90505f86116107fe5760405162461bcd60e51b81526020600482015260126024820152711b9bdd081a5b1b1959d85b08185b5bdd5b9d60721b604482015260640161067b565b808611156108445760405162461bcd60e51b815260206004820152601360248201527224b739bab33334b1b4b2b73a1036b0b933b4b760691b604482015260640161067b565b6001600160a01b0387165f90815260086020526040902054156108fe576001600160a01b0387165f90815260086020908152604080832033845260049092528220548154811061089657610896612f81565b905f5260205f200154826108aa9190612f95565b9050808711156108fc5760405162461bcd60e51b815260206004820152601860248201527f6f7665722072656d61696e20766f746520616d6f756e74730000000000000000604482015260640161067b565b505b600d54600c5461090e9190612b4f565b42106109235742600c55610923876001611f14565b5f805b6003548110156109f657886001600160a01b03166003828154811061094d5761094d612f81565b5f9182526020909120600490910201546001600160a01b0316036109e457876003828154811061097f5761097f612f81565b905f5260205f2090600402016001015f82825461099c9190612b4f565b925050819055506001600382815481106109b8576109b8612f81565b905f5260205f2090600402016002015f8282546109d59190612b4f565b90915550600192506109f69050565b806109ee81612fa8565b915050610926565b5080610a8f57600360405180608001604052808a6001600160a01b0316815260200189815260200160018152602001600d54600b54610a359190612b4f565b90528154600180820184555f938452602093849020835160049093020180546001600160a01b0319166001600160a01b03909316929092178255928201519281019290925560408101516002830155606001516003909101555b6001600160a01b0388165f908152600860205260408120549003610b2e576040805160c880825261192082019092529060208201611900803683375050506001600160a01b0389165f9081526008602090815260409091208251610af99391929190910190612626565b506040805160c8808252611920820190925290602082016119008036833750508151610b2c926009925060200190612626565b505b335f908152600460205260408120549003610b6d5760058054335f90815260046020526040812082905560019291610b67908490612b4f565b90915550505b6001600160a01b0388165f9081526008602090815260408083203384526004909252909120548154899291908110610ba757610ba7612f81565b905f5260205f20015f828254610bbd9190612b4f565b9091555050335f90815260046020526040902054600980548992908110610be657610be6612f81565b905f5260205f20015f828254610bfc9190612b4f565b90915550610c0c905060016120df565b5050505050505050565b610c1e611ebb565b610c275f6124f6565b565b6006602052815f5260405f208181548110610c42575f80fd5b905f5260205f20015f91509150505481565b610c5c611ebb565b4780610caa5760405162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420686173206e6f204554482062616c616e63652e00000000604482015260640161067b565b6001546040516001600160a01b0390911690819083156108fc029084905f818181858888f19350505050158015610ce3573d5f803e3d5ffd5b505050565b610cf0611ebb565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80606081846001811115610d2957610d29612fc0565b03610db6576002805480602002602001604051908101604052809291908181526020015f905b82821015610dab575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610d4f565b505050509050610e53565b6001846001811115610dca57610dca612fc0565b03610e53576003805480602002602001604051908101604052809291908181526020015f905b82821015610e4c575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610df0565b5050505090505b600a815110610e825780600981518110610e6f57610e6f612f81565b6020026020010151602001519150610ec6565b5f8151118015610e935750600a8151105b15610ec6578060018251610ea79190612f95565b81518110610eb757610eb7612f81565b60200260200101516020015191505b5092915050565b610ed5611ebb565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460ff16610f415760405162461bcd60e51b81526020600482015260156024820152742b37ba34b7339034b9903737ba1030b1ba34bb329760591b604482015260640161067b565b6001600160a01b038216610f975760405162461bcd60e51b815260206004820152601a60248201527f496e76616c69642063616e64696461746520616464726573732e000000000000604482015260640161067b565b601154604051630a28333d60e21b81526001600160a01b038481166004830152909116905f90819083906328a0ccf4906024015f60405180830381865afa158015610fe4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261100b9190810190612e2d565b815191935091506001600160a01b03166110375760405162461bcd60e51b815260040161067b90612b62565b5f84116110755760405162461bcd60e51b815260206004820152600c60248201526b30b6b7bab73a1032b93937b960a11b604482015260640161067b565b600d54600b546110859190612b4f565b42106110995742600b55611099855f611f14565b600e54600f546040516323b872dd60e01b81523360048201526001600160a01b0391821660248201526044810187905291169081906323b872dd906064016020604051808303815f875af11580156110f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111179190612fd4565b6111555760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b604482015260640161067b565b5f805b60025481101561122857876001600160a01b03166002828154811061117f5761117f612f81565b5f9182526020909120600490910201546001600160a01b0316036112165786600282815481106111b1576111b1612f81565b905f5260205f2090600402016001015f8282546111ce9190612b4f565b925050819055506001600282815481106111ea576111ea612f81565b905f5260205f2090600402016002015f8282546112079190612b4f565b90915550600192506112289050565b8061122081612fa8565b915050611158565b50806112c15760026040518060800160405280896001600160a01b0316815260200188815260200160018152602001600d54600b546112679190612b4f565b90528154600180820184555f938452602093849020835160049093020180546001600160a01b0319166001600160a01b03909316929092178255928201519281019290925560408101516002830155606001516003909101555b6001600160a01b0387165f908152600660205260408120549003611360576040805160c880825261192082019092529060208201611900803683375050506001600160a01b0388165f908152600660209081526040909120825161132b9391929190910190612626565b506040805160c880825261192082019092529060208201611900803683375050815161135e926007925060200190612626565b505b335f90815260046020526040812054900361139f5760058054335f90815260046020526040812082905560019291611399908490612b4f565b90915550505b6001600160a01b0387165f90815260066020908152604080832033845260049092529091205481548892919081106113d9576113d9612f81565b905f5260205f20015f8282546113ef9190612b4f565b9091555050335f9081526004602052604090205460078054889290811061141857611418612f81565b905f5260205f20015f82825461142e9190612b4f565b9091555061143d90505f6120df565b50505050505050565b600281815481106105b8575f80fd5b61145d611ebb565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b611487611ebb565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6114b161266f565b6001600160a01b038084165f90815260066020908152604080832093861683526004909152812054825491929181106114ec576114ec612f81565b5f9182526020808320909101546001600160a01b0380881684526008835260408085209188168552600490935291832054825491945090811061153157611531612f81565b905f5260205f20015490505f6115475f87611cf9565b90505f611555600188611cf9565b90505f6115615f610d12565b90505f61156e6001610d12565b600e546040516370a0823160e01b81526001600160a01b038b811660048301529293509116905f9082906370a0823190602401602060405180830381865afa1580156115bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e09190612f6a565b90506040518060e00160405280898152602001878152602001858152602001888152602001868152602001848152602001888361161d9190612f95565b9052985050505050505050505b92915050565b6008602052815f5260405f208181548110610c42575f80fd5b611651611ebb565b600d55565b6060805f83600181111561166c5761166c612fc0565b036116f9576002805480602002602001604051908101604052809291908181526020015f905b828210156116ee575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611692565b505050509050611796565b600183600181111561170d5761170d612fc0565b03611796576003805480602002602001604051908101604052809291908181526020015f905b8282101561178f575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611733565b5050505090505b80515f600a82106117a857600a6117aa565b815b90505f8167ffffffffffffffff8111156117c6576117c6612b8c565b6040519080825280602002602001820160405280156117ff57816020015b6117ec61268d565b8152602001906001900390816117e45790505b5090505f5b82811015611c765760115485516001600160a01b03909116905f90819083906328a0ccf4908a908790811061183b5761183b612f81565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f60405180830381865afa158015611888573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118af9190810190612e2d565b915091505f6118c5835f01518460a00151612545565b9050825f01518686815181106118dd576118dd612f81565b60209081029190910101516001600160a01b0390911690528151865187908790811061190b5761190b612f81565b602002602001015160200181905250816020015186868151811061193157611931612f81565b602002602001015160400181905250816040015186868151811061195757611957612f81565b602002602001015160600181905250816060015186868151811061197d5761197d612f81565b60200260200101516080018190525081608001518686815181106119a3576119a3612f81565b602002602001015160a001819052508160a001518686815181106119c9576119c9612f81565b602002602001015160c001819052508160c001518686815181106119ef576119ef612f81565b602002602001015160e001819052508160e00151868681518110611a1557611a15612f81565b602002602001015161010001819052508260400151868681518110611a3c57611a3c612f81565b602002602001015161012001819052508260600151868681518110611a6357611a63612f81565b602002602001015161014001819052508260800151868681518110611a8a57611a8a612f81565b60200260200101516101600181815250508260a00151868681518110611ab257611ab2612f81565b60200260200101516101800181815250508260c00151868681518110611ada57611ada612f81565b60200260200101516101a00181815250508260e00151868681518110611b0257611b02612f81565b60200260200101516101c0018181525050826101000151868681518110611b2b57611b2b612f81565b60200260200101516101e001906001600160a01b031690816001600160a01b03168152505080868681518110611b6357611b63612f81565b6020026020010151610200018181525050826101400151868681518110611b8c57611b8c612f81565b60200260200101516102200181905250888581518110611bae57611bae612f81565b602002602001015160200151868681518110611bcc57611bcc612f81565b6020026020010151610240018181525050888581518110611bef57611bef612f81565b602002602001015160400151868681518110611c0d57611c0d612f81565b6020026020010151610260018181525050888581518110611c3057611c30612f81565b602002602001015160600151868681518110611c4e57611c4e612f81565b6020026020010151610280018181525050505050508080611c6e90612fa8565b915050611804565b5095945050505050565b611c88611ebb565b6001600160a01b038116611ced5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067b565b611cf6816124f6565b50565b5f80606081856001811115611d1057611d10612fc0565b03611d9d576002805480602002602001604051908101604052809291908181526020015f905b82821015611d92575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611d36565b505050509050611e3a565b6001856001811115611db157611db1612fc0565b03611e3a576003805480602002602001604051908101604052809291908181526020015f905b82821015611e33575f848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611dd7565b5050505090505b5f5b8151811015611eb157846001600160a01b0316828281518110611e6157611e61612f81565b60200260200101515f01516001600160a01b031603611e9f57818181518110611e8c57611e8c612f81565b6020026020010151602001519250611eb1565b80611ea981612fa8565b915050611e3c565b5090949350505050565b5f546001600160a01b03163314610c275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161067b565b5f816001811115611f2757611f27612fc0565b03611ffb575f5b600254811015611fcb575f60028281548110611f4c57611f4c612f81565b905f5260205f209060040201600101819055505f60028281548110611f7357611f73612f81565b5f918252602090912060026004909202010155600d54611f939042612b4f565b60028281548110611fa657611fa6612f81565b5f91825260209091206003600490920201015580611fc381612fa8565b915050611f2e565b506001600160a01b0382165f908152600660205260408120611fec9161273b565b611ff760075f61273b565b5050565b600181600181111561200f5761200f612fc0565b03611ff7575f5b6003548110156120b3575f6003828154811061203457612034612f81565b905f5260205f209060040201600101819055505f6003828154811061205b5761205b612f81565b5f918252602090912060026004909202010155600d5461207b9042612b4f565b6003828154811061208e5761208e612f81565b5f918252602090912060036004909202010155806120ab81612fa8565b915050612016565b506001600160a01b0382165f9081526008602052604081206120d49161273b565b611ff760095f61273b565b5f8160018111156120f2576120f2612fc0565b036122ee576002545f5b612107600183612f95565b811015610ce357805f61211b826001612b4f565b90505b83811015612188576002828154811061213957612139612f81565b905f5260205f209060040201600101546002828154811061215c5761215c612f81565b905f5260205f209060040201600101541115612176578091505b8061218081612fa8565b91505061211e565b508181146122db575f600283815481106121a4576121a4612f81565b5f91825260209182902060408051608081018252600490930290910180546001600160a01b0316835260018101549383019390935260028084015491830191909152600390920154606082015281549092508390811061220657612206612f81565b905f5260205f2090600402016002848154811061222557612225612f81565b5f9182526020909120825460049092020180546001600160a01b0319166001600160a01b039092169190911781556001808301549082015560028083015481830155600392830154929091019190915580548291908490811061228a5761228a612f81565b5f91825260209182902083516004929092020180546001600160a01b0319166001600160a01b0390921691909117815590820151600182015560408201516002820155606090910151600390910155505b50806122e681612fa8565b9150506120fc565b600181600181111561230257612302612fc0565b03611cf6576003545f5b612317600183612f95565b811015610ce357805f61232b826001612b4f565b90505b83811015612398576003828154811061234957612349612f81565b905f5260205f209060040201600101546003828154811061236c5761236c612f81565b905f5260205f209060040201600101541115612386578091505b8061239081612fa8565b91505061232e565b508181146124e3575f600383815481106123b4576123b4612f81565b5f91825260209182902060408051608081018252600490930290910180546001600160a01b03168352600181015493830193909352600283015490820152600391820154606082015281549092508390811061241257612412612f81565b905f5260205f2090600402016003848154811061243157612431612f81565b5f9182526020909120825460049092020180546001600160a01b0319166001600160a01b0390921691909117815560018083015490820155600280830154908201556003918201549082015580548291908490811061249257612492612f81565b5f91825260209182902083516004929092020180546001600160a01b0319166001600160a01b0390921691909117815590820151600182015560408201516002820155606090910151600390910155505b50806124ee81612fa8565b91505061230c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382165f90815260126020526040812054819081036125ec575f8490505f816001600160a01b03166374b527b06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ca9190612f6a565b9050846125d982612710612fef565b6125e39190613006565b9250505061261f565b6001600160a01b0384165f90815260126020526040902054839061261290612710612fef565b61261c9190613006565b90505b9392505050565b828054828255905f5260205f2090810192821561265f579160200282015b8281111561265f578251825591602001919060010190612644565b5061266b929150612752565b5090565b6040518060e001604052806007906020820280368337509192915050565b604051806102a001604052805f6001600160a01b03168152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f8152602001612723612766565b81526020015f81526020015f81526020015f81525090565b5080545f8255905f5260205f2090810190611cf691905b5b8082111561266b575f8155600101612753565b60405180608001604052806004906020820280368337509192915050565b5f60208284031215612794575f80fd5b5035919050565b6001600160a01b0381168114611cf6575f80fd5b5f80604083850312156127c0575f80fd5b82356127cb8161279b565b946020939093013593505050565b5f602082840312156127e9575f80fd5b813561261f8161279b565b8015158114611cf6575f80fd5b5f60208284031215612811575f80fd5b813561261f816127f4565b80356002811061282a575f80fd5b919050565b5f6020828403121561283f575f80fd5b61261f8261281c565b5f8060408385031215612859575f80fd5b82356128648161279b565b915060208301356128748161279b565b809150509250929050565b60e0810181835f5b60078110156128a6578151835260209283019290910190600101612887565b50505092915050565b5f5b838110156128c95781810151838201526020016128b1565b50505f910152565b5f81518084526128e88160208601602086016128af565b601f01601f19169290920160200192915050565b805f5b600481101561291e5781518452602093840193909101906001016128ff565b50505050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b83811015612b1357888303603f19018552815180516001600160a01b0316845261030088820151818a870152612981828701826128d1565b915050878201518582038987015261299982826128d1565b915050606080830151868303828801526129b383826128d1565b92505050608080830151868303828801526129ce83826128d1565b9250505060a080830151868303828801526129e983826128d1565b9250505060c08083015186830382880152612a0483826128d1565b9250505060e08083015186830382880152612a1f83826128d1565b925050506101008083015186830382880152612a3b83826128d1565b925050506101208083015186830382880152612a5783826128d1565b925050506101408083015186830382880152612a7383826128d1565b610160858101519089015261018080860151908901526101a080860151908901526101c080860151908901526101e0808601516001600160a01b03169089015261020080860151908901526102208086015191945092509050612ad8828801826128fc565b50506102408201516102a08601526102608201516102c0860152610280909101516102e0909401939093529386019390860190600101612949565b509098975050505050505050565b5f8060408385031215612b32575f80fd5b6128648361281c565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561162a5761162a612b3b565b60208082526010908201526f696c6c6567616c20616464726573732160801b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604051610100810167ffffffffffffffff81118282101715612bc457612bc4612b8c565b60405290565b604051610160810167ffffffffffffffff81118282101715612bc457612bc4612b8c565b805161282a8161279b565b5f82601f830112612c08575f80fd5b815167ffffffffffffffff80821115612c2357612c23612b8c565b604051601f8301601f19908116603f01168101908282118183101715612c4b57612c4b612b8c565b81604052838152866020858801011115612c63575f80fd5b612c748460208301602089016128af565b9695505050505050565b5f82601f830112612c8d575f80fd5b6040516080810181811067ffffffffffffffff82111715612cb057612cb0612b8c565b604052806080840185811115612cc4575f80fd5b845b81811015612cde578051835260209283019201612cc6565b509195945050505050565b5f6101008284031215612cfa575f80fd5b612d02612ba0565b9050815167ffffffffffffffff80821115612d1b575f80fd5b612d2785838601612bf9565b83526020840151915080821115612d3c575f80fd5b612d4885838601612bf9565b60208401526040840151915080821115612d60575f80fd5b612d6c85838601612bf9565b60408401526060840151915080821115612d84575f80fd5b612d9085838601612bf9565b60608401526080840151915080821115612da8575f80fd5b612db485838601612bf9565b608084015260a0840151915080821115612dcc575f80fd5b612dd885838601612bf9565b60a084015260c0840151915080821115612df0575f80fd5b612dfc85838601612bf9565b60c084015260e0840151915080821115612e14575f80fd5b50612e2184828501612bf9565b60e08301525092915050565b5f8060408385031215612e3e575f80fd5b825167ffffffffffffffff80821115612e55575f80fd5b908401906101c08287031215612e69575f80fd5b612e71612bca565b612e7a83612bee565b8152602083015182811115612e8d575f80fd5b612e9988828601612bf9565b602083015250604083015182811115612eb0575f80fd5b612ebc88828601612bf9565b604083015250606083015182811115612ed3575f80fd5b612edf88828601612bf9565b6060830152506080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612f1b818501612bee565b908201526101208381015190820152610140612f3988828601612c7e565b908201526020860151909450915080821115612f53575f80fd5b50612f6085828601612ce9565b9150509250929050565b5f60208284031215612f7a575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561162a5761162a612b3b565b5f60018201612fb957612fb9612b3b565b5060010190565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215612fe4575f80fd5b815161261f816127f4565b808202811582820484141761162a5761162a612b3b565b5f8261302057634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220b9052f6844735868a6868d22c178e2d6e093108431aa1c96e0796acc16a47b8264736f6c63430008140033

Deployed Bytecode Sourcemap

4092:14773:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5502:27;;;;;;;;;160:25:1;;;148:2;133:18;5502:27:0;;;;;;;;5345:40;;;;;;:::i;:::-;;:::i;18451:154::-;;;;;;:::i;:::-;;:::i;:::-;;5649:28;;;;;-1:-1:-1;;;;;5649:28:0;;;;;;-1:-1:-1;;;;;1110:32:1;;;1092:51;;1080:2;1065:18;5649:28:0;946:203:1;5464:31:0;;;;;;4973:25;;;;;-1:-1:-1;;;;;4973:25:0;;;5394:24;;;;;;;;;;;;1319:14:1;;1312:22;1294:41;;1282:2;1267:18;5394:24:0;1154:187:1;16918:147:0;;;:::i;:::-;;;;1520:25:1;;;1576:2;1561:18;;1554:34;;;;1493:18;16918:147:0;1346:248:1;5046:33:0;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;1848:32:1;;;1830:51;;1912:2;1897:18;;1890:34;;;;1940:18;;;1933:34;1998:2;1983:18;;1976:34;1817:3;1802:19;5046:33:0;1599:417:1;5235:39:0;;;;;;:::i;:::-;;:::i;5088:48::-;;;;;;:::i;:::-;;;;;;;;;;;;;;5684:31;;;;;-1:-1:-1;;;;;5684:31:0;;;17074:110;;;;;;:::i;:::-;;:::i;17192:129::-;;;;;;:::i;:::-;;:::i;7888:2258::-;;;;;;:::i;:::-;;:::i;1397:103::-;;;:::i;5175:52::-;;;;;;:::i;:::-;;:::i;18613:249::-;;;:::i;1162:87::-;1208:7;1235:6;-1:-1:-1;;;;;1235:6:0;1162:87;;5724:53;;;;;;:::i;:::-;;;;;;;;;;;;;;17671:94;;;;;;:::i;:::-;;:::i;13238:609::-;;;;;;:::i;:::-;;:::i;5538:26::-;;;;;-1:-1:-1;;;;;5538:26:0;;;17329:109;;;;;;:::i;:::-;;:::i;5965:1915::-;;;;;;:::i;:::-;;:::i;5143:23::-;;;;;;5007:32;;;;;;:::i;:::-;;:::i;17573:90::-;;;;;;:::i;:::-;;:::i;17775:118::-;;;;;;:::i;:::-;;:::i;5427:30::-;;;;;;16098:812;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5284:54::-;;;;;;:::i;:::-;;:::i;5571:71::-;;;;;-1:-1:-1;;;;;5571:71:0;;;17448:113;;;;;;:::i;:::-;;:::i;13855:2235::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1508:201::-;;;;;;:::i;:::-;;:::i;12578:652::-;;;;;;:::i;:::-;;:::i;5345:40::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5345:40:0;:::o;18451:154::-;1121:13;:11;:13::i;:::-;-1:-1:-1;;;;;18553:32:0;;::::1;;::::0;;;:18:::1;:32;::::0;;;;:44;18451:154::o;16918:147::-;16963:7;16971;17014:12;;16998:15;;:28;;;;:::i;:::-;17044:12;;17027:16;;:29;;;;:::i;:::-;16990:67;;;;16918:147;;:::o;5046:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5046:33:0;;;;-1:-1:-1;5046:33:0;;;:::o;5235:39::-;;;;;;;;;;;;17074:110;1121:13;:11;:13::i;:::-;17148:12:::1;:28:::0;;-1:-1:-1;;17148:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17074:110::o;17192:129::-;1121:13;:11;:13::i;:::-;17277:16:::1;:36:::0;;-1:-1:-1;;;;;;17277:36:0::1;-1:-1:-1::0;;;;;17277:36:0;;;::::1;::::0;;;::::1;::::0;;17192:129::o;7888:2258::-;7978:12;;;;7970:36;;;;-1:-1:-1;;;7970:36:0;;9465:2:1;7970:36:0;;;9447:21:1;9504:2;9484:18;;;9477:30;-1:-1:-1;;;9523:18:1;;;9516:41;9574:18;;7970:36:0;;;;;;;;;-1:-1:-1;;;;;8025:30:0;;8017:59;;;;-1:-1:-1;;;8017:59:0;;;;;;;:::i;:::-;8125:16;;8234:42;;-1:-1:-1;;;8234:42:0;;-1:-1:-1;;;;;1110:32:1;;;8234:42:0;;;1092:51:1;8125:16:0;;;;8087:23;;;;8125:16;;8234:24;;1065:18:1;;8234:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8234:42:0;;;;;;;;;;;;:::i;:::-;8295:22;;8153:123;;-1:-1:-1;8153:123:0;-1:-1:-1;;;;;;8295:35:0;8287:63;;;;-1:-1:-1;;;8287:63:0;;;;;;;:::i;:::-;8385:11;;8431:27;;-1:-1:-1;;;8431:27:0;;8447:10;8431:27;;;1092:51:1;-1:-1:-1;;;;;8385:11:0;;;;8363:12;;8385:11;;8431:15;;1065:18:1;;8431:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8408:50;;8490:1;8477:10;:14;8469:45;;;;-1:-1:-1;;;8469:45:0;;15967:2:1;8469:45:0;;;15949:21:1;16006:2;15986:18;;;15979:30;-1:-1:-1;;;16025:18:1;;;16018:48;16083:18;;8469:45:0;15765:342:1;8469:45:0;8547:12;8533:10;:26;;8525:58;;;;-1:-1:-1;;;8525:58:0;;16314:2:1;8525:58:0;;;16296:21:1;16353:2;16333:18;;;16326:30;-1:-1:-1;;;16372:18:1;;;16365:49;16431:18;;8525:58:0;16112:343:1;8525:58:0;-1:-1:-1;;;;;8597:36:0;;8641:1;8597:36;;;:18;:36;;;;;:43;:45;8594:259;;-1:-1:-1;;;;;8698:36:0;;8658:22;8698:36;;;:18;:36;;;;;;;;8749:10;8735:25;;:13;:25;;;;;;8698:63;;;;;;;;:::i;:::-;;;;;;;;;8683:12;:78;;;;:::i;:::-;8658:103;;8798:14;8784:10;:28;;8776:65;;;;-1:-1:-1;;;8776:65:0;;16927:2:1;8776:65:0;;;16909:21:1;16966:2;16946:18;;;16939:30;17005:26;16985:18;;;16978:54;17049:18;;8776:65:0;16725:348:1;8776:65:0;8643:210;8594:259;8905:12;;8886:16;;:31;;;;:::i;:::-;8867:15;:50;8863:180;;8953:15;8934:16;:34;8983:48;8994:16;9011:19;8983:10;:48::i;:::-;9055:20;9099:9;9094:323;9118:14;:21;9114:25;;9094:323;;;9203:16;-1:-1:-1;;;;;9165:54:0;:14;9180:1;9165:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:34;-1:-1:-1;;;;;9165:34:0;:54;9161:245;;9267:10;9240:14;9255:1;9240:17;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;;:37;;;;;;;:::i;:::-;;;;;;;;9324:1;9296:14;9311:1;9296:17;;;;;;;;:::i;:::-;;;;;;;;;;;:24;;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;9362:4:0;;-1:-1:-1;9385:5:0;;-1:-1:-1;9385:5:0;9161:245;9141:3;;;;:::i;:::-;;;;9094:323;;;;9434:15;9429:142;;9466:14;9486:72;;;;;;;;9496:16;-1:-1:-1;;;;;9486:72:0;;;;;9514:10;9486:72;;;;9525:1;9486:72;;;;9545:12;;9527:15;;:30;;;;:::i;:::-;9486:72;;9466:93;;;;;;;;-1:-1:-1;9466:93:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9466:93:0;-1:-1:-1;;;;;9466:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9429:142;-1:-1:-1;;;;;9605:36:0;;;;;;:18;:36;;;;;:43;:48;;9601:197;;9709:18;;;9723:3;9709:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;9670:36:0;;;;;;:18;:36;;;;;;;;:57;;;;:36;;:57;;;;;;:::i;:::-;-1:-1:-1;9768:18:0;;;9782:3;9768:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;9742:44:0;;;;:23;;-1:-1:-1;9742:44:0;;;;:::i;:::-;;9601:197;9826:10;9812:25;;;;:13;:25;;;;;;:28;;9808:120;;9884:6;;;9870:10;9856:25;;;;:13;:25;;;;;:34;;;9915:1;;9884:6;9905:11;;9915:1;;9905:11;:::i;:::-;;;;-1:-1:-1;;9808:120:0;-1:-1:-1;;;;;9940:36:0;;;;;;:18;:36;;;;;;;;9991:10;9977:25;;:13;:25;;;;;;;9940:63;;10005:10;;9940:36;9977:25;9940:63;;;;;;:::i;:::-;;;;;;;;;:75;;;;;;;:::i;:::-;;;;-1:-1:-1;;10064:10:0;10050:25;;;;:13;:25;;;;;;10026:23;:50;;10080:10;;10050:25;10026:50;;;;;;:::i;:::-;;;;;;;;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;10103:35:0;;-1:-1:-1;10118:19:0;10103:14;:35::i;:::-;7959:2187;;;;;;7888:2258;;:::o;1397:103::-;1121:13;:11;:13::i;:::-;1462:30:::1;1489:1;1462:18;:30::i;:::-;1397:103::o:0;5175:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18613:249::-;1121:13;:11;:13::i;:::-;18680:21:::1;18720:11:::0;18712:52:::1;;;::::0;-1:-1:-1;;;18712:52:0;;17420:2:1;18712:52:0::1;::::0;::::1;17402:21:1::0;17459:2;17439:18;;;17432:30;17498;17478:18;;;17471:58;17546:18;;18712:52:0::1;17218:352:1::0;18712:52:0::1;18808:10;::::0;18830:24:::1;::::0;-1:-1:-1;;;;;18808:10:0;;::::1;::::0;;;18830:24;::::1;;;::::0;18846:7;;18775:22:::1;18830:24:::0;18775:22;18830:24;18846:7;18808:10;18830:24;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18651:211;;18613:249::o:0;17671:94::-;1121:13;:11;:13::i;:::-;17739:11:::1;:18:::0;;-1:-1:-1;;;;;;17739:18:0::1;-1:-1:-1::0;;;;;17739:18:0;;;::::1;::::0;;;::::1;::::0;;17671:94::o;13238:609::-;13304:7;;13355:29;13304:7;13399:10;:32;;;;;;;;:::i;:::-;;13395:193;;13461:13;13448:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13448:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13395:193;;;13510:19;13496:10;:33;;;;;;;;:::i;:::-;;13492:96;;13559:14;13546:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13546:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13492:96;13626:2;13605:10;:17;:23;13601:213;;13656:10;13667:1;13656:13;;;;;;;;:::i;:::-;;;;;;;:19;;;13645:30;;13601:213;;;13714:1;13696:10;:17;:19;:41;;;;;13735:2;13717:10;:17;:20;13696:41;13692:122;;;13765:10;13794:1;13776:10;:17;:19;;;;:::i;:::-;13765:31;;;;;;;;:::i;:::-;;;;;;;:37;;;13754:48;;13692:122;-1:-1:-1;13831:8:0;13238:609;-1:-1:-1;;13238:609:0:o;17329:109::-;1121:13;:11;:13::i;:::-;17404:11:::1;:26:::0;;-1:-1:-1;;;;;;17404:26:0::1;-1:-1:-1::0;;;;;17404:26:0;;;::::1;::::0;;;::::1;::::0;;17329:109::o;5965:1915::-;6054:12;;;;6046:46;;;;-1:-1:-1;;;6046:46:0;;17909:2:1;6046:46:0;;;17891:21:1;17948:2;17928:18;;;17921:30;-1:-1:-1;;;17967:18:1;;;17960:51;18028:18;;6046:46:0;17707:345:1;6046:46:0;-1:-1:-1;;;;;6111:30:0;;6103:69;;;;-1:-1:-1;;;6103:69:0;;18259:2:1;6103:69:0;;;18241:21:1;18298:2;18278:18;;;18271:30;18337:28;18317:18;;;18310:56;18383:18;;6103:69:0;18057:350:1;6103:69:0;6221:16;;6330:42;;-1:-1:-1;;;6330:42:0;;-1:-1:-1;;;;;1110:32:1;;;6330:42:0;;;1092:51:1;6221:16:0;;;;6183:23;;;;6221:16;;6330:24;;1065:18:1;;6330:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6330:42:0;;;;;;;;;;;;:::i;:::-;6391:22;;6249:123;;-1:-1:-1;6249:123:0;-1:-1:-1;;;;;;6391:35:0;6383:63;;;;-1:-1:-1;;;6383:63:0;;;;;;;:::i;:::-;6474:1;6465:7;:10;6457:35;;;;-1:-1:-1;;;6457:35:0;;18614:2:1;6457:35:0;;;18596:21:1;18653:2;18633:18;;;18626:30;-1:-1:-1;;;18672:18:1;;;18665:42;18724:18;;6457:35:0;18412:336:1;6457:35:0;6546:12;;6528:15;;:30;;;;:::i;:::-;6509:15;:49;6505:177;;6593:15;6575;:33;6623:47;6634:16;6651:18;6623:10;:47::i;:::-;6716:11;;6778;;6747:52;;-1:-1:-1;;;6747:52:0;;6766:10;6747:52;;;18993:34:1;-1:-1:-1;;;;;6778:11:0;;;19043:18:1;;;19036:43;19095:18;;;19088:34;;;6716:11:0;;;;;6747:18;;18928::1;;6747:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6739:80;;;;-1:-1:-1;;;6739:80:0;;19585:2:1;6739:80:0;;;19567:21:1;19624:2;19604:18;;;19597:30;-1:-1:-1;;;19643:18:1;;;19636:45;19698:18;;6739:80:0;19383:339:1;6739:80:0;6832:20;6876:9;6871:316;6895:13;:20;6891:24;;6871:316;;;6978:16;-1:-1:-1;;;;;6941:53:0;:13;6955:1;6941:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:33;-1:-1:-1;;;;;6941:33:0;:53;6937:239;;7041:7;7015:13;7029:1;7015:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;:33;;;;;;;:::i;:::-;;;;;;;;7094:1;7067:13;7081:1;7067:16;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;7132:4:0;;-1:-1:-1;7155:5:0;;-1:-1:-1;7155:5:0;6937:239;6917:3;;;;:::i;:::-;;;;6871:316;;;;7204:15;7199:138;;7236:13;7255:69;;;;;;;;7265:16;-1:-1:-1;;;;;7255:69:0;;;;;7283:7;7255:69;;;;7291:1;7255:69;;;;7311:12;;7293:15;;:30;;;;:::i;:::-;7255:69;;7236:89;;;;;;;;-1:-1:-1;7236:89:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7236:89:0;-1:-1:-1;;;;;7236:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:138;-1:-1:-1;;;;;7353:35:0;;;;;;:17;:35;;;;;:42;:47;;7349:194;;7455:18;;;7469:3;7455:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;7417:35:0;;;;;;:17;:35;;;;;;;;:56;;;;:35;;:56;;;;;;:::i;:::-;-1:-1:-1;7513:18:0;;;7527:3;7513:18;;;;;;;;;;;;;;;;;;-1:-1:-1;;7488:43:0;;;;:22;;-1:-1:-1;7488:43:0;;;;:::i;:::-;;7349:194;7571:10;7557:25;;;;:13;:25;;;;;;:28;;7553:120;;7629:6;;;7615:10;7601:25;;;;:13;:25;;;;;:34;;;7660:1;;7629:6;7650:11;;7660:1;;7650:11;:::i;:::-;;;;-1:-1:-1;;7553:120:0;-1:-1:-1;;;;;7683:35:0;;;;;;:17;:35;;;;;;;;7733:10;7719:25;;:13;:25;;;;;;;7683:62;;7747:7;;7683:35;7719:25;7683:62;;;;;;:::i;:::-;;;;;;;;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;7802:10:0;7788:25;;;;:13;:25;;;;;;7765:22;:49;;7818:7;;7788:25;7765:49;;;;;;:::i;:::-;;;;;;;;;:60;;;;;;;:::i;:::-;;;;-1:-1:-1;7838:34:0;;-1:-1:-1;7853:18:0;7838:14;:34::i;:::-;6035:1845;;;;;5965:1915;;:::o;5007:32::-;;;;;;;;;;;;17573:90;1121:13;:11;:13::i;:::-;17639:10:::1;:16:::0;;-1:-1:-1;;;;;;17639:16:0::1;-1:-1:-1::0;;;;;17639:16:0;;;::::1;::::0;;;::::1;::::0;;17573:90::o;17775:118::-;1121:13;:11;:13::i;:::-;17855::::1;:30:::0;;-1:-1:-1;;;;;;17855:30:0::1;-1:-1:-1::0;;;;;17855:30:0;;;::::1;::::0;;;::::1;::::0;;17775:118::o;16098:812::-;16178:17;;:::i;:::-;-1:-1:-1;;;;;16227:34:0;;;16208:16;16227:34;;;:17;:34;;;;;;;;16262:19;;;;;:13;:19;;;;;;16227:55;;16208:16;;16227:34;:55;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16313:35:0;;;;;:18;:35;;;;;;16349:19;;;;;:13;:19;;;;;;;16313:56;;16227:55;;-1:-1:-1;16349:19:0;16313:56;;;;;;:::i;:::-;;;;;;;;;16293:76;;16382:21;16406:55;16426:18;16445:15;16406:19;:55::i;:::-;16382:79;;16472:22;16497:56;16517:19;16537:15;16497:19;:56::i;:::-;16472:81;;16566:19;16588:32;16601:18;16588:12;:32::i;:::-;16566:54;;16631:20;16654:33;16667:19;16654:12;:33::i;:::-;16721:11;;16767:20;;-1:-1:-1;;;16767:20:0;;-1:-1:-1;;;;;1110:32:1;;;16767:20:0;;;1092:51:1;16631:56:0;;-1:-1:-1;16721:11:0;;;16700;;16721;;16767:14;;1065:18:1;;16767:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16744:43;;16798:104;;;;;;;;16806:8;16798:104;;;;16815:13;16798:104;;;;16829:11;16798:104;;;;16841:9;16798:104;;;;16851:14;16798:104;;;;16866:12;16798:104;;;;16892:9;16879:12;:22;;;;:::i;:::-;16798:104;;;-1:-1:-1;;;;;;;;;16098:812:0;;;;;:::o;5284:54::-;;;;;;;;;;;;;;;;;;;;17448:113;1121:13;:11;:13::i;:::-;17525:12:::1;:28:::0;17448:113::o;13855:2235::-;13925:17;;14013:18;13999:10;:32;;;;;;;;:::i;:::-;;13995:193;;14061:13;14048:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14048:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13995:193;;;14110:19;14096:10;:33;;;;;;;;:::i;:::-;;14092:96;;14159:14;14146:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14146:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14092:96;14218:17;;14202:13;14273:2;14265:10;;:23;;14286:2;14265:23;;;14278:5;14265:23;14246:42;;14301:31;14350:8;14335:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;14301:58;;14375:9;14370:1682;14394:8;14390:1;:12;14370:1682;;;14462:16;;14600:13;;-1:-1:-1;;;;;14462:16:0;;;;14424:23;;;;14462:16;;14575:24;;14600:10;;14611:1;;14600:13;;;;;;:::i;:::-;;;;;;;;;;;:30;14575:56;;-1:-1:-1;;;;;;14575:56:0;;;;;;;-1:-1:-1;;;;;1110:32:1;;;14575:56:0;;;1092:51:1;1065:18;;14575:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14575:56:0;;;;;;;;;;;;:::i;:::-;14494:137;;;;14646:16;14665:69;14688:9;:22;;;14711:9;:22;;;14665;:69::i;:::-;14646:88;;14781:9;:22;;;14749:13;14763:1;14749:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;14749:54:0;;;;;14849:20;;14818:16;;:13;;14832:1;;14818:16;;;;;;:::i;:::-;;;;;;;:28;;:51;;;;14911:8;:16;;;14884:13;14898:1;14884:16;;;;;;;;:::i;:::-;;;;;;;:24;;:43;;;;14971:8;:18;;;14942:13;14956:1;14942:16;;;;;;;;:::i;:::-;;;;;;;:26;;:47;;;;15031:8;:16;;;15004:13;15018:1;15004:16;;;;;;;;:::i;:::-;;;;;;;:24;;:43;;;;15089:8;:16;;;15062:13;15076:1;15062:16;;;;;;;;:::i;:::-;;;;;;;:24;;:43;;;;15148:8;:17;;;15120:13;15134:1;15120:16;;;;;;;;:::i;:::-;;;;;;;:25;;:45;;;;15207:8;:16;;;15180:13;15194:1;15180:16;;;;;;;;:::i;:::-;;;;;;;:24;;:43;;;;15267:8;:18;;;15238:13;15252:1;15238:16;;;;;;;;:::i;:::-;;;;;;;:26;;:47;;;;15324:9;:14;;;15300:13;15314:1;15300:16;;;;;;;;:::i;:::-;;;;;;;:21;;:38;;;;15379:9;:16;;;15353:13;15367:1;15353:16;;;;;;;;:::i;:::-;;;;;;;:23;;:42;;;;15441:9;:21;;;15410:13;15424:1;15410:16;;;;;;;;:::i;:::-;;;;;;;:28;;:52;;;;;15509:9;:22;;;15477:13;15491:1;15477:16;;;;;;;;:::i;:::-;;;;;;;:29;;:54;;;;;15583:9;:27;;;15546:13;15560:1;15546:16;;;;;;;;:::i;:::-;;;;;;;:34;;:64;;;;;15654:9;:19;;;15625:13;15639:1;15625:16;;;;;;;;:::i;:::-;;;;;;;:26;;:48;;;;;15715:9;:17;;;15688:13;15702:1;15688:16;;;;;;;;:::i;:::-;;;;;;;:24;;:44;-1:-1:-1;;;;;15688:44:0;;;-1:-1:-1;;;;;15688:44:0;;;;;15775:8;15747:13;15761:1;15747:16;;;;;;;;:::i;:::-;;;;;;;:25;;:36;;;;;15824:9;:16;;;15798:13;15812:1;15798:16;;;;;;;;:::i;:::-;;;;;;;:23;;:42;;;;15881:10;15892:1;15881:13;;;;;;;;:::i;:::-;;;;;;;:19;;;15856:13;15870:1;15856:16;;;;;;;;:::i;:::-;;;;;;;:22;;:44;;;;;15943:10;15954:1;15943:13;;;;;;;;:::i;:::-;;;;;;;:20;;;15917:13;15931:1;15917:16;;;;;;;;:::i;:::-;;;;;;;:23;;:46;;;;;16012:10;16023:1;16012:13;;;;;;;;:::i;:::-;;;;;;;:26;;;15980:13;15994:1;15980:16;;;;;;;;:::i;:::-;;;;;;;:29;;:58;;;;;14409:1643;;;;14404:3;;;;;:::i;:::-;;;;14370:1682;;;-1:-1:-1;16069:13:0;13855:2235;-1:-1:-1;;;;;13855:2235:0:o;1508:201::-;1121:13;:11;:13::i;:::-;-1:-1:-1;;;;;1597:22:0;::::1;1589:73;;;::::0;-1:-1:-1;;;1589:73:0;;19929:2:1;1589:73:0::1;::::0;::::1;19911:21:1::0;19968:2;19948:18;;;19941:30;20007:34;19987:18;;;19980:62;-1:-1:-1;;;20058:18:1;;;20051:36;20104:19;;1589:73:0::1;19727:402:1::0;1589:73:0::1;1673:28;1692:8;1673:18;:28::i;:::-;1508:201:::0;:::o;12578:652::-;12675:7;;12728:29;12675:7;12772:10;:32;;;;;;;;:::i;:::-;;12768:193;;12834:13;12821:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12821:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12768:193;;;12883:19;12869:10;:33;;;;;;;;:::i;:::-;;12865:96;;12932:14;12919:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12919:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12865:96;12980:9;12975:220;12999:10;:17;12995:1;:21;12975:220;;;13076:15;-1:-1:-1;;;;;13042:49:0;:10;13053:1;13042:13;;;;;;;;:::i;:::-;;;;;;;:30;;;-1:-1:-1;;;;;13042:49:0;;13038:146;;13125:10;13136:1;13125:13;;;;;;;;:::i;:::-;;;;;;;:19;;;13112:32;;13163:5;;13038:146;13018:3;;;;:::i;:::-;;;;12975:220;;;-1:-1:-1;13212:10:0;;12578:652;-1:-1:-1;;;;12578:652:0:o;1257:132::-;1208:7;1235:6;-1:-1:-1;;;;;1235:6:0;713:10;1321:23;1313:68;;;;-1:-1:-1;;;1313:68:0;;20336:2:1;1313:68:0;;;20318:21:1;;;20355:18;;;20348:30;20414:34;20394:18;;;20387:62;20466:18;;1313:68:0;20134:356:1;11654:916:0;11760:18;11746:10;:32;;;;;;;;:::i;:::-;;11742:821;;11800:9;11795:239;11819:13;:20;11815:24;;11795:239;;;11890:1;11865:13;11879:1;11865:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;:26;;;;11936:1;11910:13;11924:1;11910:16;;;;;;;;:::i;:::-;;;;;;;;;:23;:16;;;;;:23;:27;12006:12;;11988:30;;:15;:30;:::i;:::-;11956:13;11970:1;11956:16;;;;;;;;:::i;:::-;;;;;;;;;:29;:16;;;;;:29;:62;11841:3;;;;:::i;:::-;;;;11795:239;;;-1:-1:-1;;;;;;12055:35:0;;;;;;:17;:35;;;;;12048:42;;;:::i;:::-;12105:29;12112:22;;12105:29;:::i;:::-;11654:916;;:::o;11742:821::-;12170:19;12156:10;:33;;;;;;;;:::i;:::-;;12152:411;;12211:9;12206:243;12230:14;:21;12226:25;;12206:243;;;12303:1;12277:14;12292:1;12277:17;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;:27;;;;12350:1;12323:14;12338:1;12323:17;;;;;;;;:::i;:::-;;;;;;;;;:24;:17;;;;;:24;:28;12421:12;;12403:30;;:15;:30;:::i;:::-;12370:14;12385:1;12370:17;;;;;;;;:::i;:::-;;;;;;;;;:30;:17;;;;;:30;:63;12253:3;;;;:::i;:::-;;;;12206:243;;;-1:-1:-1;;;;;;12470:36:0;;;;;;:18;:36;;;;;12463:43;;;:::i;:::-;12521:30;12528:23;;12521:30;:::i;10154:1490::-;10239:18;10225:10;:32;;;;;;;;:::i;:::-;;10221:1416;;10290:13;:20;10274:13;10325:586;10349:9;10357:1;10349:5;:9;:::i;:::-;10345:1;:13;10325:586;;;10408:1;10384:21;10445:5;10408:1;10449;10445:5;:::i;:::-;10433:17;;10428:215;10456:5;10452:1;:9;10428:215;;;10520:13;10534;10520:28;;;;;;;;:::i;:::-;;;;;;;;;;;:34;;;10495:13;10509:1;10495:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;:59;10491:133;;;10599:1;10583:17;;10491:133;10463:3;;;;:::i;:::-;;;;10428:215;;;;10682:1;10665:13;:18;10661:235;;10708:21;10732:13;10746:1;10732:16;;;;;;;;:::i;:::-;;;;;;;;;;10708:40;;;;;;;;10732:16;;;;;;;10708:40;;-1:-1:-1;;;;;10708:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10790:28;;10708:40;;-1:-1:-1;10804:13:0;;10790:28;;;;;;:::i;:::-;;;;;;;;;;;10771:13;10785:1;10771:16;;;;;;;;:::i;:::-;;;;;;;;;:47;;:16;;;;;:47;;-1:-1:-1;;;;;;10771:47:0;-1:-1:-1;;;;;10771:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10841:28;;10872:4;;10771:47;10855:13;;10841:28;;;;;;:::i;:::-;;;;;;;;;;:35;;:28;;;;;;:35;;-1:-1:-1;;;;;;10841:35:0;-1:-1:-1;;;;;10841:35:0;;;;;;;;;;;;;-1:-1:-1;10841:35:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10661:235:0;-1:-1:-1;10360:3:0;;;;:::i;:::-;;;;10325:586;;10221:1416;10946:19;10932:10;:33;;;;;;;;:::i;:::-;;10928:709;;10998:14;:21;10982:13;11034:592;11058:9;11066:1;11058:5;:9;:::i;:::-;11054:1;:13;11034:592;;;11117:1;11093:21;11154:5;11117:1;11158;11154:5;:::i;:::-;11142:17;;11137:217;11165:5;11161:1;:9;11137:217;;;11230:14;11245:13;11230:29;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;11204:14;11219:1;11204:17;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;;:61;11200:135;;;11310:1;11294:17;;11200:135;11172:3;;;;:::i;:::-;;;;11137:217;;;;11393:1;11376:13;:18;11372:239;;11419:21;11443:14;11458:1;11443:17;;;;;;;;:::i;:::-;;;;;;;;;;11419:41;;;;;;;;11443:17;;;;;;;11419:41;;-1:-1:-1;;;;;11419:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11503:29;;11419:41;;-1:-1:-1;11518:13:0;;11503:29;;;;;;:::i;:::-;;;;;;;;;;;11483:14;11498:1;11483:17;;;;;;;;:::i;:::-;;;;;;;;;:49;;:17;;;;;:49;;-1:-1:-1;;;;;;11483:49:0;-1:-1:-1;;;;;11483:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11555:29;;11587:4;;11483:49;11570:13;;11555:29;;;;;;:::i;:::-;;;;;;;;;;:36;;:29;;;;;;:36;;-1:-1:-1;;;;;;11555:36:0;-1:-1:-1;;;;;11555:36:0;;;;;;;;;;;;;-1:-1:-1;11555:36:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11372:239:0;-1:-1:-1;11069:3:0;;;;:::i;:::-;;;;11034:592;;1717:191;1791:16;1810:6;;-1:-1:-1;;;;;1827:17:0;;;-1:-1:-1;;;;;;1827:17:0;;;;;;1860:40;;1810:6;;;;;;;1860:40;;1791:16;1860:40;1780:128;1717:191;:::o;17901:542::-;-1:-1:-1;;;;;18059:32:0;;18000:7;18059:32;;;:18;:32;;;;;;18000:7;;18059:35;;18056:349;;18110:21;18145:12;18110:48;;18173:19;18195:10;-1:-1:-1;;;;;18195:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18173:50;-1:-1:-1;18278:12:0;18255:19;18173:50;18269:5;18255:19;:::i;:::-;18254:36;;;;:::i;:::-;18238:52;;18095:207;;18056:349;;;-1:-1:-1;;;;;18338:32:0;;;;;;:18;:32;;;;;;18381:12;;18338:40;;18373:5;18338:40;:::i;:::-;:55;;;;:::i;:::-;18322:71;;18056:349;18422:13;17901:542;-1:-1:-1;;;17901:542:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:131::-;-1:-1:-1;;;;;456:31:1;;446:42;;436:70;;502:1;499;492:12;517:315;585:6;593;646:2;634:9;625:7;621:23;617:32;614:52;;;662:1;659;652:12;614:52;701:9;688:23;720:31;745:5;720:31;:::i;:::-;770:5;822:2;807:18;;;;794:32;;-1:-1:-1;;;517:315:1:o;2021:247::-;2080:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:52;;;2149:1;2146;2139:12;2101:52;2188:9;2175:23;2207:31;2232:5;2207:31;:::i;2273:118::-;2359:5;2352:13;2345:21;2338:5;2335:32;2325:60;;2381:1;2378;2371:12;2396:241;2452:6;2505:2;2493:9;2484:7;2480:23;2476:32;2473:52;;;2521:1;2518;2511:12;2473:52;2560:9;2547:23;2579:28;2601:5;2579:28;:::i;2642:151::-;2718:20;;2767:1;2757:12;;2747:40;;2783:1;2780;2773:12;2747:40;2642:151;;;:::o;2798:208::-;2871:6;2924:2;2912:9;2903:7;2899:23;2895:32;2892:52;;;2940:1;2937;2930:12;2892:52;2963:37;2990:9;2963:37;:::i;3011:388::-;3079:6;3087;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;3195:9;3182:23;3214:31;3239:5;3214:31;:::i;:::-;3264:5;-1:-1:-1;3321:2:1;3306:18;;3293:32;3334:33;3293:32;3334:33;:::i;:::-;3386:7;3376:17;;;3011:388;;;;;:::o;3404:495::-;3584:3;3569:19;;3573:9;3665:6;3542:4;3699:194;3713:4;3710:1;3707:11;3699:194;;;3772:13;;3760:26;;3809:4;3833:12;;;;3868:15;;;;3733:1;3726:9;3699:194;;;3703:3;;;3404:495;;;;:::o;3904:250::-;3989:1;3999:113;4013:6;4010:1;4007:13;3999:113;;;4089:11;;;4083:18;4070:11;;;4063:39;4035:2;4028:10;3999:113;;;-1:-1:-1;;4146:1:1;4128:16;;4121:27;3904:250::o;4159:271::-;4201:3;4239:5;4233:12;4266:6;4261:3;4254:19;4282:76;4351:6;4344:4;4339:3;4335:14;4328:4;4321:5;4317:16;4282:76;:::i;:::-;4412:2;4391:15;-1:-1:-1;;4387:29:1;4378:39;;;;4419:4;4374:50;;4159:271;-1:-1:-1;;4159:271:1:o;4435:326::-;4528:5;4551:1;4561:194;4575:4;4572:1;4569:11;4561:194;;;4634:13;;4622:26;;4671:4;4695:12;;;;4730:15;;;;4595:1;4588:9;4561:194;;;4565:3;;4435:326;;:::o;4766:3882::-;4958:4;4987:2;5027;5016:9;5012:18;5057:2;5046:9;5039:21;5080:6;5115;5109:13;5146:6;5138;5131:22;5172:2;5162:12;;5205:2;5194:9;5190:18;5183:25;;5267:2;5257:6;5254:1;5250:14;5239:9;5235:30;5231:39;5305:2;5297:6;5293:15;5326:1;5336:3283;5350:6;5347:1;5344:13;5336:3283;;;5415:22;;;-1:-1:-1;;5411:36:1;5399:49;;5471:13;;5545:9;;-1:-1:-1;;;;;903:31:1;891:44;;5507:6;5610:2;5606;5602:11;5596:18;5651:2;5646;5638:6;5634:15;5627:27;5681:48;5725:2;5717:6;5713:15;5699:12;5681:48;:::i;:::-;5667:62;;;5778:2;5774;5770:11;5764:18;5831:6;5823;5819:19;5814:2;5806:6;5802:15;5795:44;5866:41;5900:6;5884:14;5866:41;:::i;:::-;5852:55;;;5930:4;5983:2;5979;5975:11;5969:18;6036:6;6028;6024:19;6019:2;6011:6;6007:15;6000:44;6071:41;6105:6;6089:14;6071:41;:::i;:::-;6057:55;;;;6135:4;6188:2;6184;6180:11;6174:18;6241:6;6233;6229:19;6224:2;6216:6;6212:15;6205:44;6276:41;6310:6;6294:14;6276:41;:::i;:::-;6262:55;;;;6340:4;6393:2;6389;6385:11;6379:18;6446:6;6438;6434:19;6429:2;6421:6;6417:15;6410:44;6481:41;6515:6;6499:14;6481:41;:::i;:::-;6467:55;;;;6545:4;6598:2;6594;6590:11;6584:18;6651:6;6643;6639:19;6634:2;6626:6;6622:15;6615:44;6686:41;6720:6;6704:14;6686:41;:::i;:::-;6672:55;;;;6750:4;6803:2;6799;6795:11;6789:18;6856:6;6848;6844:19;6839:2;6831:6;6827:15;6820:44;6891:41;6925:6;6909:14;6891:41;:::i;:::-;6877:55;;;;6956:6;7011:3;7007:2;7003:12;6997:19;7066:6;7058;7054:19;7048:3;7040:6;7036:16;7029:45;7102:41;7136:6;7120:14;7102:41;:::i;:::-;7087:56;;;;7167:6;7222:3;7218:2;7214:12;7208:19;7278:6;7269:7;7265:20;7259:3;7251:6;7247:16;7240:46;7314:42;7348:7;7332:14;7314:42;:::i;:::-;7299:57;;;;7380:6;7435:3;7431:2;7427:12;7421:19;7491:6;7482:7;7478:20;7472:3;7464:6;7460:16;7453:46;7527:42;7561:7;7545:14;7527:42;:::i;:::-;7593:6;7643:12;;;7637:19;7619:16;;;7612:45;7681:6;7731:12;;;7725:19;7707:16;;;7700:45;7769:6;7819:12;;;7813:19;7795:16;;;7788:45;7857:6;7907:12;;;7901:19;7883:16;;;7876:45;7945:6;7993:12;;;7987:19;-1:-1:-1;;;;;903:31:1;8055:16;;;891:44;8096:6;8146:12;;;8140:19;8122:16;;;8115:45;8184:6;8232:12;;;8226:19;7512:57;;-1:-1:-1;8184:6:1;-1:-1:-1;8226:19:1;-1:-1:-1;8258:59:1;8300:16;;;8226:19;8258:59;:::i;:::-;-1:-1:-1;;8372:6:1;8364:15;;8358:22;8349:6;8337:19;;8330:51;8436:6;8428:15;;8422:22;8413:6;8401:19;;8394:51;8500:6;8492:15;;;8486:22;8477:6;8465:19;;;8458:51;;;;8597:12;;;;8562:15;;;;5372:1;5365:9;5336:3283;;;-1:-1:-1;8636:6:1;;4766:3882;-1:-1:-1;;;;;;;;4766:3882:1:o;8653:343::-;8735:6;8743;8796:2;8784:9;8775:7;8771:23;8767:32;8764:52;;;8812:1;8809;8802:12;8764:52;8835:37;8862:9;8835:37;:::i;9001:127::-;9062:10;9057:3;9053:20;9050:1;9043:31;9093:4;9090:1;9083:15;9117:4;9114:1;9107:15;9133:125;9198:9;;;9219:10;;;9216:36;;;9232:18;;:::i;9603:340::-;9805:2;9787:21;;;9844:2;9824:18;;;9817:30;-1:-1:-1;;;9878:2:1;9863:18;;9856:46;9934:2;9919:18;;9603:340::o;9948:127::-;10009:10;10004:3;10000:20;9997:1;9990:31;10040:4;10037:1;10030:15;10064:4;10061:1;10054:15;10080:250;10147:2;10141:9;10189:6;10177:19;;10226:18;10211:34;;10247:22;;;10208:62;10205:88;;;10273:18;;:::i;:::-;10309:2;10302:22;10080:250;:::o;10335:255::-;10407:2;10401:9;10449:6;10437:19;;10486:18;10471:34;;10507:22;;;10468:62;10465:88;;;10533:18;;:::i;10595:138::-;10674:13;;10696:31;10674:13;10696:31;:::i;10738:699::-;10792:5;10845:3;10838:4;10830:6;10826:17;10822:27;10812:55;;10863:1;10860;10853:12;10812:55;10892:6;10886:13;10918:18;10955:2;10951;10948:10;10945:36;;;10961:18;;:::i;:::-;11036:2;11030:9;11004:2;11090:13;;-1:-1:-1;;11086:22:1;;;11110:2;11082:31;11078:40;11066:53;;;11134:18;;;11154:22;;;11131:46;11128:72;;;11180:18;;:::i;:::-;11220:10;11216:2;11209:22;11255:2;11247:6;11240:18;11301:3;11294:4;11289:2;11281:6;11277:15;11273:26;11270:35;11267:55;;;11318:1;11315;11308:12;11267:55;11331:76;11404:2;11397:4;11389:6;11385:17;11378:4;11370:6;11366:17;11331:76;:::i;:::-;11425:6;10738:699;-1:-1:-1;;;;;;10738:699:1:o;11442:652::-;11503:5;11556:3;11549:4;11541:6;11537:17;11533:27;11523:55;;11574:1;11571;11564:12;11523:55;11607:2;11601:9;11649:3;11641:6;11637:16;11719:6;11707:10;11704:22;11683:18;11671:10;11668:34;11665:62;11662:88;;;11730:18;;:::i;:::-;11766:2;11759:22;11801:6;11842:3;11830:16;;11858:15;;;11855:35;;;11886:1;11883;11876:12;11855:35;11910:6;11925:139;11941:6;11936:3;11933:15;11925:139;;;12009:10;;11997:23;;12049:4;12040:14;;;;11958;11925:139;;;-1:-1:-1;12082:6:1;;11442:652;-1:-1:-1;;;;;11442:652:1:o;12099:1696::-;12165:5;12213:6;12201:9;12196:3;12192:19;12188:32;12185:52;;;12233:1;12230;12223:12;12185:52;12255:17;;:::i;:::-;12246:26;;12301:9;12295:16;12330:18;12371:2;12363:6;12360:14;12357:34;;;12387:1;12384;12377:12;12357:34;12414:57;12467:3;12458:6;12447:9;12443:22;12414:57;:::i;:::-;12407:5;12400:72;12518:2;12507:9;12503:18;12497:25;12481:41;;12547:2;12537:8;12534:16;12531:36;;;12563:1;12560;12553:12;12531:36;12599:59;12654:3;12643:8;12632:9;12628:24;12599:59;:::i;:::-;12594:2;12587:5;12583:14;12576:83;12705:2;12694:9;12690:18;12684:25;12668:41;;12734:2;12724:8;12721:16;12718:36;;;12750:1;12747;12740:12;12718:36;12786:59;12841:3;12830:8;12819:9;12815:24;12786:59;:::i;:::-;12781:2;12774:5;12770:14;12763:83;12892:2;12881:9;12877:18;12871:25;12855:41;;12921:2;12911:8;12908:16;12905:36;;;12937:1;12934;12927:12;12905:36;12973:59;13028:3;13017:8;13006:9;13002:24;12973:59;:::i;:::-;12968:2;12961:5;12957:14;12950:83;13079:3;13068:9;13064:19;13058:26;13042:42;;13109:2;13099:8;13096:16;13093:36;;;13125:1;13122;13115:12;13093:36;13162:59;13217:3;13206:8;13195:9;13191:24;13162:59;:::i;:::-;13156:3;13149:5;13145:15;13138:84;13268:3;13257:9;13253:19;13247:26;13231:42;;13298:2;13288:8;13285:16;13282:36;;;13314:1;13311;13304:12;13282:36;13351:59;13406:3;13395:8;13384:9;13380:24;13351:59;:::i;:::-;13345:3;13338:5;13334:15;13327:84;13457:3;13446:9;13442:19;13436:26;13420:42;;13487:2;13477:8;13474:16;13471:36;;;13503:1;13500;13493:12;13471:36;13540:59;13595:3;13584:8;13573:9;13569:24;13540:59;:::i;:::-;13534:3;13527:5;13523:15;13516:84;13646:3;13635:9;13631:19;13625:26;13609:42;;13676:2;13666:8;13663:16;13660:36;;;13692:1;13689;13682:12;13660:36;;13729:59;13784:3;13773:8;13762:9;13758:24;13729:59;:::i;:::-;13723:3;13716:5;13712:15;13705:84;;12099:1696;;;;:::o;13800:1771::-;13930:6;13938;13991:2;13979:9;13970:7;13966:23;13962:32;13959:52;;;14007:1;14004;13997:12;13959:52;14040:9;14034:16;14069:18;14110:2;14102:6;14099:14;14096:34;;;14126:1;14123;14116:12;14096:34;14149:22;;;;14205:6;14187:16;;;14183:29;14180:49;;;14225:1;14222;14215:12;14180:49;14251:22;;:::i;:::-;14296:33;14326:2;14296:33;:::i;:::-;14289:5;14282:48;14369:2;14365;14361:11;14355:18;14398:2;14388:8;14385:16;14382:36;;;14414:1;14411;14404:12;14382:36;14450:56;14498:7;14487:8;14483:2;14479:17;14450:56;:::i;:::-;14445:2;14438:5;14434:14;14427:80;;14546:2;14542;14538:11;14532:18;14575:2;14565:8;14562:16;14559:36;;;14591:1;14588;14581:12;14559:36;14627:56;14675:7;14664:8;14660:2;14656:17;14627:56;:::i;:::-;14622:2;14615:5;14611:14;14604:80;;14723:2;14719;14715:11;14709:18;14752:2;14742:8;14739:16;14736:36;;;14768:1;14765;14758:12;14736:36;14804:56;14852:7;14841:8;14837:2;14833:17;14804:56;:::i;:::-;14799:2;14792:5;14788:14;14781:80;;14908:3;14904:2;14900:12;14894:19;14888:3;14881:5;14877:15;14870:44;14961:3;14957:2;14953:12;14947:19;14941:3;14934:5;14930:15;14923:44;15014:3;15010:2;15006:12;15000:19;14994:3;14987:5;14983:15;14976:44;15067:3;15063:2;15059:12;15053:19;15047:3;15040:5;15036:15;15029:44;15092:3;15127:42;15165:2;15161;15157:11;15127:42;:::i;:::-;15111:14;;;15104:66;15189:3;15230:11;;;15224:18;15208:14;;;15201:42;15262:3;15297:57;15346:7;15333:11;;;15297:57;:::i;:::-;15281:14;;;15274:81;15425:2;15410:18;;15404:25;15285:5;;-1:-1:-1;15404:25:1;-1:-1:-1;15441:16:1;;;15438:36;;;15470:1;15467;15460:12;15438:36;;15493:72;15557:7;15546:8;15535:9;15531:24;15493:72;:::i;:::-;15483:82;;;13800:1771;;;;;:::o;15576:184::-;15646:6;15699:2;15687:9;15678:7;15674:23;15670:32;15667:52;;;15715:1;15712;15705:12;15667:52;-1:-1:-1;15738:16:1;;15576:184;-1:-1:-1;15576:184:1:o;16460:127::-;16521:10;16516:3;16512:20;16509:1;16502:31;16552:4;16549:1;16542:15;16576:4;16573:1;16566:15;16592:128;16659:9;;;16680:11;;;16677:37;;;16694:18;;:::i;17078:135::-;17117:3;17138:17;;;17135:43;;17158:18;;:::i;:::-;-1:-1:-1;17205:1:1;17194:13;;17078:135::o;17575:127::-;17636:10;17631:3;17627:20;17624:1;17617:31;17667:4;17664:1;17657:15;17691:4;17688:1;17681:15;19133:245;19200:6;19253:2;19241:9;19232:7;19228:23;19224:32;19221:52;;;19269:1;19266;19259:12;19221:52;19301:9;19295:16;19320:28;19342:5;19320:28;:::i;20495:168::-;20568:9;;;20599;;20616:15;;;20610:22;;20596:37;20586:71;;20637:18;;:::i;20668:217::-;20708:1;20734;20724:132;;20778:10;20773:3;20769:20;20766:1;20759:31;20813:4;20810:1;20803:15;20841:4;20838:1;20831:15;20724:132;-1:-1:-1;20870:9:1;;20668:217::o

Swarm Source

ipfs://b9052f6844735868a6868d22c178e2d6e093108431aa1c96e0796acc16a47b82

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.