Token Tangle

Data 
 

Overview ERC-20

Price
$0.00 @ 0.000200 FTM
Fully Diluted Market Cap
Total Supply:
1,000,000,000 TNGL

Holders:
62,285 addresses
Balance
1.024596965 TNGL

Value
$0.00 ( ~0 FTM) [0.0000%]
0x4cb93eb88cfc55f364e9300254003d34c28cac9d
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

A token that incentivizes its own attractiveness.


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
1
Uniswap (v2)
0X5AF28EB9DEC75E86CDFBD2E41A474B54B211C1C2-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0001
0.0000000 Btc
$49.2800
522,119.372 0X5AF28EB9DEC75E86CDFBD2E41A474B54B211C1C2
80.9407%
2
SpookySwap
0XD17584633BC8D190E5A14502976DAD9640456D6D-0X21BE370D5312F44CB42CE377BC9B8A0CEF1A4C83$0.0001
0.0000000 Btc
$14.6300
122,944.818 0XD17584633BC8D190E5A14502976DAD9640456D6D
19.0593%
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Tangle

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-10-10
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.9;

/// @title Tangle, a token implementation using EIP-2535: Multi-Facet Proxy
/// @author Brad Brown
/// @notice Pieces of this contract can be updated without needing to redeploy
/// the entire contract
/// @dev implements IDiamondCut and IDiamondLoupe
contract Tangle {

    mapping(bytes4 => address) private selectorToAddress;
    /// @notice The owner of this contract
    address public owner;

    enum FacetCutAction {Add, Replace, Remove}
    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }
    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    address[] private addresses;
    mapping(address => uint) private addressIndex;
    mapping(address => bytes4[]) private addressToSelectors;
    mapping(bytes4 => uint) private selectorIndex;

    /// @notice Records all functions added, replaced, or removed from this
    /// contract
    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);

    /// @notice set owner to deployer
    constructor() {
        owner = msg.sender;
    }

    /// @notice payable fallback, does nothing
    receive() external payable {}

    /// @notice executes calldata via delegatecall to address if
    /// calldata's selector is assigned
    /// @dev Input is calldata
    /// @return bytes response from delegatecall
    fallback (bytes calldata) external payable returns (bytes memory) {
        address address_ = selectorToAddress[msg.sig];
        require(address_ != address(0), "zero facet");
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(
                gas(),
                address_,
                0,
                calldatasize(),
                0,
                0
            )
            returndatacopy(0, 0, returndatasize())
            switch result
                case 0 { revert(0, returndatasize()) }
                default { return (0, returndatasize()) }
        }
    }

    /// @notice checks if an address is in use as a facet
    /// @param address_ an address to a facet
    /// @return bool whether the address is in use or not
    function facetAddressExists(address address_)
        internal
        view
        returns
        (bool)
    {
        if (addresses.length == 0)
            return false;
        if (addresses[0] != address_ && addressIndex[address_] == 0)
            return false;
        return true;
    }

    /// @notice assigns a selector to an address, revert if selector already
    /// assigned
    /// @param selector an 8 byte function selector
    /// @param facetAddress_ an address to a facet
    function addSelector(
        bytes4 selector,
        address facetAddress_
    ) internal {
        address currentFacetAddress = selectorToAddress[selector];
        require(currentFacetAddress == address(0), "selector add");
        selectorToAddress[selector] = facetAddress_;
        selectorIndex[selector] = addressToSelectors[facetAddress_].length;
        addressToSelectors[facetAddress_].push(selector);
    }

    /// @notice removes a selector from an address, revert if selector isn't
    /// assigned
    /// @param selector an 8 byte function selector
    /// @param facetAddress_ an address to a facet
    function removeSelector(
        bytes4 selector,
        address facetAddress_
    ) internal {
        address currentFacetAddress = selectorToAddress[selector];
        require(currentFacetAddress != address(0), "selector remove");
        bytes4[] memory selectors = addressToSelectors[facetAddress_];
        bytes4 lastSelector = selectors[selectors.length - 1];
        if (lastSelector != selector) {
            selectorIndex[lastSelector] = selectorIndex[selector];
            selectors[selectorIndex[selector]] = lastSelector;
        }
        if (selectors.length > 0) {
            assembly {
                mstore(selectors, sub(mload(selectors), 1))
            }
            addressToSelectors[facetAddress_] = selectors;
        }
        if (selectors.length == 0) {
            address lastAddress = addresses[addresses.length - 1];
            if (lastAddress != facetAddress_) {
                addressIndex[lastAddress] = addressIndex[facetAddress_];
                addresses[addressIndex[facetAddress_]] = lastAddress;
            }
            addresses.pop();
            addressIndex[facetAddress_] = 0;
        }
        selectorToAddress[selector] = address(0);
    }

    /// @notice reassigns a selector to an address, revert if no change in
    /// selector address
    /// @param selector an 8 byte function selector
    /// @param facetAddress_ an address to a facet
    function replaceSelector(
        bytes4 selector,
        address facetAddress_
    ) internal {
        address currentFacetAddress = selectorToAddress[selector];
        require(currentFacetAddress != facetAddress_, "selector replace");
        bytes4[] memory selectors = addressToSelectors[currentFacetAddress];
        bytes4 lastSelector = selectors[selectors.length - 1];
        if (lastSelector != selector) {
            selectorIndex[lastSelector] = selectorIndex[selector];
            selectors[selectorIndex[selector]] = lastSelector;
        }
        if (selectors.length > 0) {
            assembly {
                mstore(selectors, sub(mload(selectors), 1))
            }
            addressToSelectors[currentFacetAddress] = selectors;
        }
        if (selectors.length == 0) {
            address lastAddress = addresses[addresses.length - 1];
            if (lastAddress != currentFacetAddress) {
                addressIndex[lastAddress] = addressIndex[currentFacetAddress];
                addresses[addressIndex[currentFacetAddress]] = lastAddress;
            }
            addresses.pop();
            addressIndex[currentFacetAddress] = 0;
        }
        selectorToAddress[selector] = facetAddress_;
        selectorIndex[selector] = addressToSelectors[facetAddress_].length;
        addressToSelectors[facetAddress_].push(selector);
    }

    /// @notice Add/replace/remove any number of functions and optionally
    /// execute a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and
    /// arguments _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external {
        require(msg.sender == owner, "not owner");
        bool changesMade = false;
        for (uint i = 0; i < _diamondCut.length; i++) {
            FacetCut memory facetCut = _diamondCut[i];
            address facetAddress_ = _diamondCut[i].facetAddress;
            if (!facetAddressExists(facetAddress_)) {
                addressIndex[facetAddress_] = addresses.length;
                addresses.push(facetCut.facetAddress);
            }
            for (uint j = 0; j < facetCut.functionSelectors.length; j++) {
                bytes4 selector = facetCut.functionSelectors[j];
                if (facetCut.action == FacetCutAction.Add) {
                    addSelector(selector, facetAddress_);
                    if (!changesMade) changesMade = true;
                }
                if (facetCut.action == FacetCutAction.Replace) {
                    replaceSelector(selector, facetAddress_);
                    if (!changesMade) changesMade = true;
                }
                if (facetCut.action == FacetCutAction.Remove) {
                    removeSelector(selector, facetAddress_);
                    if (!changesMade) changesMade = true;
                }
            }
        }
        if (_init != address(0)) {
            require(_calldata.length > 0, "empty calldata");
            (bool success,) = _init.delegatecall(_calldata);
            require(success, "call unsuccessful");
        }
        if (changesMade) emit DiamondCut(_diamondCut, _init, _calldata);
    }

    /// @notice Gets all facet addresses and their four byte function
    /// selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory) {
        Facet[] memory facets_ = new Facet[](addresses.length);
        for (uint i = 0; i < addresses.length; i++) {
            Facet memory facet;
            facet.facetAddress = addresses[i];
            facet.functionSelectors = addressToSelectors[addresses[i]];
            facets_[i] = facet;
        }
        return facets_;
    }

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(
        address _facet
    )
        external
        view
        returns
        (bytes4[] memory)
    {
        return addressToSelectors[_facet];
    }

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses()
        external
        view
        returns
        (address[] memory)
    {
        return addresses;
    }

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector)
        external
        view
        returns
        (address)
    {
        return selectorToAddress[_functionSelector];
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum Tangle.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct Tangle.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum Tangle.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct Tangle.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct Tangle.Facet[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600180546001600160a01b03191633179055611f14806100326000396000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146101bc578063adfca15e1461020e578063cdffacc61461023b57610070565b80631f931c1c1461014d57806352ef6b2c1461016f5780637a0ed6271461019a57610070565b3661007057005b600080357fffffffff0000000000000000000000000000000000000000000000000000000016815260208190526040812054369060609073ffffffffffffffffffffffffffffffffffffffff1680610129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f7a65726f2066616365740000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610148573d6000f35b3d6000fd5b34801561015957600080fd5b5061016d6101683660046116d0565b6102a0565b005b34801561017b57600080fd5b506101846106d6565b6040516101919190611782565b60405180910390f35b3480156101a657600080fd5b506101af610745565b60405161019191906117dc565b3480156101c857600080fd5b506001546101e99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b34801561021a57600080fd5b5061022e6102293660046118d2565b610920565b60405161019191906118f4565b34801561024757600080fd5b506101e961025636600461197e565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60015473ffffffffffffffffffffffffffffffffffffffff163314610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610120565b6000805b8581101561052e57600087878381811061034157610341611999565b905060200281019061035391906119c8565b61035c90611abc565b9050600088888481811061037257610372611999565b905060200281019061038491906119c8565b6103929060208101906118d2565b905061039d816109db565b61042c576002805473ffffffffffffffffffffffffffffffffffffffff838116600090815260036020526040812083905585516001840185559390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790555b60005b8260400151518110156105185760008360400151828151811061045457610454611999565b602002602001015190506000600281111561047157610471611b93565b8460200151600281111561048757610487611b93565b14156104a1576104978184610a80565b856104a157600195505b6001846020015160028111156104b9576104b9611b93565b14156104d3576104c98184610bfb565b856104d357600195505b6002846020015160028111156104eb576104eb611b93565b1415610505576104fb8184611108565b8561050557600195505b508061051081611bf1565b91505061042f565b505050808061052690611bf1565b915050610325565b5073ffffffffffffffffffffffffffffffffffffffff84161561068857816105b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f656d7074792063616c6c646174610000000000000000000000000000000000006044820152606401610120565b60008473ffffffffffffffffffffffffffffffffffffffff1684846040516105db929190611c2a565b600060405180830381855af49150503d8060008114610616576040519150601f19603f3d011682016040523d82523d6000602084013e61061b565b606091505b5050905080610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f63616c6c20756e7375636365737366756c0000000000000000000000000000006044820152606401610120565b505b80156106ce577f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67386868686866040516106c5959493929190611ce3565b60405180910390a15b505050505050565b6060600280548060200260200160405190810160405280929190818152602001828054801561073b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610710575b5050505050905090565b60025460609060009067ffffffffffffffff81111561076657610766611a06565b6040519080825280602002602001820160405280156107ac57816020015b6040805180820190915260008152606060208201528152602001906001900390816107845790505b50905060005b60025481101561091a57604080518082019091526000815260606020820152600282815481106107e4576107e4611999565b600091825260208220015473ffffffffffffffffffffffffffffffffffffffff1682526002805460049291908590811061082057610820611999565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528281019390935260409182019020805482518185028101850190935280835291929091908301828280156108db57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108885790505b50505050508160200181905250808383815181106108fb576108fb611999565b602002602001018190525050808061091290611bf1565b9150506107b2565b50919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460209081526040918290208054835181840281018401909452808452606093928301828280156109cf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161097c5790505b50505050509050919050565b6002546000906109ed57506000919050565b8173ffffffffffffffffffffffffffffffffffffffff166002600081548110610a1857610a18611999565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614801590610a6b575073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054155b15610a7857506000919050565b506001919050565b7fffffffff00000000000000000000000000000000000000000000000000000000821660009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff168015610b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f73656c6563746f722061646400000000000000000000000000000000000000006044820152606401610120565b507fffffffff00000000000000000000000000000000000000000000000000000000821660008181526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b7fffffffff00000000000000000000000000000000000000000000000000000000821660009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff908116908216811415610cb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f73656c6563746f72207265706c616365000000000000000000000000000000006044820152606401610120565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610d0d5790505b5050505050905060008160018351610d789190611e98565b81518110610d8857610d88611999565b60200260200101519050847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e5c577fffffffff000000000000000000000000000000000000000000000000000000008086166000818152600560205260408082205493851682528120839055528251829184918110610e2a57610e2a611999565b7fffffffff00000000000000000000000000000000000000000000000000000000909216602092830291909101909101525b815115610ec15781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01825273ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260409091208351610ebf9285019061159d565b505b815161103b576002805460009190610edb90600190611e98565b81548110610eeb57610eeb611999565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff908116915084168114610faa5773ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040808220549385168252812083905552600280548392908110610f6157610f61611999565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002805480610fbb57610fbb611eaf565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff86168252600390526040812055505b5050507fffffffff00000000000000000000000000000000000000000000000000000000821660008181526020818152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff969096169586179055938252600480825284832080549484526005835294832084905580825260018401855593825290206008820401805463ffffffff60079093169093026101000a9182021990921660e09390931c02919091179055565b7fffffffff00000000000000000000000000000000000000000000000000000000821660009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16806111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f73656c6563746f722072656d6f766500000000000000000000000000000000006044820152606401610120565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602090815260408083208054825181850281018501909352808352919290919083018282801561126657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116112135790505b505050505090506000816001835161127e9190611e98565b8151811061128e5761128e611999565b60200260200101519050847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611362577fffffffff00000000000000000000000000000000000000000000000000000000808616600081815260056020526040808220549385168252812083905552825182918491811061133057611330611999565b7fffffffff00000000000000000000000000000000000000000000000000000000909216602092830291909101909101525b8151156113c75781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01825273ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604090912083516113c59285019061159d565b505b81516115415760028054600091906113e190600190611e98565b815481106113f1576113f1611999565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff9081169150851681146114b05773ffffffffffffffffffffffffffffffffffffffff80861660008181526003602052604080822054938516825281208390555260028054839290811061146757611467611999565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60028054806114c1576114c1611eaf565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff87168252600390526040812055505b505050507fffffffff0000000000000000000000000000000000000000000000000000000016600090815260208190526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b828054828255906000526020600020906007016008900481019282156116395791602002820160005b8382111561160757835183826101000a81548163ffffffff021916908360e01c021790555092602001926004016020816003010492830192600103026115c6565b80156116375782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611607565b505b50611645929150611649565b5090565b5b80821115611645576000815560010161164a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461168257600080fd5b919050565b60008083601f84011261169957600080fd5b50813567ffffffffffffffff8111156116b157600080fd5b6020830191508360208285010111156116c957600080fd5b9250929050565b6000806000806000606086880312156116e857600080fd5b853567ffffffffffffffff8082111561170057600080fd5b818801915088601f83011261171457600080fd5b81358181111561172357600080fd5b8960208260051b850101111561173857600080fd5b6020830197508096505061174e6020890161165e565b9450604088013591508082111561176457600080fd5b5061177188828901611687565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b818110156117d057835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161179e565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156118c3578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156118ae5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019061186c565b50978a01979550505091870191600101611804565b50919998505050505050505050565b6000602082840312156118e457600080fd5b6118ed8261165e565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156117d05783517fffffffff000000000000000000000000000000000000000000000000000000001683529284019291840191600101611910565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461168257600080fd5b60006020828403121561199057600080fd5b6118ed8261194e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126119fc57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a5857611a58611a06565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611aa557611aa5611a06565b604052919050565b80356003811061168257600080fd5b600060608236031215611ace57600080fd5b611ad6611a35565b611adf8361165e565b81526020611aee818501611aad565b81830152604084013567ffffffffffffffff80821115611b0d57600080fd5b9085019036601f830112611b2057600080fd5b813581811115611b3257611b32611a06565b8060051b9150611b43848301611a5e565b8181529183018401918481019036841115611b5d57600080fd5b938501935b83851015611b8257611b738561194e565b82529385019390850190611b62565b604087015250939695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c2357611c23611bc2565b5060010190565b8183823760009101908152919050565b8183526000602080850194508260005b85811015611c8f577fffffffff00000000000000000000000000000000000000000000000000000000611c7c8361194e565b1687529582019590820190600101611c4a565b509495945050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6060808252818101869052600090600560808085019089831b8601018a855b8b811015611e58577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18e3603018112611d6357600080fd5b8d0173ffffffffffffffffffffffffffffffffffffffff611d838261165e565b1684526020611d93818301611aad565b60038110611dca577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85820152604082810135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611e0557600080fd5b8301803567ffffffffffffffff811115611e1e57600080fd5b808a1b3603851315611e2f57600080fd5b8a83890152611e438b890182868501611c3a565b98840198975050509301925050600101611d02565b505073ffffffffffffffffffffffffffffffffffffffff891660208701528581036040870152611e8981888a611c9a565b9b9a5050505050505050505050565b600082821015611eaa57611eaa611bc2565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212205e06cae6fa5e6c53aeeb23692cac6a345334523da855232ea24625c22703b04464736f6c63430008090033

Deployed ByteCode Sourcemap

323:9703:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:7;;;;1601:26;;;;;;;;;;323:9703;;1557:12;;1601:26;;;1638:45;;;;;;;216:2:1;1638:45:0;;;198:21:1;255:2;235:18;;;228:30;294:12;274:18;;;267:40;324:18;;1638:45:0;;;;;;;;;1737:14;1734:1;1731;1718:34;1935:1;1915;1882:14;1862:1;1835:8;1811:5;1780:171;1986:16;1983:1;1980;1965:38;2024:6;2048:38;;;;2125:16;2122:1;2114:28;2048:38;2067:16;2064:1;2057:27;6770:1678;;;;;;;;;;-1:-1:-1;6770:1678:0;;;;;:::i;:::-;;:::i;:::-;;9459:143;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8578:408;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;451:20::-;;;;;;;;;;-1:-1:-1;451:20:0;;;;;;;;;;;4595:42:1;4583:55;;;4565:74;;4553:2;4538:18;451:20:0;4419:226:1;9157:197:0;;;;;;;;;;-1:-1:-1;9157:197:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9838:183::-;;;;;;;;;;-1:-1:-1;9838:183:0;;;;;:::i;:::-;9977:36;;9945:7;9977:36;;;;;;;;;;;;;;9838:183;6770:1678;6940:5;;;;6926:10;:19;6918:41;;;;;;;6164:2:1;6918:41:0;;;6146:21:1;6203:1;6183:18;;;6176:29;6241:11;6221:18;;;6214:39;6270:18;;6918:41:0;5962:332:1;6918:41:0;6970:16;7010:6;7005:1139;7022:22;;;7005:1139;;;7066:24;7093:11;;7105:1;7093:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7066:41;;;:::i;:::-;;;7122:21;7146:11;;7158:1;7146:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;;;;;;;:::i;:::-;7122:51;;7193:33;7212:13;7193:18;:33::i;:::-;7188:177;;7277:9;:16;;7247:27;;;;;;;;:12;:27;;;;;:46;;;7327:21;;7312:37;;;;;;;;;;;;;;;;;;;;;;;;;;7188:177;7384:6;7379:754;7400:8;:26;;;:33;7396:1;:37;7379:754;;;7459:15;7477:8;:26;;;7504:1;7477:29;;;;;;;;:::i;:::-;;;;;;;7459:47;;7548:18;7529:37;;;;;;;;:::i;:::-;:8;:15;;;:37;;;;;;;;:::i;:::-;;7525:181;;;7591:36;7603:8;7613:13;7591:11;:36::i;:::-;7655:11;7650:36;;7682:4;7668:18;;7650:36;7747:22;7728:8;:15;;;:41;;;;;;;;:::i;:::-;;7724:189;;;7794:40;7810:8;7820:13;7794:15;:40::i;:::-;7862:11;7857:36;;7889:4;7875:18;;7857:36;7954:21;7935:8;:15;;;:40;;;;;;;;:::i;:::-;;7931:187;;;8000:39;8015:8;8025:13;8000:14;:39::i;:::-;8067:11;8062:36;;8094:4;8080:18;;8062:36;-1:-1:-1;7435:3:0;;;;:::i;:::-;;;;7379:754;;;;7051:1093;;7046:3;;;;;:::i;:::-;;;;7005:1139;;;-1:-1:-1;8158:19:0;;;;8154:213;;8202:20;8194:47;;;;;;;9819:2:1;8194:47:0;;;9801:21:1;9858:2;9838:18;;;9831:30;9897:16;9877:18;;;9870:44;9931:18;;8194:47:0;9617:338:1;8194:47:0;8257:12;8274:5;:18;;8293:9;;8274:29;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8256:47;;;8326:7;8318:37;;;;;;;10438:2:1;8318:37:0;;;10420:21:1;10477:2;10457:18;;;10450:30;10516:19;10496:18;;;10489:47;10553:18;;8318:37:0;10236:341:1;8318:37:0;8179:188;8154:213;8381:11;8377:63;;;8399:41;8410:11;;8423:5;8430:9;;8399:41;;;;;;;;;;:::i;:::-;;;;;;;;8377:63;6907:1541;6770:1678;;;;;:::o;9459:143::-;9544:16;9585:9;9578:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9459:143;:::o;8578:408::-;8683:9;:16;8619:14;;8646:22;;8671:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;8671:29:0;;;;;;;;;;;;;;;;8646:54;;8716:6;8711:243;8732:9;:16;8728:20;;8711:243;;;-1:-1:-1;;;;;;;;;;;;;;;;;8824:9:0;8834:1;8824:12;;;;;;;;:::i;:::-;;;;;;;;;;;;8803:33;;8896:9;:12;;8877:18;;8824:12;8896:9;8906:1;;8896:12;;;;;;:::i;:::-;;;;;;;;;;;;;;;8877:32;;;;;;;;;;;;;;;8851:58;;;;;;;;;;;;;;;;;;;8877:32;;8851:58;;;8877:32;8851:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;:23;;:58;;;;8937:5;8924:7;8932:1;8924:10;;;;;;;;:::i;:::-;;;;;;:18;;;;8755:199;8750:3;;;;;:::i;:::-;;;;8711:243;;;-1:-1:-1;8971:7:0;8578:408;-1:-1:-1;8578:408:0:o;9157:197::-;9320:26;;;;;;;:18;:26;;;;;;;;;9313:33;;;;;;;;;;;;;;;;;9280:15;;9313:33;;;9320:26;9313:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9157:197;;;:::o;2335:306::-;2466:9;:16;2440:4;;2462:52;;-1:-1:-1;2509:5:0;;2335:306;-1:-1:-1;2335:306:0:o;2462:52::-;2545:8;2529:24;;:9;2539:1;2529:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;:24;;;;:55;;-1:-1:-1;2557:22:0;;;;;;;:12;:22;;;;;;:27;2529:55;2525:86;;;-1:-1:-1;2606:5:0;;2335:306;-1:-1:-1;2335:306:0:o;2525:86::-;-1:-1:-1;2629:4:0;;2335:306;-1:-1:-1;2335:306:0:o;2850:430::-;2986:27;;;2956;2986;;;;;;;;;;;;;3032:33;;3024:58;;;;;;;14116:2:1;3024:58:0;;;14098:21:1;14155:2;14135:18;;;14128:30;14194:14;14174:18;;;14167:42;14226:18;;3024:58:0;13914:336:1;3024:58:0;-1:-1:-1;3093:27:0;;;:17;:27;;;;;;;;;;;:43;;;;;;;;;;;;;;3173:33;;;:18;:33;;;;;;:40;;3147:23;;;:13;:23;;;;;:66;;;3224:33;;;-1:-1:-1;3224:48:0;;;;;;;;;;;;;;;;;;;;;;;3093:43;3224:48;;;;;;;;;;;;;;;;;;;;2850:430::o;4931:1407::-;5071:27;;;5041;5071;;;;;;;;;;;;;;;;5117:36;;;;;5109:65;;;;;;;14457:2:1;5109:65:0;;;14439:21:1;14496:2;14476:18;;;14469:30;14535:18;14515;;;14508:46;14571:18;;5109:65:0;14255:340:1;5109:65:0;5213:39;;;5185:25;5213:39;;;:18;:39;;;;;;;;5185:67;;;;;;;;;;;;;;;;;;;5213:39;;5185:67;;;5213:39;5185:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:19;5285:9;5314:1;5295:9;:16;:20;;;;:::i;:::-;5285:31;;;;;;;;:::i;:::-;;;;;;;5263:53;;5347:8;5331:24;;;:12;:24;;;;5327:174;;5402:23;;;;;;;;:13;:23;;;;;;;5372:27;;;;;;;:53;;;5450:23;5440:34;;5386:12;;5440:9;;:34;;;;;;:::i;:::-;:49;;;;:34;;;;;;;;;;;:49;5327:174;5515:16;;:20;5511:204;;5602:16;;5598:24;;5580:43;;5652:39;;;-1:-1:-1;5652:39:0;;;:18;:39;;;;;;;;:51;;;;;;;;:::i;:::-;;5511:204;5729:16;;5725:416;;5789:9;5799:16;;5767:19;;5789:9;5799:20;;5818:1;;5799:20;:::i;:::-;5789:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;5839:34:0;;;;5835:213;;5922:33;;;;;;;;:12;:33;;;;;;;5894:25;;;;;;;:61;;;5984:33;5974:9;:44;;5907:11;;5922:33;5974:44;;;;;;:::i;:::-;;;;;;;;;:58;;;;;;;;;;;;;;;;;;5835:213;6062:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6092:33;;;;:12;:33;;;;;:37;-1:-1:-1;5725:416:0;-1:-1:-1;;;6151:27:0;;;:17;:27;;;;;;;;;;;:43;;;;;;;;;;;;;;6231:33;;;:18;:33;;;;;;:40;;6205:23;;;:13;:23;;;;;:66;;;6282:33;;;-1:-1:-1;6282:48:0;;;;;;;;;;;;;;;;;;;;;;;6151:43;6282:48;;;;;;;;;;;;;;;;;;;;4931:1407::o;3489:1227::-;3628:27;;;3598;3628;;;;;;;;;;;;;3674:33;3666:61;;;;;;;15121:2:1;3666:61:0;;;15103:21:1;15160:2;15140:18;;;15133:30;15199:17;15179:18;;;15172:45;15234:18;;3666:61:0;14919:339:1;3666:61:0;3766:33;;;3738:25;3766:33;;;:18;:33;;;;;;;;3738:61;;;;;;;;;;;;;;;;;;;3766:33;;3738:61;;;3766:33;3738:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:19;3832:9;3861:1;3842:9;:16;:20;;;;:::i;:::-;3832:31;;;;;;;;:::i;:::-;;;;;;;3810:53;;3894:8;3878:24;;;:12;:24;;;;3874:174;;3949:23;;;;;;;;:13;:23;;;;;;;3919:27;;;;;;;:53;;;3997:23;3987:34;;3933:12;;3987:9;;:34;;;;;;:::i;:::-;:49;;;;:34;;;;;;;;;;;:49;3874:174;4062:16;;:20;4058:198;;4149:16;;4145:24;;4127:43;;4199:33;;;-1:-1:-1;4199:33:0;;;:18;:33;;;;;;;;:45;;;;;;;;:::i;:::-;;4058:198;4270:16;;4266:392;;4330:9;4340:16;;4308:19;;4330:9;4340:20;;4359:1;;4340:20;:::i;:::-;4330:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4380:28:0;;;;4376:195;;4457:27;;;;;;;;:12;:27;;;;;;;4429:25;;;;;;;:55;;;4513:27;4503:9;:38;;4442:11;;4457:27;4503:38;;;;;;:::i;:::-;;;;;;;;;:52;;;;;;;;;;;;;;;;;;4376:195;4585:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:27;;;;:12;:27;;;;;:31;-1:-1:-1;4266:392:0;-1:-1:-1;;;;4668:27:0;;4706:1;4668:27;;;;;;;;;;:40;;;;;;3489:1227::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;353:196:1;421:20;;481:42;470:54;;460:65;;450:93;;539:1;536;529:12;450:93;353:196;;;:::o;554:347::-;605:8;615:6;669:3;662:4;654:6;650:17;646:27;636:55;;687:1;684;677:12;636:55;-1:-1:-1;710:20:1;;753:18;742:30;;739:50;;;785:1;782;775:12;739:50;822:4;814:6;810:17;798:29;;874:3;867:4;858:6;850;846:19;842:30;839:39;836:59;;;891:1;888;881:12;836:59;554:347;;;;;:::o;906:1008::-;1047:6;1055;1063;1071;1079;1132:2;1120:9;1111:7;1107:23;1103:32;1100:52;;;1148:1;1145;1138:12;1100:52;1188:9;1175:23;1217:18;1258:2;1250:6;1247:14;1244:34;;;1274:1;1271;1264:12;1244:34;1312:6;1301:9;1297:22;1287:32;;1357:7;1350:4;1346:2;1342:13;1338:27;1328:55;;1379:1;1376;1369:12;1328:55;1419:2;1406:16;1445:2;1437:6;1434:14;1431:34;;;1461:1;1458;1451:12;1431:34;1516:7;1509:4;1499:6;1496:1;1492:14;1488:2;1484:23;1480:34;1477:47;1474:67;;;1537:1;1534;1527:12;1474:67;1568:4;1564:2;1560:13;1550:23;;1592:6;1582:16;;;1617:40;1651:4;1640:9;1636:20;1617:40;:::i;:::-;1607:50;;1710:2;1699:9;1695:18;1682:32;1666:48;;1739:2;1729:8;1726:16;1723:36;;;1755:1;1752;1745:12;1723:36;;1794:60;1846:7;1835:8;1824:9;1820:24;1794:60;:::i;:::-;906:1008;;;;-1:-1:-1;906:1008:1;;-1:-1:-1;1873:8:1;;1768:86;906:1008;-1:-1:-1;;;906:1008:1:o;2051:681::-;2222:2;2274:21;;;2344:13;;2247:18;;;2366:22;;;2193:4;;2222:2;2445:15;;;;2419:2;2404:18;;;2193:4;2488:218;2502:6;2499:1;2496:13;2488:218;;;2567:13;;2582:42;2563:62;2551:75;;2681:15;;;;2646:12;;;;2524:1;2517:9;2488:218;;;-1:-1:-1;2723:3:1;;2051:681;-1:-1:-1;;;;;;2051:681:1:o;2737:1677::-;2921:4;2950:2;2990;2979:9;2975:18;3020:2;3009:9;3002:21;3043:6;3078;3072:13;3109:6;3101;3094:22;3135:2;3125:12;;3168:2;3157:9;3153:18;3146:25;;3230:2;3220:6;3217:1;3213:14;3202:9;3198:30;3194:39;3268:2;3260:6;3256:15;3289:1;3310;3320:1065;3336:6;3331:3;3328:15;3320:1065;;;3405:22;;;3429:66;3401:95;3389:108;;3520:13;;3607:9;;3618:42;3603:58;3588:74;;3701:11;;3695:18;3733:15;;;3726:27;;;3814:19;;3560:15;;;3846:24;;;3936:21;;;;3981:1;;3904:2;3892:15;;;3995:282;4011:8;4006:3;4003:17;3995:282;;;4092:15;;4109:66;4088:88;4074:103;;4246:17;;;;4039:1;4030:11;;;;;4203:14;;;;3995:282;;;-1:-1:-1;4363:12:1;;;;4300:5;-1:-1:-1;;;4328:15:1;;;;3362:1;3353:11;3320:1065;;;-1:-1:-1;4402:6:1;;2737:1677;-1:-1:-1;;;;;;;;;2737:1677:1:o;4650:186::-;4709:6;4762:2;4750:9;4741:7;4737:23;4733:32;4730:52;;;4778:1;4775;4768:12;4730:52;4801:29;4820:9;4801:29;:::i;:::-;4791:39;4650:186;-1:-1:-1;;;4650:186:1:o;4841:703::-;5010:2;5062:21;;;5132:13;;5035:18;;;5154:22;;;4981:4;;5010:2;5233:15;;;;5207:2;5192:18;;;4981:4;5276:242;5290:6;5287:1;5284:13;5276:242;;;5355:13;;5370:66;5351:86;5339:99;;5493:15;;;;5458:12;;;;5312:1;5305:9;5276:242;;5549:219;5616:20;;5676:66;5665:78;;5655:89;;5645:117;;5758:1;5755;5748:12;5773:184;5831:6;5884:2;5872:9;5863:7;5859:23;5855:32;5852:52;;;5900:1;5897;5890:12;5852:52;5923:28;5941:9;5923:28;:::i;6299:184::-;6351:77;6348:1;6341:88;6448:4;6445:1;6438:15;6472:4;6469:1;6462:15;6488:382;6580:4;6638:11;6625:25;6728:66;6717:8;6701:14;6697:29;6693:102;6673:18;6669:127;6659:155;;6810:1;6807;6800:12;6659:155;6831:33;;;;;6488:382;-1:-1:-1;;6488:382:1:o;6875:184::-;6927:77;6924:1;6917:88;7024:4;7021:1;7014:15;7048:4;7045:1;7038:15;7064:253;7136:2;7130:9;7178:4;7166:17;;7213:18;7198:34;;7234:22;;;7195:62;7192:88;;;7260:18;;:::i;:::-;7296:2;7289:22;7064:253;:::o;7322:334::-;7393:2;7387:9;7449:2;7439:13;;7454:66;7435:86;7423:99;;7552:18;7537:34;;7573:22;;;7534:62;7531:88;;;7599:18;;:::i;:::-;7635:2;7628:22;7322:334;;-1:-1:-1;7322:334:1:o;7661:155::-;7741:20;;7790:1;7780:12;;7770:40;;7806:1;7803;7796:12;7821:1213;7921:9;7980:4;7972:5;7956:14;7952:26;7948:37;7945:57;;;7998:1;7995;7988:12;7945:57;8026:22;;:::i;:::-;8073:25;8092:5;8073:25;:::i;:::-;8064:7;8057:42;8118:2;8154:46;8196:2;8189:5;8185:14;8154:46;:::i;:::-;8149:2;8140:7;8136:16;8129:72;8248:2;8241:5;8237:14;8224:28;8271:18;8312:2;8304:6;8301:14;8298:34;;;8328:1;8325;8318:12;8298:34;8351:18;;;;8407:14;8400:4;8392:13;;8388:34;8378:62;;8436:1;8433;8426:12;8378:62;8472:2;8459:16;8494:2;8490;8487:10;8484:36;;;8500:18;;:::i;:::-;8546:2;8543:1;8539:10;8529:20;;8569:28;8593:2;8589;8585:11;8569:28;:::i;:::-;8631:15;;;8701:11;;;8697:20;;;8662:12;;;;8740:14;8729:26;;8726:46;;;8768:1;8765;8758:12;8726:46;8792:11;;;;8812:147;8828:6;8823:3;8820:15;8812:147;;;8894:22;8912:3;8894:22;:::i;:::-;8882:35;;8845:12;;;;8937;;;;8812:147;;;8988:2;8975:16;;8968:31;-1:-1:-1;8979:7:1;;7821:1213;-1:-1:-1;;;;;;7821:1213:1:o;9039:184::-;9091:77;9088:1;9081:88;9188:4;9185:1;9178:15;9212:4;9209:1;9202:15;9228:184;9280:77;9277:1;9270:88;9377:4;9374:1;9367:15;9401:4;9398:1;9391:15;9417:195;9456:3;9487:66;9480:5;9477:77;9474:103;;;9557:18;;:::i;:::-;-1:-1:-1;9604:1:1;9593:13;;9417:195::o;9960:271::-;10143:6;10135;10130:3;10117:33;10099:3;10169:16;;10194:13;;;10169:16;9960:271;-1:-1:-1;9960:271:1:o;10582:492::-;10681:6;10676:3;10669:19;10651:3;10707:4;10736:2;10731:3;10727:12;10720:19;;10762:5;10785:1;10795:254;10809:6;10806:1;10803:13;10795:254;;;10901:66;10874:25;10892:6;10874:25;:::i;:::-;10870:98;10858:111;;10989:12;;;;11024:15;;;;10831:1;10824:9;10795:254;;;-1:-1:-1;11065:3:1;;10582:492;-1:-1:-1;;;;;10582:492:1:o;11079:325::-;11167:6;11162:3;11155:19;11219:6;11212:5;11205:4;11200:3;11196:14;11183:43;;11271:1;11264:4;11255:6;11250:3;11246:16;11242:27;11235:38;11137:3;11393:4;11323:66;11318:2;11310:6;11306:15;11302:88;11297:3;11293:98;11289:109;11282:116;;11079:325;;;;:::o;11409:2500::-;11724:2;11776:21;;;11749:18;;;11832:22;;;11695:4;;11908:1;11885:3;11870:19;;;;11951:15;;;11936:31;;11932:41;11996:6;11695:4;12030:1689;12044:6;12041:1;12038:13;12030:1689;;;12133:66;12121:9;12113:6;12109:22;12105:95;12100:3;12093:108;12253:6;12240:20;12340:66;12331:6;12315:14;12311:27;12307:100;12287:18;12283:125;12273:153;;12422:1;12419;12412:12;12273:153;12452:31;;12542:42;12515:25;12452:31;12515:25;:::i;:::-;12511:74;12503:6;12496:90;12609:4;12646:46;12688:2;12681:5;12677:14;12646:46;:::i;:::-;12732:1;12718:12;12715:19;12705:227;;12776:77;12773:1;12766:88;12881:4;12878:1;12871:15;12913:4;12910:1;12903:15;12705:227;12952:15;;;12945:37;13005:4;13063:14;;;13050:28;13135:14;13131:26;;;13159:66;13127:99;13101:126;;13091:154;;13241:1;13238;13231:12;13091:154;13273:32;;13332:21;;13380:18;13369:30;;13366:50;;;13412:1;13409;13402:12;13366:50;13471:6;13467:2;13463:15;13447:14;13443:36;13436:5;13432:48;13429:68;;;13493:1;13490;13483:12;13429:68;13534:2;13529;13521:6;13517:15;13510:27;13560:79;13635:2;13627:6;13623:15;13615:6;13610:2;13601:7;13597:16;13560:79;:::i;:::-;13697:12;;;;13550:89;-1:-1:-1;;;13662:15:1;;;-1:-1:-1;;12066:1:1;12059:9;12030:1689;;;-1:-1:-1;;1996:42:1;1985:54;;13770:4;13755:20;;1973:67;13826:9;13818:6;13814:22;13807:4;13796:9;13792:20;13785:52;13854:49;13896:6;13888;13880;13854:49;:::i;:::-;13846:57;11409:2500;-1:-1:-1;;;;;;;;;;;11409:2500:1:o;14600:125::-;14640:4;14668:1;14665;14662:8;14659:34;;;14673:18;;:::i;:::-;-1:-1:-1;14710:9:1;;14600:125::o;14730:184::-;14782:77;14779:1;14772:88;14879:4;14876:1;14869:15;14903:4;14900:1;14893:15

Swarm Source

ipfs://5e06cae6fa5e6c53aeeb23692cac6a345334523da855232ea24625c22703b044
Loading