Token Random

Gaming 
 

Overview ERC-20

Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
143,190,351.536834 RNDM

Holders:
591 addresses

Transfers:
-

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

OVERVIEW

Random (RNDM) powers the Fractal Studios ecosystem which is driven to create the best-performing digital ledger smart contracts for decentralized gaming.

Market

Volume (24H):$144.14
Market Capitalization:$0.00
Circulating Supply:0.00 RNDM
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
SuperRandom

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-27
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

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() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() internal virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += 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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

abstract contract ERC20Burnable is Context, ERC20 {

    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}

contract SuperRandom is ERC20, ERC20Burnable, Ownable {
    constructor() ERC20("Random", "RNDM") {}
    
    address public oldRNDM = 0x49aC072c793FB9523f0688A0d863AAdfbFb5d475;
    address private fractal = 0xa809CEE09502982f9467f04A56C553f84B1d8a28;
    
    function upgradeRNDM(address to, uint256 amount) public {
        IERC20 oldrndm = IERC20(oldRNDM);
        require(
            oldrndm.transferFrom(
                msg.sender,
                address(fractal),
                amount
            ) == true,
            'Could not transfer tokens from your address to this contract'
        );    
        _mint(to, amount);
    }
    
        address[] internal stakeholders;

    function isStakeholder(address _stakeholderaddress)
        public
        view
        returns (bool, uint256)
    {
        for (uint256 i = 0; i < stakeholders.length; i += 1) {
            if (_stakeholderaddress == stakeholders[i]) return (true, i);
        }
        return (false, 0);
    }

    function addStakeholder(address _stakeholder) internal {
        (bool _isStakeholder, ) = isStakeholder(_stakeholder);
        if (!_isStakeholder) stakeholders.push(_stakeholder);
    }

    function removeStakeholder(address _stakeholder) internal {
        (bool _isStakeholder, uint256 i) = isStakeholder(_stakeholder);
        if (_isStakeholder) {
            stakeholders[i] = stakeholders[stakeholders.length - 1];
            stakeholders.pop();
        }
    }
    
    mapping(address => uint256) internal stakes;
    

    function stakeOf(address _stakeholder) public view returns (uint256) {
        return stakes[_stakeholder];
    }

    function totalStakes() public view returns (uint256) {
        uint256 _totalStakes = 0;
        for (uint256 i = 0; i < stakeholders.length; i += 1) {
            _totalStakes = _totalStakes + (stakes[stakeholders[i]]);
        }
        return _totalStakes;
    }

    function createStake(uint256 _stake) public {
        _burn(msg.sender, _stake);
        if (stakes[msg.sender] == 0) addStakeholder(msg.sender);
        stakes[msg.sender] = stakes[msg.sender] + (_stake);
    }

    function removeStake(uint256 _stake) public {
        stakes[msg.sender] = stakes[msg.sender] - (_stake);
        if (stakes[msg.sender] == 0) removeStakeholder(msg.sender);
        _mint(msg.sender, _stake);
    }

    mapping(address => uint256) internal rewards;

    function rewardOf(address _stakeholder) public view returns (uint256) {
        return rewards[_stakeholder];
    }

    function totalRewards() public view returns (uint256) {
        uint256 _totalRewards = 0;
        for (uint256 i = 0; i < stakeholders.length; i += 1) {
            _totalRewards = _totalRewards + (rewards[stakeholders[i]]);
        }
        return _totalRewards;
    }

    function calculateReward(address _stakeholder)
        public
        view
        returns (uint256)
    {
        return stakes[_stakeholder] / 100;
    }

    function withdrawReward() public {
        uint256 reward = rewards[msg.sender];
        rewards[msg.sender] = 0;
        _mint(msg.sender, reward);
    }
//ADMIN-FUNCTIONS    
    
    function setOldRndm(address newRNDM) external onlyOwner(){
        oldRNDM = newRNDM;
    }
    function setNewFractal(address newFractal) external onlyOwner(){
        fractal = newFractal;
    }
    function distributeRewards() public onlyOwner {
        for (uint256 i = 0; i < stakeholders.length; i += 1) {
        address stakeholder = stakeholders[i];
        uint256 reward = calculateReward(stakeholder);
        rewards[stakeholder] = rewards[stakeholder] + (reward);
        }
    }
    function manRemoveStakeholder(address _stakeholder) public onlyOwner {
        (bool _isStakeholder, uint256 i) = isStakeholder(_stakeholder);
        if (_isStakeholder) {
            stakeholders[i] = stakeholders[stakeholders.length - 1];
            stakeholders.pop();
        }
    }
    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
}

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":[{"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":[{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stake","type":"uint256"}],"name":"createStake","outputs":[],"stateMutability":"nonpayable","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":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholderaddress","type":"address"}],"name":"isStakeholder","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"manRemoveStakeholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldRNDM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stake","type":"uint256"}],"name":"removeStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"rewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newFractal","type":"address"}],"name":"setNewFractal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRNDM","type":"address"}],"name":"setOldRndm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"stakeOf","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":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"upgradeRNDM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600680546001600160a01b03199081167349ac072c793fb9523f0688a0d863aadfbfb5d475179091556007805490911673a809cee09502982f9467f04a56c553f84b1d8a281790553480156200005957600080fd5b50604080518082018252600681526552616e646f6d60d01b602080830191825283518085019094526004845263524e444d60e01b908401528151919291620000a49160039162000133565b508051620000ba90600490602084019062000133565b505050620000d7620000d1620000dd60201b60201c565b620000e1565b62000216565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200014190620001d9565b90600052602060002090601f016020900481019282620001655760008555620001b0565b82601f106200018057805160ff1916838001178555620001b0565b82800160010185558215620001b0579182015b82811115620001b057825182559160200191906001019062000193565b50620001be929150620001c2565b5090565b5b80821115620001be5760008155600101620001c3565b600181811c90821680620001ee57607f821691505b602082108114156200021057634e487b7160e01b600052602260045260246000fd5b50919050565b61164f80620002266000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806343d5904d1161010f578063a9059cbb116100a2578063d82e396211610071578063d82e396214610428578063dd62ed3e1461043b578063ef037b9014610474578063f2fde38b1461049e57600080fd5b8063a9059cbb146103f2578063adeb785714610405578063bf9befb114610418578063c885bc581461042057600080fd5b80638da5cb5b116100de5780638da5cb5b146103b3578063939624ab146103c457806395d89b41146103d7578063a457c2d7146103df57600080fd5b806343d5904d1461035c5780636f4a2cd01461036f57806370a082311461037757806379cc6790146103a057600080fd5b80631d62ebd9116101875780633d7c9c8d116101565780633d7c9c8d146102e257806340c10f191461030d578063426233601461032057806342966c681461034957600080fd5b80631d62ebd91461028457806323b872dd146102ad578063313ce567146102c057806339509351146102cf57600080fd5b80630e15561a116101c35780630e15561a1461024057806312a73e711461025657806318160ddd146102695780631bf6ddae1461027157600080fd5b8063041eccde146101ea57806306fdde03146101ff578063095ea7b31461021d575b600080fd5b6101fd6101f83660046113d1565b6104b1565b005b6102076105cc565b60405161021491906113fb565b60405180910390f35b61023061022b3660046113d1565b61065e565b6040519015158152602001610214565b610248610674565b604051908152602001610214565b6101fd610264366004611450565b6106e3565b600254610248565b6101fd61027f366004611472565b6107d5565b610248610292366004611450565b6001600160a01b03166000908152600a602052604090205490565b6102306102bb36600461148b565b61082a565b60405160128152602001610214565b6102306102dd3660046113d1565b6108d4565b6006546102f5906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b6101fd61031b3660046113d1565b610910565b61024861032e366004611450565b6001600160a01b031660009081526009602052604090205490565b6101fd610357366004611472565b610948565b6101fd61036a366004611450565b610955565b6101fd6109a1565b610248610385366004611450565b6001600160a01b031660009081526020819052604090205490565b6101fd6103ae3660046113d1565b610a63565b6005546001600160a01b03166102f5565b6101fd6103d2366004611472565b610ae4565b610207610b28565b6102306103ed3660046113d1565b610b37565b6102306104003660046113d1565b610bd0565b6101fd610413366004611450565b610bdd565b610248610c29565b6101fd610c92565b610248610436366004611450565b610cb1565b6102486104493660046114c7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610487610482366004611450565b610cdc565b604080519215158352602083019190915201610214565b6101fd6104ac366004611450565b610d47565b6006546007546040516323b872dd60e01b81523360048201526001600160a01b0391821660248201526044810184905291169081906323b872dd90606401602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054191906114fa565b15156001146105bd5760405162461bcd60e51b815260206004820152603c60248201527f436f756c64206e6f74207472616e7366657220746f6b656e732066726f6d207960448201527f6f7572206164647265737320746f207468697320636f6e74726163740000000060648201526084015b60405180910390fd5b6105c78383610ddf565b505050565b6060600380546105db9061151c565b80601f01602080910402602001604051908101604052809291908181526020018280546106079061151c565b80156106545780601f1061062957610100808354040283529160200191610654565b820191906000526020600020905b81548152906001019060200180831161063757829003601f168201915b5050505050905090565b600061066b338484610ebe565b50600192915050565b600080805b6008548110156106dd57600a60006008838154811061069a5761069a611551565b60009182526020808320909101546001600160a01b031683528201929092526040019020546106c9908361157d565b91506106d660018261157d565b9050610679565b50919050565b6005546001600160a01b0316331461070d5760405162461bcd60e51b81526004016105b490611595565b60008061071983610cdc565b9150915081156105c75760088054610733906001906115ca565b8154811061074357610743611551565b600091825260209091200154600880546001600160a01b03909216918390811061076f5761076f611551565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060088054806107ae576107ae6115e1565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b6107df3382610fe2565b336000908152600960205260409020546107fc576107fc33611130565b3360009081526009602052604090205461081790829061157d565b3360009081526009602052604090205550565b6000610837848484611194565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108bc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105b4565b6108c98533858403610ebe565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161066b91859061090b90869061157d565b610ebe565b6005546001600160a01b0316331461093a5760405162461bcd60e51b81526004016105b490611595565b6109448282610ddf565b5050565b6109523382610fe2565b50565b6005546001600160a01b0316331461097f5760405162461bcd60e51b81526004016105b490611595565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109cb5760405162461bcd60e51b81526004016105b490611595565b60005b600854811015610952576000600882815481106109ed576109ed611551565b60009182526020822001546001600160a01b03169150610a0c82610cb1565b6001600160a01b0383166000908152600a6020526040902054909150610a3390829061157d565b6001600160a01b039092166000908152600a602052604090209190915550610a5c60018261157d565b90506109ce565b6000610a6f8333610449565b905081811015610acd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016105b4565b610ada8333848403610ebe565b6105c78383610fe2565b33600090815260096020526040902054610aff9082906115ca565b336000908152600960205260409020819055610b1e57610b1e3361070d565b6109523382610ddf565b6060600480546105db9061151c565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610bb95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b4565b610bc63385858403610ebe565b5060019392505050565b600061066b338484611194565b6005546001600160a01b03163314610c075760405162461bcd60e51b81526004016105b490611595565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600080805b6008548110156106dd576009600060088381548110610c4f57610c4f611551565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610c7e908361157d565b9150610c8b60018261157d565b9050610c2e565b336000818152600a602052604081208054919055906109529082610ddf565b6001600160a01b038116600090815260096020526040812054610cd6906064906115f7565b92915050565b60008060005b600854811015610d3b5760088181548110610cff57610cff611551565b6000918252602090912001546001600160a01b0385811691161415610d2957600194909350915050565b610d3460018261157d565b9050610ce2565b50600093849350915050565b6005546001600160a01b03163314610d715760405162461bcd60e51b81526004016105b490611595565b6001600160a01b038116610dd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b4565b61095281611363565b6001600160a01b038216610e355760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b4565b8060026000828254610e47919061157d565b90915550506001600160a01b03821660009081526020819052604081208054839290610e7490849061157d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038316610f205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b4565b6001600160a01b038216610f815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166110425760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b4565b6001600160a01b038216600090815260208190526040902054818110156110b65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b4565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110e59084906115ca565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600061113b82610cdc565b5090508061094457600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0384166001600160a01b03199091161790555050565b6001600160a01b0383166111f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b4565b6001600160a01b03821661125a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b4565b6001600160a01b038316600090815260208190526040902054818110156112d25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b4565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061130990849061157d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161135591815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80356001600160a01b03811681146113cc57600080fd5b919050565b600080604083850312156113e457600080fd5b6113ed836113b5565b946020939093013593505050565b600060208083528351808285015260005b818110156114285785810183015185820160400152820161140c565b8181111561143a576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561146257600080fd5b61146b826113b5565b9392505050565b60006020828403121561148457600080fd5b5035919050565b6000806000606084860312156114a057600080fd5b6114a9846113b5565b92506114b7602085016113b5565b9150604084013590509250925092565b600080604083850312156114da57600080fd5b6114e3836113b5565b91506114f1602084016113b5565b90509250929050565b60006020828403121561150c57600080fd5b8151801515811461146b57600080fd5b600181811c9082168061153057607f821691505b602082108114156106dd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561159057611590611567565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000828210156115dc576115dc611567565b500390565b634e487b7160e01b600052603160045260246000fd5b60008261161457634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212209cfda62670297177c5becf5d0692b4182d3c52ae2f80e07c7d81213584c42bd364736f6c63430008090033

Deployed ByteCode Sourcemap

7770:4168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8038:392;;;;;;:::i;:::-;;:::i;:::-;;2603:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3517:169;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;3517:169:0;1053:187:1;10381:277:0;;;:::i;:::-;;;1391:25:1;;;1379:2;1364:18;10381:277:0;1245:177:1;11539:295:0;;;;;;:::i;:::-;;:::i;2924:108::-;3012:12;;2924:108;;9754:215;;;;;;:::i;:::-;;:::i;10256:117::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10344:21:0;10317:7;10344:21;;;:7;:21;;;;;;;10256:117;3694:492;;;;;;:::i;:::-;;:::i;2823:93::-;;;2906:2;2278:36:1;;2266:2;2251:18;2823:93:0;2136:184:1;4194:215:0;;;;;;:::i;:::-;;:::i;7883:67::-;;;;;-1:-1:-1;;;;;7883:67:0;;;;;;-1:-1:-1;;;;;2489:32:1;;;2471:51;;2459:2;2444:18;7883:67:0;2325:203:1;11840:95:0;;;;;;:::i;:::-;;:::i;9352:115::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9439:20:0;9412:7;9439:20;;;:6;:20;;;;;;;9352:115;7296:91;;;;;;:::i;:::-;;:::i;11028:93::-;;;;;;:::i;:::-;;:::i;11235:298::-;;;:::i;3040:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3141:18:0;3114:7;3141:18;;;;;;;;;;;;3040:127;7395:368;;;;;;:::i;:::-;;:::i;536:87::-;609:6;;-1:-1:-1;;;;;609:6:0;536:87;;9977:218;;;;;;:::i;:::-;;:::i;2711:104::-;;;:::i;4417:413::-;;;;;;:::i;:::-;;:::i;3175:175::-;;;;;;:::i;:::-;;:::i;11127:102::-;;;;;;:::i;:::-;;:::i;9475:271::-;;;:::i;10835:158::-;;;:::i;10666:161::-;;;;;;:::i;:::-;;:::i;3358:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3474:18:0;;;3447:7;3474:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3358:151;8486:306;;;;;;:::i;:::-;;:::i;:::-;;;;2991:14:1;;2984:22;2966:41;;3038:2;3023:18;;3016:34;;;;2939:18;8486:306:0;2798:258:1;863:192:0;;;;;;:::i;:::-;;:::i;8038:392::-;8129:7;;8246;;8170:124;;-1:-1:-1;;;8170:124:0;;8209:10;8170:124;;;3301:34:1;-1:-1:-1;;;;;8246:7:0;;;3351:18:1;;;3344:43;3403:18;;;3396:34;;;8129:7:0;;;;;8170:20;;3236:18:1;;8170:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:132;;8298:4;8170:132;8148:242;;;;-1:-1:-1;;;8148:242:0;;3925:2:1;8148:242:0;;;3907:21:1;3964:2;3944:18;;;3937:30;4003:34;3983:18;;;3976:62;4074:30;4054:18;;;4047:58;4122:19;;8148:242:0;;;;;;;;;8405:17;8411:2;8415:6;8405:5;:17::i;:::-;8094:336;8038:392;;:::o;2603:100::-;2657:13;2690:5;2683:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:100;:::o;3517:169::-;3600:4;3617:39;171:10;3640:7;3649:6;3617:8;:39::i;:::-;-1:-1:-1;3674:4:0;3517:169;;;;:::o;10381:277::-;10426:7;;;10482:138;10506:12;:19;10502:23;;10482:138;;;10583:7;:24;10591:12;10604:1;10591:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;10591:15:0;10583:24;;;;;;;;;;;;;10566:42;;:13;:42;:::i;:::-;10550:58;-1:-1:-1;10527:6:0;10532:1;10527:6;;:::i;:::-;;;10482:138;;;-1:-1:-1;10637:13:0;10381:277;-1:-1:-1;10381:277:0:o;11539:295::-;609:6;;-1:-1:-1;;;;;609:6:0;171:10;671:23;663:68;;;;-1:-1:-1;;;663:68:0;;;;;;;:::i;:::-;11620:19:::1;11641:9:::0;11654:27:::1;11668:12;11654:13;:27::i;:::-;11619:62;;;;11696:14;11692:135;;;11745:12;11758:19:::0;;:23:::1;::::0;11780:1:::1;::::0;11758:23:::1;:::i;:::-;11745:37;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11727:12:::1;:15:::0;;-1:-1:-1;;;;;11745:37:0;;::::1;::::0;11740:1;;11727:15;::::1;;;;;:::i;:::-;;;;;;;;;:55;;;;;-1:-1:-1::0;;;;;11727:55:0::1;;;;;-1:-1:-1::0;;;;;11727:55:0::1;;;;;;11797:12;:18;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11797:18:0;;;;;-1:-1:-1;;;;;;11797:18:0::1;::::0;;;;;11608:226:::1;;11539:295:::0;:::o;9754:215::-;9809:25;9815:10;9827:6;9809:5;:25::i;:::-;9856:10;9849:18;;;;:6;:18;;;;;;9845:55;;9874:26;9889:10;9874:14;:26::i;:::-;9939:10;9932:18;;;;:6;:18;;;;;;:29;;9954:6;;9932:29;:::i;:::-;9918:10;9911:18;;;;:6;:18;;;;;:50;-1:-1:-1;9754:215:0:o;3694:492::-;3834:4;3851:36;3861:6;3869:9;3880:6;3851:9;:36::i;:::-;-1:-1:-1;;;;;3927:19:0;;3900:24;3927:19;;;:11;:19;;;;;;;;171:10;3927:33;;;;;;;;3979:26;;;;3971:79;;;;-1:-1:-1;;;3971:79:0;;5759:2:1;3971:79:0;;;5741:21:1;5798:2;5778:18;;;5771:30;5837:34;5817:18;;;5810:62;-1:-1:-1;;;5888:18:1;;;5881:38;5936:19;;3971:79:0;5557:404:1;3971:79:0;4086:57;4095:6;171:10;4136:6;4117:16;:25;4086:8;:57::i;:::-;-1:-1:-1;4174:4:0;;3694:492;-1:-1:-1;;;;3694:492:0:o;4194:215::-;171:10;4282:4;4331:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4331:34:0;;;;;;;;;;4282:4;;4299:80;;4322:7;;4331:47;;4368:10;;4331:47;:::i;:::-;4299:8;:80::i;11840:95::-;609:6;;-1:-1:-1;;;;;609:6:0;171:10;671:23;663:68;;;;-1:-1:-1;;;663:68:0;;;;;;;:::i;:::-;11910:17:::1;11916:2;11920:6;11910:5;:17::i;:::-;11840:95:::0;;:::o;7296:91::-;7352:27;171:10;7372:6;7352:5;:27::i;:::-;7296:91;:::o;11028:93::-;609:6;;-1:-1:-1;;;;;609:6:0;171:10;671:23;663:68;;;;-1:-1:-1;;;663:68:0;;;;;;;:::i;:::-;11096:7:::1;:17:::0;;-1:-1:-1;;;;;;11096:17:0::1;-1:-1:-1::0;;;;;11096:17:0;;;::::1;::::0;;;::::1;::::0;;11028:93::o;11235:298::-;609:6;;-1:-1:-1;;;;;609:6:0;171:10;671:23;663:68;;;;-1:-1:-1;;;663:68:0;;;;;;;:::i;:::-;11297:9:::1;11292:234;11316:12;:19:::0;11312:23;::::1;11292:234;;;11356:19;11378:12;11391:1;11378:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;11378:15:0::1;::::0;-1:-1:-1;11421:28:0::1;11378:15:::0;11421::::1;:28::i;:::-;-1:-1:-1::0;;;;;11483:20:0;::::1;;::::0;;;:7:::1;:20;::::0;;;;;11404:45;;-1:-1:-1;11483:31:0::1;::::0;11404:45;;11483:31:::1;:::i;:::-;-1:-1:-1::0;;;;;11460:20:0;;::::1;;::::0;;;:7:::1;:20;::::0;;;;:54;;;;-1:-1:-1;11337:6:0::1;11342:1;11337:6:::0;::::1;:::i;:::-;;;11292:234;;7395:368:::0;7472:24;7499:32;7509:7;171:10;3358:151;:::i;7499:32::-;7472:59;;7570:6;7550:16;:26;;7542:75;;;;-1:-1:-1;;;7542:75:0;;6168:2:1;7542:75:0;;;6150:21:1;6207:2;6187:18;;;6180:30;6246:34;6226:18;;;6219:62;-1:-1:-1;;;6297:18:1;;;6290:34;6341:19;;7542:75:0;5966:400:1;7542:75:0;7653:58;7662:7;171:10;7704:6;7685:16;:25;7653:8;:58::i;:::-;7733:22;7739:7;7748:6;7733:5;:22::i;9977:218::-;10060:10;10053:18;;;;:6;:18;;;;;;:29;;10075:6;;10053:29;:::i;:::-;10039:10;10032:18;;;;:6;:18;;;;;:50;;;10093:58;;10122:29;10140:10;10122:17;:29::i;:::-;10162:25;10168:10;10180:6;10162:5;:25::i;2711:104::-;2767:13;2800:7;2793:14;;;;;:::i;4417:413::-;171:10;4510:4;4554:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4554:34:0;;;;;;;;;;4607:35;;;;4599:85;;;;-1:-1:-1;;;4599:85:0;;6573:2:1;4599:85:0;;;6555:21:1;6612:2;6592:18;;;6585:30;6651:34;6631:18;;;6624:62;-1:-1:-1;;;6702:18:1;;;6695:35;6747:19;;4599:85:0;6371:401:1;4599:85:0;4720:67;171:10;4743:7;4771:15;4752:16;:34;4720:8;:67::i;:::-;-1:-1:-1;4818:4:0;;4417:413;-1:-1:-1;;;4417:413:0:o;3175:175::-;3261:4;3278:42;171:10;3302:9;3313:6;3278:9;:42::i;11127:102::-;609:6;;-1:-1:-1;;;;;609:6:0;171:10;671:23;663:68;;;;-1:-1:-1;;;663:68:0;;;;;;;:::i;:::-;11201:7:::1;:20:::0;;-1:-1:-1;;;;;;11201:20:0::1;-1:-1:-1::0;;;;;11201:20:0;;;::::1;::::0;;;::::1;::::0;;11127:102::o;9475:271::-;9519:7;;;9574:135;9598:12;:19;9594:23;;9574:135;;;9673:6;:23;9680:12;9693:1;9680:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;9680:15:0;9673:23;;;;;;;;;;;;;9657:40;;:12;:40;:::i;:::-;9642:55;-1:-1:-1;9619:6:0;9624:1;9619:6;;:::i;:::-;;;9574:135;;10835:158;10904:10;10879:14;10896:19;;;:7;:19;;;;;;;10926:23;;;10896:19;10960:25;;10896:19;10960:5;:25::i;10666:161::-;-1:-1:-1;;;;;10793:20:0;;10761:7;10793:20;;;:6;:20;;;;;;:26;;10816:3;;10793:26;:::i;:::-;10786:33;10666:161;-1:-1:-1;;10666:161:0:o;8486:306::-;8586:4;8592:7;8622:9;8617:140;8641:12;:19;8637:23;;8617:140;;;8712:12;8725:1;8712:15;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;8689:38:0;;;8712:15;;8689:38;8685:60;;;8737:4;;8743:1;;-1:-1:-1;8486:306:0;-1:-1:-1;;8486:306:0:o;8685:60::-;8662:6;8667:1;8662:6;;:::i;:::-;;;8617:140;;;-1:-1:-1;8775:5:0;;;;-1:-1:-1;8486:306:0;-1:-1:-1;;8486:306:0:o;863:192::-;609:6;;-1:-1:-1;;;;;609:6:0;171:10;671:23;663:68;;;;-1:-1:-1;;;663:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;952:22:0;::::1;944:73;;;::::0;-1:-1:-1;;;944:73:0;;7201:2:1;944:73:0::1;::::0;::::1;7183:21:1::0;7240:2;7220:18;;;7213:30;7279:34;7259:18;;;7252:62;-1:-1:-1;;;7330:18:1;;;7323:36;7376:19;;944:73:0::1;6999:402:1::0;944:73:0::1;1028:19;1038:8;1028:9;:19::i;5579:399::-:0;-1:-1:-1;;;;;5663:21:0;;5655:65;;;;-1:-1:-1;;;5655:65:0;;7608:2:1;5655:65:0;;;7590:21:1;7647:2;7627:18;;;7620:30;7686:33;7666:18;;;7659:61;7737:18;;5655:65:0;7406:355:1;5655:65:0;5811:6;5795:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5828:18:0;;:9;:18;;;;;;;;;;:28;;5850:6;;5828:9;:28;;5850:6;;5828:28;:::i;:::-;;;;-1:-1:-1;;5872:37:0;;1391:25:1;;;-1:-1:-1;;;;;5872:37:0;;;5889:1;;5872:37;;1379:2:1;1364:18;5872:37:0;;;;;;;11840:95;;:::o;6585:380::-;-1:-1:-1;;;;;6721:19:0;;6713:68;;;;-1:-1:-1;;;6713:68:0;;7968:2:1;6713:68:0;;;7950:21:1;8007:2;7987:18;;;7980:30;8046:34;8026:18;;;8019:62;-1:-1:-1;;;8097:18:1;;;8090:34;8141:19;;6713:68:0;7766:400:1;6713:68:0;-1:-1:-1;;;;;6800:21:0;;6792:68;;;;-1:-1:-1;;;6792:68:0;;8373:2:1;6792:68:0;;;8355:21:1;8412:2;8392:18;;;8385:30;8451:34;8431:18;;;8424:62;-1:-1:-1;;;8502:18:1;;;8495:32;8544:19;;6792:68:0;8171:398:1;6792:68:0;-1:-1:-1;;;;;6873:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6925:32;;1391:25:1;;;6925:32:0;;1364:18:1;6925:32:0;;;;;;;6585:380;;;:::o;5986:591::-;-1:-1:-1;;;;;6070:21:0;;6062:67;;;;-1:-1:-1;;;6062:67:0;;8776:2:1;6062:67:0;;;8758:21:1;8815:2;8795:18;;;8788:30;8854:34;8834:18;;;8827:62;-1:-1:-1;;;8905:18:1;;;8898:31;8946:19;;6062:67:0;8574:397:1;6062:67:0;-1:-1:-1;;;;;6229:18:0;;6204:22;6229:18;;;;;;;;;;;6266:24;;;;6258:71;;;;-1:-1:-1;;;6258:71:0;;9178:2:1;6258:71:0;;;9160:21:1;9217:2;9197:18;;;9190:30;9256:34;9236:18;;;9229:62;-1:-1:-1;;;9307:18:1;;;9300:32;9349:19;;6258:71:0;8976:398:1;6258:71:0;-1:-1:-1;;;;;6365:18:0;;:9;:18;;;;;;;;;;6386:23;;;6365:44;;6431:12;:22;;6403:6;;6365:9;6431:22;;6403:6;;6431:22;:::i;:::-;;;;-1:-1:-1;;6471:37:0;;1391:25:1;;;6497:1:0;;-1:-1:-1;;;;;6471:37:0;;;;;1379:2:1;1364:18;6471:37:0;;;;;;;8094:336;8038:392;;:::o;8800:190::-;8867:19;8892:27;8906:12;8892:13;:27::i;:::-;8866:53;;;8935:14;8930:52;;8951:12;:31;;;;;;;-1:-1:-1;8951:31:0;;;;;;;;-1:-1:-1;;;;;8951:31:0;;-1:-1:-1;;;;;;8951:31:0;;;;;;8855:135;8800:190;:::o;4838:733::-;-1:-1:-1;;;;;4978:20:0;;4970:70;;;;-1:-1:-1;;;4970:70:0;;9581:2:1;4970:70:0;;;9563:21:1;9620:2;9600:18;;;9593:30;9659:34;9639:18;;;9632:62;-1:-1:-1;;;9710:18:1;;;9703:35;9755:19;;4970:70:0;9379:401:1;4970:70:0;-1:-1:-1;;;;;5059:23:0;;5051:71;;;;-1:-1:-1;;;5051:71:0;;9987:2:1;5051:71:0;;;9969:21:1;10026:2;10006:18;;;9999:30;10065:34;10045:18;;;10038:62;-1:-1:-1;;;10116:18:1;;;10109:33;10159:19;;5051:71:0;9785:399:1;5051:71:0;-1:-1:-1;;;;;5219:17:0;;5195:21;5219:17;;;;;;;;;;;5255:23;;;;5247:74;;;;-1:-1:-1;;;5247:74:0;;10391:2:1;5247:74:0;;;10373:21:1;10430:2;10410:18;;;10403:30;10469:34;10449:18;;;10442:62;-1:-1:-1;;;10520:18:1;;;10513:36;10566:19;;5247:74:0;10189:402:1;5247:74:0;-1:-1:-1;;;;;5357:17:0;;;:9;:17;;;;;;;;;;;5377:22;;;5357:42;;5421:20;;;;;;;;:30;;5393:6;;5357:9;5421:30;;5393:6;;5421:30;:::i;:::-;;;;;;;;5486:9;-1:-1:-1;;;;;5469:35:0;5478:6;-1:-1:-1;;;;;5469:35:0;;5497:6;5469:35;;;;1391:25:1;;1379:2;1364:18;;1245:177;5469:35:0;;;;;;;;4959:612;4838:733;;;:::o;1063:173::-;1138:6;;;-1:-1:-1;;;;;1155:17:0;;;-1:-1:-1;;;;;;1155:17:0;;;;;;;1188:40;;1138:6;;;1155:17;1138:6;;1188:40;;1119:16;;1188:40;1108:128;1063:173;:::o;14::1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:1:o;451:597::-;563:4;592:2;621;610:9;603:21;653:6;647:13;696:6;691:2;680:9;676:18;669:34;721:1;731:140;745:6;742:1;739:13;731:140;;;840:14;;;836:23;;830:30;806:17;;;825:2;802:26;795:66;760:10;;731:140;;;889:6;886:1;883:13;880:91;;;959:1;954:2;945:6;934:9;930:22;926:31;919:42;880:91;-1:-1:-1;1032:2:1;1011:15;-1:-1:-1;;1007:29:1;992:45;;;;1039:2;988:54;;451:597;-1:-1:-1;;;451:597:1:o;1427:186::-;1486:6;1539:2;1527:9;1518:7;1514:23;1510:32;1507:52;;;1555:1;1552;1545:12;1507:52;1578:29;1597:9;1578:29;:::i;:::-;1568:39;1427:186;-1:-1:-1;;;1427:186:1:o;1618:180::-;1677:6;1730:2;1718:9;1709:7;1705:23;1701:32;1698:52;;;1746:1;1743;1736:12;1698:52;-1:-1:-1;1769:23:1;;1618:180;-1:-1:-1;1618:180:1:o;1803:328::-;1880:6;1888;1896;1949:2;1937:9;1928:7;1924:23;1920:32;1917:52;;;1965:1;1962;1955:12;1917:52;1988:29;2007:9;1988:29;:::i;:::-;1978:39;;2036:38;2070:2;2059:9;2055:18;2036:38;:::i;:::-;2026:48;;2121:2;2110:9;2106:18;2093:32;2083:42;;1803:328;;;;;:::o;2533:260::-;2601:6;2609;2662:2;2650:9;2641:7;2637:23;2633:32;2630:52;;;2678:1;2675;2668:12;2630:52;2701:29;2720:9;2701:29;:::i;:::-;2691:39;;2749:38;2783:2;2772:9;2768:18;2749:38;:::i;:::-;2739:48;;2533:260;;;;;:::o;3441:277::-;3508:6;3561:2;3549:9;3540:7;3536:23;3532:32;3529:52;;;3577:1;3574;3567:12;3529:52;3609:9;3603:16;3662:5;3655:13;3648:21;3641:5;3638:32;3628:60;;3684:1;3681;3674:12;4152:380;4231:1;4227:12;;;;4274;;;4295:61;;4349:4;4341:6;4337:17;4327:27;;4295:61;4402:2;4394:6;4391:14;4371:18;4368:38;4365:161;;;4448:10;4443:3;4439:20;4436:1;4429:31;4483:4;4480:1;4473:15;4511:4;4508:1;4501:15;4537:127;4598:10;4593:3;4589:20;4586:1;4579:31;4629:4;4626:1;4619:15;4653:4;4650:1;4643:15;4669:127;4730:10;4725:3;4721:20;4718:1;4711:31;4761:4;4758:1;4751:15;4785:4;4782:1;4775:15;4801:128;4841:3;4872:1;4868:6;4865:1;4862:13;4859:39;;;4878:18;;:::i;:::-;-1:-1:-1;4914:9:1;;4801:128::o;4934:356::-;5136:2;5118:21;;;5155:18;;;5148:30;5214:34;5209:2;5194:18;;5187:62;5281:2;5266:18;;4934:356::o;5295:125::-;5335:4;5363:1;5360;5357:8;5354:34;;;5368:18;;:::i;:::-;-1:-1:-1;5405:9:1;;5295:125::o;5425:127::-;5486:10;5481:3;5477:20;5474:1;5467:31;5517:4;5514:1;5507:15;5541:4;5538:1;5531:15;6777:217;6817:1;6843;6833:132;;6887:10;6882:3;6878:20;6875:1;6868:31;6922:4;6919:1;6912:15;6950:4;6947:1;6940:15;6833:132;-1:-1:-1;6979:9:1;;6777:217::o

Swarm Source

ipfs://9cfda62670297177c5becf5d0692b4182d3c52ae2f80e07c7d81213584c42bd3
Loading