Token AirshipX Coin

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
45,000,000,000 ASC

Holders:
7,808 addresses

Transfers:
-

Contract:
0x60B3A0E654C75D8d4Df465Bc721743E10047225A0x60B3A0E654C75D8d4Df465Bc721743E10047225A

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AirshipXCoin

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-05
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.0;


interface IERC20 {

    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);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    uint256 private _totalCirculation;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _totalSupply = 45000000000 * 10 ** 18;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalCirculation += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract AirshipXCoin is ERC20, Ownable {

    uint256 public startTime;
    address public miner;
    address public add_Ecosystem = 0xC07Cc7494Edc9852485969C532c5B41b3a529A8C;
    address public add_Contributiors = 0xDC4Bf476CD818F60bd1096313D086B33Fb1BA076;
    uint256 public MAXECOSYSTEM = 315 * 10 ** 8 * 10 ** 18;
    uint256 public MAXCONTRIBUTIORS = 225 * 10 ** 7 * 10 ** 18;
    uint256 public rateEcosystem = 10;
    uint256 public amountEcosystem;
    uint256 public amountContributiors;
    uint256 public contributiorsReleasePerMonth = MAXCONTRIBUTIORS / 24;
    uint256 public yearPeriod = 365 days;

    constructor() ERC20("AirshipX Coin", "ASC"){
        _mint(0xde45dBa1310603572410D87Ac245215f6D8d9958,675 * 10 ** 7 * 10 ** 18);  
        _mint(0x563d08A133F4B4F197B0C334c8F0804571297B34,450 * 10 ** 7 * 10 ** 18);  
        miner = _msgSender();           
        startTime = 1669219140;     // 2022-11-23 23:59:00
    }

    function ecosystemReleaseMint() public {
        require(_msgSender() == miner,"ERROR ROLE");


        require(amountEcosystem < MAXECOSYSTEM,"RELEASE DONE");
        uint256 canReleaseAmount = getEcosystemCanReleaseAmount();

        if (amountEcosystem + canReleaseAmount > MAXECOSYSTEM) {
            _mint(add_Ecosystem, MAXECOSYSTEM - amountEcosystem);       
            amountEcosystem = MAXECOSYSTEM;
        }else {
           amountEcosystem += canReleaseAmount; 
           _mint(add_Ecosystem, canReleaseAmount);        
        }
        
    }

    function getEcosystemCanReleaseAmount() public view returns(uint256){
        uint256 amountPerDay = getEcosystemAmountPerDay();
        uint256 totalMintAmount = getEcosystemTotalMintAmount();
        return ((totalMintAmount - amountEcosystem) / amountPerDay) * amountPerDay;
    }

    function getEcosystemTotalMintAmount() public view returns(uint256){
        uint256 year = getYears();
        uint256 totalMint = 0;

        uint256 lastyear = startTime + year * yearPeriod;
        uint256 amountPerDay = getEcosystemAmountPerDay();

        if(year > 0){
            for (uint i ; i < year; i++){
                totalMint += MAXECOSYSTEM * rateEcosystem / ( 2 ** i * 100);
            }
        }  
        totalMint += (block.timestamp - lastyear) * amountPerDay / 1 days;

        return totalMint;
    }

    function contributiorsReleaseMint() public {
        require(_msgSender() == miner,"ERROR ROLE");

        require(amountContributiors < MAXCONTRIBUTIORS,"RELEASE DONE");
        uint256 canReleaseAmount = getContributiorsCanReleaseAmount();

        if (amountContributiors + canReleaseAmount > MAXCONTRIBUTIORS) {
            _mint(add_Contributiors, MAXCONTRIBUTIORS - amountContributiors);       
            amountContributiors = MAXCONTRIBUTIORS;
        }else {
           amountContributiors += canReleaseAmount; 
           _mint(add_Contributiors, canReleaseAmount);        
        }
    }

    function getContributiorsCanReleaseAmount() public view returns(uint256){
        uint256 amountPerMonth = contributiorsReleasePerMonth;
        uint256 totalMintAmount = getContributiorsTotalMintAmount();
        return ((totalMintAmount - amountContributiors) / amountPerMonth) * amountPerMonth;
    }

    function getContributiorsTotalMintAmount() public view returns(uint256){
        return (block.timestamp - startTime) * contributiorsReleasePerMonth / 30 days;
    }

    function getEcosystemAmountPerDay() public view returns(uint256){
        uint256 year = getYears();
        return MAXECOSYSTEM * rateEcosystem / ( 2 ** year * 100 * 365);
    }

    function getYears() public  view returns(uint256){
        return (block.timestamp - startTime) / yearPeriod;
    }

    function resetMiner(address _new) public onlyOwner(){
        miner = _new;
    }

    function resetContributiorsAddress(address _new) public onlyOwner(){
        add_Contributiors = _new;
    }
    function resetEcosystemAddress(address _new) public onlyOwner(){
        add_Ecosystem = _new;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAXCONTRIBUTIORS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXECOSYSTEM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"add_Contributiors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"add_Ecosystem","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountContributiors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountEcosystem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contributiorsReleaseMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contributiorsReleasePerMonth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ecosystemReleaseMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContributiorsCanReleaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContributiorsTotalMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEcosystemAmountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEcosystemCanReleaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEcosystemTotalMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYears","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"miner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateEcosystem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"resetContributiorsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"resetEcosystemAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"resetMiner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600980546001600160a01b031990811673c07cc7494edc9852485969c532c5b41b3a529a8c17909155600a805490911673dc4bf476cd818f60bd1096313d086b33fb1ba0761781556b65c83075aa27c77e8c000000600b556b07452808679520890a000000600c819055600d91909155620000829060189062000400565b6010556301e133806011553480156200009a57600080fd5b50604080518082018252600d81526c20b4b939b434b82c1021b7b4b760991b60208083019182528351808501909452600384526241534360e81b908401528151919291620000eb91600491620002f5565b50805162000101906005906020840190620002f5565b50506b916720a817a68ab4c8000000600255506200012862000122620001b8565b620001bc565b6200015473de45dba1310603572410d87ac245215f6d8d99586b15cf781936bf619b1e0000006200020e565b6200018073563d08a133f4b4f197b0c334c8f0804571297b346b0e8a5010cf2a4112140000006200020e565b6200018a620001b8565b600880546001600160a01b0319166001600160a01b039290921691909117905563637e43446007556200045e565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002405760405162461bcd60e51b815260040162000237906200039b565b60405180910390fd5b6200024e60008383620002f0565b8060036000828254620002629190620003db565b90915550506001600160a01b0382166000908152602081905260408120805483929062000291908490620003db565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620002d6908590620003d2565b60405180910390a3620002ec60008383620002f0565b5050565b505050565b828054620003039062000421565b90600052602060002090601f01602090048101928262000327576000855562000372565b82601f106200034257805160ff191683800117855562000372565b8280016001018555821562000372579182015b828111156200037257825182559160200191906001019062000355565b506200038092915062000384565b5090565b5b8082111562000380576000815560010162000385565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60008219821115620003fb57634e487b7160e01b81526011600452602481fd5b500190565b6000826200041c57634e487b7160e01b81526012600452602481fd5b500490565b6002810460018216806200043657607f821691505b602082108114156200045857634e487b7160e01b600052602260045260246000fd5b50919050565b611577806200046e6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063715018a611610125578063a9b370ea116100ad578063d209082e1161007c578063d209082e146103c8578063d65ca338146103d0578063dd62ed3e146103d8578063eba04f50146103eb578063f2fde38b146103f35761021c565b8063a9b370ea1461039d578063ab1f767e146103a5578063ada436e9146103ad578063b43dee78146103c05761021c565b80638da5cb5b116100f45780638da5cb5b1461035f57806395d89b4114610367578063a457c2d71461036f578063a5008a7314610382578063a9059cbb1461038a5761021c565b8063715018a61461033f578063767441df1461034757806378e979251461034f5780638b61863c146103575761021c565b8063313ce567116101a857806339f3ac4b1161017757806339f3ac4b146103015780635b6bca81146103095780636c7b12141461031c5780636ce1e5e81461032457806370a082311461032c5761021c565b8063313ce567146102bc578063338552c4146102d1578063349dc329146102d957806339509351146102ee5761021c565b80631647b86a116101ef5780631647b86a1461028957806318160ddd146102915780631b4f8a961461029957806323b872dd146102a157806330893acf146102b45761021c565b806306fdde0314610221578063095ea7b31461023f5780630ada93c21461025f5780630b1987e514610274575b600080fd5b610229610406565b604051610236919061101d565b60405180910390f35b61025261024d366004610fd5565b610498565b6040516102369190611012565b6102676104ba565b604051610236919061133c565b610287610282366004610f4e565b6104dc565b005b610267610546565b61026761054c565b610267610552565b6102526102af366004610f9a565b610622565b610267610652565b6102c461068e565b6040516102369190611345565b610267610693565b6102e1610699565b6040516102369190610ffe565b6102526102fc366004610fd5565b6106a8565b6102676106f4565b610287610317366004610f4e565b61071d565b61028761077e565b61026761085e565b61026761033a366004610f4e565b61087f565b61028761089e565b6102876108e9565b6102676109c1565b6102e16109c7565b6102e16109d6565b6102296109e5565b61025261037d366004610fd5565b6109f4565b610267610a60565b610252610398366004610fd5565b610a66565b6102e1610a7e565b610267610a8d565b6102876103bb366004610f4e565b610a93565b610267610af4565b610267610afa565b610267610b49565b6102676103e6366004610f68565b610b4f565b610267610b7a565b610287610401366004610f4e565b610b80565b606060048054610415906114d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610441906114d5565b801561048e5780601f106104635761010080835404028352916020019161048e565b820191906000526020600020905b81548152906001019060200180831161047157829003601f168201915b5050505050905090565b6000806104a3610bee565b90506104b0818585610bf2565b5060019392505050565b6000601154600754426104cd91906114be565b6104d7919061136b565b905090565b6104e4610bee565b6001600160a01b03166104f56109d6565b6001600160a01b0316146105245760405162461bcd60e51b815260040161051b906111dc565b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600f5481565b60025490565b60008061055d6104ba565b905060008060115483610570919061149f565b60075461057d9190611353565b90506000610589610afa565b905083156105ec5760005b848110156105ea576105a78160026113d1565b6105b290606461149f565b600d54600b546105c2919061149f565b6105cc919061136b565b6105d69085611353565b9350806105e281611510565b915050610594565b505b62015180816105fb84426114be565b610605919061149f565b61060f919061136b565b6106199084611353565b94505050505090565b60008061062d610bee565b905061063a858285610ca6565b610645858585610cf0565b60019150505b9392505050565b6010546000908161066161085e565b90508182600f548361067391906114be565b61067d919061136b565b610687919061149f565b9250505090565b601290565b600c5481565b6008546001600160a01b031681565b6000806106b3610bee565b6001600160a01b038082166000908152600160209081526040808320938916835292905220549091506104b090829086906106ef908790611353565b610bf2565b6000806106ff610afa565b9050600061070b610552565b90508182600e548361067391906114be565b610725610bee565b6001600160a01b03166107366109d6565b6001600160a01b03161461075c5760405162461bcd60e51b815260040161051b906111dc565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316610792610bee565b6001600160a01b0316146107b85760405162461bcd60e51b815260040161051b906110b3565b600c54600f54106107db5760405162461bcd60e51b815260040161051b90611211565b60006107e5610652565b9050600c5481600f546107f89190611353565b111561082e57600a54600f54600c54610823926001600160a01b03169161081e916114be565b610e14565b600c54600f5561085b565b80600f60008282546108409190611353565b9091555050600a5461085b906001600160a01b031682610e14565b50565b600062278d006010546007544261087591906114be565b6104cd919061149f565b6001600160a01b0381166000908152602081905260409020545b919050565b6108a6610bee565b6001600160a01b03166108b76109d6565b6001600160a01b0316146108dd5760405162461bcd60e51b815260040161051b906111dc565b6108e76000610ee0565b565b6008546001600160a01b03166108fd610bee565b6001600160a01b0316146109235760405162461bcd60e51b815260040161051b906110b3565b600b54600e54106109465760405162461bcd60e51b815260040161051b90611211565b60006109506106f4565b9050600b5481600e546109639190611353565b111561099457600954600e54600b54610989926001600160a01b03169161081e916114be565b600b54600e5561085b565b80600e60008282546109a69190611353565b909155505060095461085b906001600160a01b031682610e14565b60075481565b6009546001600160a01b031681565b6006546001600160a01b031690565b606060058054610415906114d5565b6000806109ff610bee565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205490915083811015610a485760405162461bcd60e51b815260040161051b906112c0565b610a558286868403610bf2565b506001949350505050565b600d5481565b600080610a71610bee565b90506104b0818585610cf0565b600a546001600160a01b031681565b600b5481565b610a9b610bee565b6001600160a01b0316610aac6109d6565b6001600160a01b031614610ad25760405162461bcd60e51b815260040161051b906111dc565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60105481565b600080610b056104ba565b9050610b128160026113d1565b610b1d90606461149f565b610b299061016d61149f565b600d54600b54610b39919061149f565b610b43919061136b565b91505090565b600e5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60115481565b610b88610bee565b6001600160a01b0316610b996109d6565b6001600160a01b031614610bbf5760405162461bcd60e51b815260040161051b906111dc565b6001600160a01b038116610be55760405162461bcd60e51b815260040161051b906110d7565b61085b81610ee0565b3390565b6001600160a01b038316610c185760405162461bcd60e51b815260040161051b9061127c565b6001600160a01b038216610c3e5760405162461bcd60e51b815260040161051b9061111d565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c9990859061133c565b60405180910390a3505050565b6000610cb28484610b4f565b90506000198114610cea5781811015610cdd5760405162461bcd60e51b815260040161051b9061115f565b610cea8484848403610bf2565b50505050565b6001600160a01b038316610d165760405162461bcd60e51b815260040161051b90611237565b6001600160a01b038216610d3c5760405162461bcd60e51b815260040161051b90611070565b610d47838383610f32565b6001600160a01b03831660009081526020819052604090205481811015610d805760405162461bcd60e51b815260040161051b90611196565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610db7908490611353565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e01919061133c565b60405180910390a3610cea848484610f32565b6001600160a01b038216610e3a5760405162461bcd60e51b815260040161051b90611305565b610e4660008383610f32565b8060036000828254610e589190611353565b90915550506001600160a01b03821660009081526020819052604081208054839290610e85908490611353565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ec890859061133c565b60405180910390a3610edc60008383610f32565b5050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b505050565b80356001600160a01b038116811461089957600080fd5b600060208284031215610f5f578081fd5b61064b82610f37565b60008060408385031215610f7a578081fd5b610f8383610f37565b9150610f9160208401610f37565b90509250929050565b600080600060608486031215610fae578081fd5b610fb784610f37565b9250610fc560208501610f37565b9150604084013590509250925092565b60008060408385031215610fe7578182fd5b610ff083610f37565b946020939093013593505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b818110156110495785810183015185820160400152820161102d565b8181111561105a5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252600a90820152694552524f5220524f4c4560b01b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b52454c4541534520444f4e4560a01b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60ff91909116815260200190565b600082198211156113665761136661152b565b500190565b60008261138657634e487b7160e01b81526012600452602481fd5b500490565b80825b600180861161139d57506113c8565b8187048211156113af576113af61152b565b808616156113bc57918102915b9490941c93800261138e565b94509492505050565b600061064b60001984846000826113ea5750600161064b565b816113f75750600061064b565b816001811461140d576002811461141757611444565b600191505061064b565b60ff8411156114285761142861152b565b6001841b91508482111561143e5761143e61152b565b5061064b565b5060208310610133831016604e8410600b8410161715611477575081810a838111156114725761147261152b565b61064b565b611484848484600161138b565b8086048211156114965761149661152b565b02949350505050565b60008160001904831182151516156114b9576114b961152b565b500290565b6000828210156114d0576114d061152b565b500390565b6002810460018216806114e957607f821691505b6020821081141561150a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156115245761152461152b565b5060010190565b634e487b7160e01b600052601160045260246000fdfea264697066735822122026245b1fa83c697a5ed78478f2a83c647e8745de28ec3969aa1ba5c56c213b3c64736f6c63430008000033

Deployed ByteCode Sourcemap

7616:4133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2675:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3607:201;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11312:117::-;;;:::i;:::-;;;;;;;:::i;11528:110::-;;;;;;:::i;:::-;;:::i;:::-;;8090:34;;;:::i;2996:108::-;;;:::i;9461:543::-;;;:::i;3816:295::-;;;;;;:::i;:::-;;:::i;10633:307::-;;;:::i;2895:93::-;;;:::i;:::-;;;;;;;:::i;7948:58::-;;;:::i;7696:20::-;;;:::i;:::-;;;;;;;:::i;4119:240::-;;;;;;:::i;:::-;;:::i;9166:287::-;;;:::i;11644:102::-;;;;;;:::i;:::-;;:::i;10012:613::-;;;:::i;10948:167::-;;;:::i;3112:127::-;;;;;;:::i;:::-;;:::i;1663:103::-;;;:::i;8585:573::-;;;:::i;7665:24::-;;;:::i;7723:73::-;;;:::i;1440:87::-;;;:::i;2783:104::-;;;:::i;4367:438::-;;;;;;:::i;:::-;;:::i;8013:33::-;;;:::i;3247:193::-;;;;;;:::i;:::-;;:::i;7803:77::-;;;:::i;7887:54::-;;;:::i;11437:83::-;;;;;;:::i;:::-;;:::i;8131:67::-;;;:::i;11123:181::-;;;:::i;8053:30::-;;;:::i;3448:151::-;;;;;;:::i;:::-;;:::i;8205:36::-;;;:::i;1774:201::-;;;;;;:::i;:::-;;:::i;2675:100::-;2729:13;2762:5;2755:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2675:100;:::o;3607:201::-;3690:4;3707:13;3723:12;:10;:12::i;:::-;3707:28;;3746:32;3755:5;3762:7;3771:6;3746:8;:32::i;:::-;-1:-1:-1;3796:4:0;;3607:201;-1:-1:-1;;;3607:201:0:o;11312:117::-;11353:7;11411:10;;11398:9;;11380:15;:27;;;;:::i;:::-;11379:42;;;;:::i;:::-;11372:49;;11312:117;:::o;11528:110::-;1586:12;:10;:12::i;:::-;-1:-1:-1;;;;;1575:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1575:23:0;;1567:68;;;;-1:-1:-1;;;1567:68:0;;;;;;;:::i;:::-;;;;;;;;;11606:17:::1;:24:::0;;-1:-1:-1;;;;;;11606:24:0::1;-1:-1:-1::0;;;;;11606:24:0;;;::::1;::::0;;;::::1;::::0;;11528:110::o;8090:34::-;;;;:::o;2996:108::-;3084:12;;2996:108;:::o;9461:543::-;9520:7;9539:12;9554:10;:8;:10::i;:::-;9539:25;;9575:17;9609:16;9647:10;;9640:4;:17;;;;:::i;:::-;9628:9;;:29;;;;:::i;:::-;9609:48;;9668:20;9691:26;:24;:26::i;:::-;9668:49;-1:-1:-1;9733:8:0;;9730:160;;9762:6;9757:122;9775:4;9771:1;:8;9757:122;;;9850:6;9855:1;9850;:6;:::i;:::-;:12;;9859:3;9850:12;:::i;:::-;9832:13;;9817:12;;:28;;;;:::i;:::-;:46;;;;:::i;:::-;9804:59;;;;:::i;:::-;;-1:-1:-1;9781:3:0;;;;:::i;:::-;;;;9757:122;;;;9730:160;9961:6;9946:12;9916:26;9934:8;9916:15;:26;:::i;:::-;9915:43;;;;:::i;:::-;:52;;;;:::i;:::-;9902:65;;;;:::i;:::-;;-1:-1:-1;;;;;9461:543:0;:::o;3816:295::-;3947:4;3964:15;3982:12;:10;:12::i;:::-;3964:30;;4005:38;4021:4;4027:7;4036:6;4005:15;:38::i;:::-;4054:27;4064:4;4070:2;4074:6;4054:9;:27::i;:::-;4099:4;4092:11;;;3816:295;;;;;;:::o;10633:307::-;10741:28;;10697:7;;;10806:33;:31;:33::i;:::-;10780:59;;10918:14;10900;10877:19;;10859:15;:37;;;;:::i;:::-;10858:56;;;;:::i;:::-;10857:75;;;;:::i;:::-;10850:82;;;;10633:307;:::o;2895:93::-;2978:2;2895:93;:::o;7948:58::-;;;;:::o;7696:20::-;;;-1:-1:-1;;;;;7696:20:0;;:::o;4119:240::-;4207:4;4224:13;4240:12;:10;:12::i;:::-;-1:-1:-1;;;;;4288:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;4224:28;;-1:-1:-1;4263:66:0;;4224:28;;4279:7;;4288:40;;4318:10;;4288:40;:::i;:::-;4263:8;:66::i;9166:287::-;9226:7;9245:20;9268:26;:24;:26::i;:::-;9245:49;;9305:23;9331:29;:27;:29::i;:::-;9305:55;;9433:12;9417;9398:15;;9380;:33;;;;:::i;11644:102::-;1586:12;:10;:12::i;:::-;-1:-1:-1;;;;;1575:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1575:23:0;;1567:68;;;;-1:-1:-1;;;1567:68:0;;;;;;;:::i;:::-;11718:13:::1;:20:::0;;-1:-1:-1;;;;;;11718:20:0::1;-1:-1:-1::0;;;;;11718:20:0;;;::::1;::::0;;;::::1;::::0;;11644:102::o;10012:613::-;10090:5;;-1:-1:-1;;;;;10090:5:0;10074:12;:10;:12::i;:::-;-1:-1:-1;;;;;10074:21:0;;10066:43;;;;-1:-1:-1;;;10066:43:0;;;;;;;:::i;:::-;10152:16;;10130:19;;:38;10122:62;;;;-1:-1:-1;;;10122:62:0;;;;;;;:::i;:::-;10195:24;10222:34;:32;:34::i;:::-;10195:61;;10314:16;;10295;10273:19;;:38;;;;:::i;:::-;:57;10269:349;;;10353:17;;10391:19;;10372:16;;10347:64;;-1:-1:-1;;;;;10353:17:0;;10372:38;;;:::i;:::-;10347:5;:64::i;:::-;10455:16;;10433:19;:38;10269:349;;;10525:16;10502:19;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;10562:17:0;;10556:42;;-1:-1:-1;;;;;10562:17:0;10581:16;10556:5;:42::i;:::-;10012:613;:::o;10948:167::-;11011:7;11100;11069:28;;11056:9;;11038:15;:27;;;;:::i;:::-;11037:60;;;;:::i;3112:127::-;-1:-1:-1;;;;;3213:18:0;;3186:7;3213:18;;;;;;;;;;;3112:127;;;;:::o;1663:103::-;1586:12;:10;:12::i;:::-;-1:-1:-1;;;;;1575:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1575:23:0;;1567:68;;;;-1:-1:-1;;;1567:68:0;;;;;;;:::i;:::-;1728:30:::1;1755:1;1728:18;:30::i;:::-;1663:103::o:0;8585:573::-;8659:5;;-1:-1:-1;;;;;8659:5:0;8643:12;:10;:12::i;:::-;-1:-1:-1;;;;;8643:21:0;;8635:43;;;;-1:-1:-1;;;8635:43:0;;;;;;;:::i;:::-;8719:12;;8701:15;;:30;8693:54;;;;-1:-1:-1;;;8693:54:0;;;;;;;:::i;:::-;8758:24;8785:30;:28;:30::i;:::-;8758:57;;8869:12;;8850:16;8832:15;;:34;;;;:::i;:::-;:49;8828:313;;;8904:13;;8934:15;;8919:12;;8898:52;;-1:-1:-1;;;;;8904:13:0;;8919:30;;;:::i;8898:52::-;8990:12;;8972:15;:30;8828:313;;;9052:16;9033:15;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;9089:13:0;;9083:38;;-1:-1:-1;;;;;9089:13:0;9104:16;9083:5;:38::i;7665:24::-;;;;:::o;7723:73::-;;;-1:-1:-1;;;;;7723:73:0;;:::o;1440:87::-;1513:6;;-1:-1:-1;;;;;1513:6:0;1440:87;:::o;2783:104::-;2839:13;2872:7;2865:14;;;;;:::i;4367:438::-;4460:4;4477:13;4493:12;:10;:12::i;:::-;-1:-1:-1;;;;;4543:18:0;;;4516:24;4543:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;4477:28;;-1:-1:-1;4589:35:0;;;;4581:85;;;;-1:-1:-1;;;4581:85:0;;;;;;;:::i;:::-;4702:60;4711:5;4718:7;4746:15;4727:16;:34;4702:8;:60::i;:::-;-1:-1:-1;4793:4:0;;4367:438;-1:-1:-1;;;;4367:438:0:o;8013:33::-;;;;:::o;3247:193::-;3326:4;3343:13;3359:12;:10;:12::i;:::-;3343:28;;3382;3392:5;3399:2;3403:6;3382:9;:28::i;7803:77::-;;;-1:-1:-1;;;;;7803:77:0;;:::o;7887:54::-;;;;:::o;11437:83::-;1586:12;:10;:12::i;:::-;-1:-1:-1;;;;;1575:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1575:23:0;;1567:68;;;;-1:-1:-1;;;1567:68:0;;;;;;;:::i;:::-;11500:5:::1;:12:::0;;-1:-1:-1;;;;;;11500:12:0::1;-1:-1:-1::0;;;;;11500:12:0;;;::::1;::::0;;;::::1;::::0;;11437:83::o;8131:67::-;;;;:::o;11123:181::-;11179:7;11198:12;11213:10;:8;:10::i;:::-;11198:25;-1:-1:-1;11274:9:0;11198:25;11274:1;:9;:::i;:::-;:15;;11286:3;11274:15;:::i;:::-;:21;;11292:3;11274:21;:::i;:::-;11256:13;;11241:12;;:28;;;;:::i;:::-;:55;;;;:::i;:::-;11234:62;;;11123:181;:::o;8053:30::-;;;;:::o;3448:151::-;-1:-1:-1;;;;;3564:18:0;;;3537:7;3564:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3448:151::o;8205:36::-;;;;:::o;1774:201::-;1586:12;:10;:12::i;:::-;-1:-1:-1;;;;;1575:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1575:23:0;;1567:68;;;;-1:-1:-1;;;1567:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1863:22:0;::::1;1855:73;;;;-1:-1:-1::0;;;1855:73:0::1;;;;;;;:::i;:::-;1939:28;1958:8;1939:18;:28::i;988:98::-:0;1068:10;988:98;:::o;6503:380::-;-1:-1:-1;;;;;6639:19:0;;6631:68;;;;-1:-1:-1;;;6631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6718:21:0;;6710:68;;;;-1:-1:-1;;;6710:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6791:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;6843:32;;;;;6821:6;;6843:32;:::i;:::-;;;;;;;;6503:380;;;:::o;6891:453::-;7026:24;7053:25;7063:5;7070:7;7053:9;:25::i;:::-;7026:52;;-1:-1:-1;;7093:16:0;:37;7089:248;;7175:6;7155:16;:26;;7147:68;;;;-1:-1:-1;;;7147:68:0;;;;;;;:::i;:::-;7259:51;7268:5;7275:7;7303:6;7284:16;:25;7259:8;:51::i;:::-;6891:453;;;;:::o;4813:671::-;-1:-1:-1;;;;;4944:18:0;;4936:68;;;;-1:-1:-1;;;4936:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5023:16:0;;5015:64;;;;-1:-1:-1;;;5015:64:0;;;;;;;:::i;:::-;5092:38;5113:4;5119:2;5123:6;5092:20;:38::i;:::-;-1:-1:-1;;;;;5165:15:0;;5143:19;5165:15;;;;;;;;;;;5199:21;;;;5191:72;;;;-1:-1:-1;;;5191:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5299:15:0;;;:9;:15;;;;;;;;;;;5317:20;;;5299:38;;5359:13;;;;;;;;:23;;5331:6;;5299:9;5359:23;;5331:6;;5359:23;:::i;:::-;;;;;;;;5415:2;-1:-1:-1;;;;;5400:26:0;5409:4;-1:-1:-1;;;;;5400:26:0;;5419:6;5400:26;;;;;;:::i;:::-;;;;;;;;5439:37;5459:4;5465:2;5469:6;5439:19;:37::i;5492:404::-;-1:-1:-1;;;;;5576:21:0;;5568:65;;;;-1:-1:-1;;;5568:65:0;;;;;;;:::i;:::-;5646:49;5675:1;5679:7;5688:6;5646:20;:49::i;:::-;5729:6;5708:17;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5746:18:0;;:9;:18;;;;;;;;;;:28;;5768:6;;5746:9;:28;;5768:6;;5746:28;:::i;:::-;;;;-1:-1:-1;;5790:37:0;;-1:-1:-1;;;;;5790:37:0;;;5807:1;;5790:37;;;;5820:6;;5790:37;:::i;:::-;;;;;;;;5840:48;5868:1;5872:7;5881:6;5840:19;:48::i;:::-;5492:404;;:::o;1983:191::-;2076:6;;;-1:-1:-1;;;;;2093:17:0;;;-1:-1:-1;;;;;;2093:17:0;;;;;;;2126:40;;2076:6;;;2093:17;2076:6;;2126:40;;2057:16;;2126:40;1983:191;;:::o;7352:125::-;;;;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:266::-;;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1173:6;1165;1158:22;1120:2;1201:31;1222:9;1201:31;:::i;:::-;1191:41;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1110:179:1:o;1294:203::-;-1:-1:-1;;;;;1458:32:1;;;;1440:51;;1428:2;1413:18;;1395:102::o;1502:187::-;1667:14;;1660:22;1642:41;;1630:2;1615:18;;1597:92::o;1694:603::-;;1835:2;1864;1853:9;1846:21;1896:6;1890:13;1939:6;1934:2;1923:9;1919:18;1912:34;1964:4;1977:140;1991:6;1988:1;1985:13;1977:140;;;2086:14;;;2082:23;;2076:30;2052:17;;;2071:2;2048:26;2041:66;2006:10;;1977:140;;;2135:6;2132:1;2129:13;2126:2;;;2205:4;2200:2;2191:6;2180:9;2176:22;2172:31;2165:45;2126:2;-1:-1:-1;2281:2:1;2260:15;-1:-1:-1;;2256:29:1;2241:45;;;;2288:2;2237:54;;1815:482;-1:-1:-1;;;1815:482:1:o;2302:399::-;2504:2;2486:21;;;2543:2;2523:18;;;2516:30;2582:34;2577:2;2562:18;;2555:62;-1:-1:-1;;;2648:2:1;2633:18;;2626:33;2691:3;2676:19;;2476:225::o;2706:334::-;2908:2;2890:21;;;2947:2;2927:18;;;2920:30;-1:-1:-1;;;2981:2:1;2966:18;;2959:40;3031:2;3016:18;;2880:160::o;3045:402::-;3247:2;3229:21;;;3286:2;3266:18;;;3259:30;3325:34;3320:2;3305:18;;3298:62;-1:-1:-1;;;3391:2:1;3376:18;;3369:36;3437:3;3422:19;;3219:228::o;3452:398::-;3654:2;3636:21;;;3693:2;3673:18;;;3666:30;3732:34;3727:2;3712:18;;3705:62;-1:-1:-1;;;3798:2:1;3783:18;;3776:32;3840:3;3825:19;;3626:224::o;3855:353::-;4057:2;4039:21;;;4096:2;4076:18;;;4069:30;4135:31;4130:2;4115:18;;4108:59;4199:2;4184:18;;4029:179::o;4213:402::-;4415:2;4397:21;;;4454:2;4434:18;;;4427:30;4493:34;4488:2;4473:18;;4466:62;-1:-1:-1;;;4559:2:1;4544:18;;4537:36;4605:3;4590:19;;4387:228::o;4620:356::-;4822:2;4804:21;;;4841:18;;;4834:30;4900:34;4895:2;4880:18;;4873:62;4967:2;4952:18;;4794:182::o;4981:336::-;5183:2;5165:21;;;5222:2;5202:18;;;5195:30;-1:-1:-1;;;5256:2:1;5241:18;;5234:42;5308:2;5293:18;;5155:162::o;5322:401::-;5524:2;5506:21;;;5563:2;5543:18;;;5536:30;5602:34;5597:2;5582:18;;5575:62;-1:-1:-1;;;5668:2:1;5653:18;;5646:35;5713:3;5698:19;;5496:227::o;5728:400::-;5930:2;5912:21;;;5969:2;5949:18;;;5942:30;6008:34;6003:2;5988:18;;5981:62;-1:-1:-1;;;6074:2:1;6059:18;;6052:34;6118:3;6103:19;;5902:226::o;6133:401::-;6335:2;6317:21;;;6374:2;6354:18;;;6347:30;6413:34;6408:2;6393:18;;6386:62;-1:-1:-1;;;6479:2:1;6464:18;;6457:35;6524:3;6509:19;;6307:227::o;6539:355::-;6741:2;6723:21;;;6780:2;6760:18;;;6753:30;6819:33;6814:2;6799:18;;6792:61;6885:2;6870:18;;6713:181::o;6899:177::-;7045:25;;;7033:2;7018:18;;7000:76::o;7081:184::-;7253:4;7241:17;;;;7223:36;;7211:2;7196:18;;7178:87::o;7270:128::-;;7341:1;7337:6;7334:1;7331:13;7328:2;;;7347:18;;:::i;:::-;-1:-1:-1;7383:9:1;;7318:80::o;7403:217::-;;7469:1;7459:2;;-1:-1:-1;;;7494:31:1;;7548:4;7545:1;7538:15;7576:4;7501:1;7566:15;7459:2;-1:-1:-1;7605:9:1;;7449:171::o;7625:453::-;7721:6;7744:5;7758:314;7807:1;7844:2;7834:8;7831:16;7821:2;;7851:5;;;7821:2;7892:4;7887:3;7883:14;7877:4;7874:24;7871:2;;;7901:18;;:::i;:::-;7951:2;7941:8;7937:17;7934:2;;;7966:16;;;;7934:2;8045:17;;;;;8005:15;;7758:314;;;7702:376;;;;;;;:::o;8083:139::-;;8172:44;-1:-1:-1;;8199:8:1;8193:4;8227:922;8311:8;8301:2;;-1:-1:-1;8352:1:1;8366:5;;8301:2;8400:4;8390:2;;-1:-1:-1;8437:1:1;8451:5;;8390:2;8482:4;8500:1;8495:59;;;;8568:1;8563:183;;;;8475:271;;8495:59;8525:1;8516:10;;8539:5;;;8563:183;8600:3;8590:8;8587:17;8584:2;;;8607:18;;:::i;:::-;8663:1;8653:8;8649:16;8640:25;;8691:3;8684:5;8681:14;8678:2;;;8698:18;;:::i;:::-;8731:5;;;8475:271;;8830:2;8820:8;8817:16;8811:3;8805:4;8802:13;8798:36;8792:2;8782:8;8779:16;8774:2;8768:4;8765:12;8761:35;8758:77;8755:2;;;-1:-1:-1;8867:19:1;;;8902:14;;;8899:2;;;8919:18;;:::i;:::-;8952:5;;8755:2;8999:42;9037:3;9027:8;9021:4;9018:1;8999:42;:::i;:::-;9074:6;9069:3;9065:16;9056:7;9053:29;9050:2;;;9085:18;;:::i;:::-;9123:20;;8291:858;-1:-1:-1;;;;8291:858:1:o;9154:168::-;;9260:1;9256;9252:6;9248:14;9245:1;9242:21;9237:1;9230:9;9223:17;9219:45;9216:2;;;9267:18;;:::i;:::-;-1:-1:-1;9307:9:1;;9206:116::o;9327:125::-;;9395:1;9392;9389:8;9386:2;;;9400:18;;:::i;:::-;-1:-1:-1;9437:9:1;;9376:76::o;9457:380::-;9542:1;9532:12;;9589:1;9579:12;;;9600:2;;9654:4;9646:6;9642:17;9632:27;;9600:2;9707;9699:6;9696:14;9676:18;9673:38;9670:2;;;9753:10;9748:3;9744:20;9741:1;9734:31;9788:4;9785:1;9778:15;9816:4;9813:1;9806:15;9670:2;;9512:325;;;:::o;9842:135::-;;-1:-1:-1;;9902:17:1;;9899:2;;;9922:18;;:::i;:::-;-1:-1:-1;9969:1:1;9958:13;;9889:88::o;9982:127::-;10043:10;10038:3;10034:20;10031:1;10024:31;10074:4;10071:1;10064:15;10098:4;10095:1;10088:15

Swarm Source

ipfs://26245b1fa83c697a5ed78478f2a83c647e8745de28ec3969aa1ba5c56c213b3c
Loading