Contract 0x9da4fb132b6960c2063afc2a966e182b129cec7d

Contract Overview

Balance:
0 BNB

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x3aeaa87f599873b5472d0570e1bb74d67de10e9d176be094d19afbbfe5840c9e71059872021-03-15 10:10:5036 days 8 hrs ago0x4f476c35f1d823c24c476db1eecb97db3a6a49a1 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.0003487
0xb056a5f0d5d516b6d3f6b28036ec149e5054b77a7e63ffe321f5bd9c6736e42171059842021-03-15 10:10:4136 days 8 hrs ago0x4f476c35f1d823c24c476db1eecb97db3a6a49a1 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00034848
0xaeb40ade757f24ec5b3ae916b70ab1b993e755290536d349ebca9752c1d7fc7f71059802021-03-15 10:10:2936 days 8 hrs ago0xf52e9da33ffde0a12418e93ce6fe8b5691212164 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00051729
0x79a28fe1fc347d5118cee83f36caa6ca555f284f435c20cad2dab4089125075471059762021-03-15 10:10:1736 days 8 hrs ago0x9917a225d8e40ed471598ec1cf5470b0406eee85 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00077797
0x0ff7e2ede590035da114c85fedc612389988cb2a51329fc367fb293e5195cc2271059722021-03-15 10:10:0536 days 8 hrs ago0xf52e9da33ffde0a12418e93ce6fe8b5691212164 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00230249
0x1a6ef4cda1797e866a6eee1999895e98fe1643baf20c91c3c986c32941a65dec71059682021-03-15 10:09:5336 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0.013 BNB0.00035254
0x9243fc38d6cc327c4831af792aafcaa47cabc7539c354f09ab302734d814d5d871059642021-03-15 10:09:4136 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00099254
0xc5a46d01a8c6063902489ee6a4f9b1d8e8e0f04d9a64ef88d18e3d8be60e322271059612021-03-15 10:09:3236 days 8 hrs ago0x9917a225d8e40ed471598ec1cf5470b0406eee85 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00047381
0x27f5574d52bedce4d42b4f843a813144cbdb7dd56f0eb833f3326eeee141e2ba71059592021-03-15 10:09:2636 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00182812
0xf15d3ea5783089130920f4b8b1275805c68e166b33ca797db1bd8320ca9be24171059562021-03-15 10:09:1736 days 8 hrs ago0x4f476c35f1d823c24c476db1eecb97db3a6a49a1 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00043872
0xa4c2781205a90c3b73a7dea071eee7539a794b313a48040250ea5e0e74ae281e71059532021-03-15 10:09:0836 days 8 hrs ago0xf52e9da33ffde0a12418e93ce6fe8b5691212164 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00045507
0x7d4a201cc67085f4c6e1587cccc016cd2065bc27c85411be709bb4ff60682db171059502021-03-15 10:08:5936 days 8 hrs ago0x9917a225d8e40ed471598ec1cf5470b0406eee85 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00077797
0xa0963e73c3fd75af5a4594d3753c73aef3aaa0551b2025915f2a6f4cb58bb6c471059482021-03-15 10:08:5336 days 8 hrs ago0xf52e9da33ffde0a12418e93ce6fe8b5691212164 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00249689
0x9ca6c0274a5474a9bdced4fa17a5cfadd45d9922b1bb53a14bfc316ce22c35e371059452021-03-15 10:08:4436 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00051626
0xb4e7dcd2edbb78e770d6041fc8782003f8a9b43e047fa1b11c1d7d8b1282ea5171059352021-03-15 10:08:1436 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00127835
0xc61e72439899c4483f08c3fe947f6578f7d3fb831e9a3af4a49f343e41aabbc671059322021-03-15 10:08:0536 days 8 hrs ago0x9917a225d8e40ed471598ec1cf5470b0406eee85 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00049196
0x013280027de1e7f88a8c26c930af6ec594cb508ec89836dc93d41c8250f0dd7771059302021-03-15 10:07:5936 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00202273
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago0xf52e9da33ffde0a12418e93ce6fe8b5691212164 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.0021832
0x9af65c08b15cb76fd55b2469e1da5d2c3a4b6ce2e07f2e2bb509eed570cc48cb71059152021-03-15 10:07:1436 days 8 hrs ago0xf52e9da33ffde0a12418e93ce6fe8b5691212164 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0.2 BNB0.00170852
0x1de8ff22640222b28d609e24ba0e9df4bc1b144e531df37822816e2b91ccb1ba71059112021-03-15 10:07:0236 days 8 hrs ago0x4f476c35f1d823c24c476db1eecb97db3a6a49a1 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00036191
0x0abe1a576fe9f0a2ff2ceffaf95598ee61358323463f868fbf374df6e2e6947f71059022021-03-15 10:06:3536 days 8 hrs ago0x4f476c35f1d823c24c476db1eecb97db3a6a49a1 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.0008526
0x1c9cf63630c267a29e2715828ad170bdee43183bea9575b42b4ce11f1d6ec21a71058992021-03-15 10:06:2636 days 8 hrs ago0x4f476c35f1d823c24c476db1eecb97db3a6a49a1 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00083585
0x395617dfef792d61e849cf410924d299c10448996e57e5507a4ddc6c748f083a71058382021-03-15 10:03:2336 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00099254
0x764a36608e65867887eb684ae588db8860c95b8ff06746b8086a854976ec17e371058352021-03-15 10:03:1436 days 8 hrs ago0x9917a225d8e40ed471598ec1cf5470b0406eee85 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00047381
0x5d412aee594e6219e4aaee217635e779d6ebed663ec2df229ab6d5f07a8830f871058322021-03-15 10:03:0536 days 8 hrs ago0x4e54b369aecfe04e6ef3f6c768f7a77f39c388c8 IN  0x9da4fb132b6960c2063afc2a966e182b129cec7d0 BNB0.00182812
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x3aeaa87f599873b5472d0570e1bb74d67de10e9d176be094d19afbbfe5840c9e71059872021-03-15 10:10:5036 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x321bec4d46ee95aab0f59606590b46fdcd4215830 BNB
0xb056a5f0d5d516b6d3f6b28036ec149e5054b77a7e63ffe321f5bd9c6736e42171059842021-03-15 10:10:4136 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0xaeb40ade757f24ec5b3ae916b70ab1b993e755290536d349ebca9752c1d7fc7f71059802021-03-15 10:10:2936 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0x79a28fe1fc347d5118cee83f36caa6ca555f284f435c20cad2dab4089125075471059762021-03-15 10:10:1736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x12859799141ba1d7c5c4a809b8194646c343f43d0 BNB
0x0ff7e2ede590035da114c85fedc612389988cb2a51329fc367fb293e5195cc2271059722021-03-15 10:10:0536 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x12859799141ba1d7c5c4a809b8194646c343f43d0 BNB
0x1a6ef4cda1797e866a6eee1999895e98fe1643baf20c91c3c986c32941a65dec71059682021-03-15 10:09:5336 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90.013 BNB
0x1a6ef4cda1797e866a6eee1999895e98fe1643baf20c91c3c986c32941a65dec71059682021-03-15 10:09:5336 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0x9243fc38d6cc327c4831af792aafcaa47cabc7539c354f09ab302734d814d5d871059642021-03-15 10:09:4136 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0xc5a46d01a8c6063902489ee6a4f9b1d8e8e0f04d9a64ef88d18e3d8be60e322271059612021-03-15 10:09:3236 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xa5e16e4eb5dc747f17eb6ace11b180fc4f8179060 BNB
0x27f5574d52bedce4d42b4f843a813144cbdb7dd56f0eb833f3326eeee141e2ba71059592021-03-15 10:09:2636 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xa5e16e4eb5dc747f17eb6ace11b180fc4f8179060 BNB
0xf15d3ea5783089130920f4b8b1275805c68e166b33ca797db1bd8320ca9be24171059562021-03-15 10:09:1736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0xa4c2781205a90c3b73a7dea071eee7539a794b313a48040250ea5e0e74ae281e71059532021-03-15 10:09:0836 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0x7d4a201cc67085f4c6e1587cccc016cd2065bc27c85411be709bb4ff60682db171059502021-03-15 10:08:5936 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x12859799141ba1d7c5c4a809b8194646c343f43d0 BNB
0xa0963e73c3fd75af5a4594d3753c73aef3aaa0551b2025915f2a6f4cb58bb6c471059482021-03-15 10:08:5336 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x12859799141ba1d7c5c4a809b8194646c343f43d0 BNB
0x9ca6c0274a5474a9bdced4fa17a5cfadd45d9922b1bb53a14bfc316ce22c35e371059452021-03-15 10:08:4436 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0xb4e7dcd2edbb78e770d6041fc8782003f8a9b43e047fa1b11c1d7d8b1282ea5171059352021-03-15 10:08:1436 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0xc61e72439899c4483f08c3fe947f6578f7d3fb831e9a3af4a49f343e41aabbc671059322021-03-15 10:08:0536 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xa5e16e4eb5dc747f17eb6ace11b180fc4f8179060 BNB
0x013280027de1e7f88a8c26c930af6ec594cb508ec89836dc93d41c8250f0dd7771059302021-03-15 10:07:5936 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xa5e16e4eb5dc747f17eb6ace11b180fc4f8179060 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x8301f2213c0eed49a7e28ae4c3e91722919b8b470 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x8301f2213c0eed49a7e28ae4c3e91722919b8b470 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x8301f2213c0eed49a7e28ae4c3e91722919b8b470 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xe3820709ae191ae3ee87788a3b5bff0f0c2bbfdb0 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0x321bec4d46ee95aab0f59606590b46fdcd4215830 BNB
0x86b69c1c3ea8b20029a54747ff87b0bc809e5bcba38c9be9e8a0a31e01946e8f71059262021-03-15 10:07:4736 days 8 hrs ago 0x9da4fb132b6960c2063afc2a966e182b129cec7d 0xb91fe34880447db62ebfe2a152da527e9bfffdf90 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YouBank

Compiler Version
v0.6.2+commit.bacdbe57

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 12 : YouBank.sol
pragma solidity ^0.6.0;
import "./interface/IPool.sol";
import "./interface/IAssetsManageTeam.sol";
import "./interface/IReturnInvestmentLpartner.sol";
import "./interface/ICreator.sol";
import "./interface/IRoleModel.sol";
import "./interface/IOracle.sol";
import "./access/TeamRole.sol";
import "./utils/EnumerableSet.sol";
import "./interface/IERC20.sol";
import "./math/SafeMath.sol";
contract YouBank is TeamRole, IRoleModel {
    using SafeMath for uint256;
    using EnumerableSet for EnumerableSet.AddressSet;
    event CreatePool(address pool);
    event AddPool(address pool);
    event UpdatePool(address pool);
    address private _creatorInvestPool;// The address of the contract that creates the Investment Pool
    IAssetsManageTeam private _assetsManageTeam;// Smart contract for request deposit
    IReturnInvestmentLpartner private _returnInvestmentLpartner;// Smart contract for return investment
    IOracle _oracleContract;// Oracle contract address
    EnumerableSet.AddressSet private _addressesPools;// Collection of all pool addresses
    mapping(address => uint256) private _investedFunds;
    mapping(address => uint256) private _returnedFunds;
    mapping(address => uint256) private _poolValues;
    uint256 private _poolValuesTotal;
    mapping(address => uint256) private _poolValuesUSD;
    uint256 private _poolValuesUSDTotal;
    function createPool(string memory name, uint256 lockPeriod, uint256 depositFixedFee, uint256 referralDepositFee, uint256 anualPrecent, uint256 penaltyEarlyWithdraw, address superAdmin, address gPartner, address lPartner, address startupTeam) public onlyTeam returns (bool) {
        ICreator _creatorContract = ICreator(_creatorInvestPool);
        address _investPool = _creatorContract.createPool(name, lockPeriod, depositFixedFee, referralDepositFee, anualPrecent, penaltyEarlyWithdraw, superAdmin, gPartner, lPartner, startupTeam);
        _addressesPools.add(_investPool);
        emit CreatePool(_investPool);
        return true;
    }
    function addPool(address poolAddress) public onlyTeam returns (bool) {
        _addressesPools.add(poolAddress);
        _assetsManageTeam.addManager(poolAddress);
        emit AddPool(poolAddress);
        return true;
    }
    function updatePool(address pool, string memory name, bool publicPool, address token, uint256 locked, uint256 depositFixedFee, uint256 referralDepositFee, uint256 anualPrecent, uint256 penaltyEarlyWithdraw) public onlyTeam returns (bool) {
        IPool(pool)._updatePool(name, publicPool, token, locked, depositFixedFee, referralDepositFee, anualPrecent, penaltyEarlyWithdraw);
        emit UpdatePool(pool);
        return true;
    }
    function setPriceToken(address pool, uint256 rate) external onlyTeam returns (bool) {
        IPool(pool)._setRate(rate);
        return true;
    }
    function setTeamReward(address pool, uint256 teamReward) external onlyTeam returns (bool) {
        IPool(pool)._setTeamReward(teamReward);
        return true;
    }
    event DepositTokenToPool(address pool, uint256 amount);
    function depositTokenToPool(address pool, uint256 amount) public returns (bool) {
        IPool(pool)._depositTokenPoolRegistry(msg.sender, amount);
        emit DepositTokenToPool(pool,amount);
        return true;
    }
    event WithdrawToStartupTeam(address pool, uint256 amount);
    function withdrawToStartupTeam(address pool, uint256 amount) public returns (bool) {
        IPool(pool)._withdrawTeam(msg.sender, amount);
        emit WithdrawToStartupTeam(pool,amount);
        return true;
    }
    function requestStartupTeam(bool withdraw, address pool, uint256 maxValue) public returns (bool) {
        return _assetsManageTeam._request(withdraw, pool, msg.sender, maxValue);
    }
    function approveReqStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._approve(pool, team, msg.sender);
    }
    function disapproveReqStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._disapprove(pool, team, msg.sender);
    }
    function lockStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._lock(pool, team, msg.sender);
    }
    function unlockStartupTeam(address pool, address team) public returns (bool) {
        return _assetsManageTeam._unlock(pool, team, msg.sender);
    }
    function getDepositPool(address pool, address owner, uint256 index) public view returns (uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, uint256 lenghtDeposit, address investedToken)
    {
        (amount, time, lock_period, refund_authorize, amountWithdrawal,investedToken) = IPool(pool).getDeposit(owner, index);
        uint256 lenghtDepSender = IPool(pool).getDepositLength(msg.sender);
        return (amount, time, lock_period, refund_authorize,amountWithdrawal,lenghtDepSender,investedToken);
    }
    function getPerformedOperationsTeamStartup(address pool, address owner, uint256 index) public view returns (address token, uint256 amountToken, uint256 withdrawAmount, uint256 time)
    {
        (token, amountToken, withdrawAmount, time) = _assetsManageTeam.getPerformedOperations(pool, owner, index);
        return (token, amountToken, withdrawAmount, time);
    }
    function getRequestsTeam(address pool) public view returns (address[] memory) {
        return _assetsManageTeam.getRequests(pool);
    }
    function getApprovalReqTeam(address pool) public view returns (address[] memory) {
        return _assetsManageTeam.getApproval(pool);
    }
    function getRequestTeamAddress(address pool, address team) public view returns (bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue)
    {
        (lock, maxValueToken, madeValueToken, maxValue, madeValue) = _assetsManageTeam.getRequestTeamAddress(pool, team);
        return (lock, maxValueToken, madeValueToken, maxValue, madeValue);
    }
    function getApproveTeamAddress(address pool, address team) public view returns (bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue)
    {
        (lock, maxValueToken, madeValueToken, maxValue, madeValue) = _assetsManageTeam.getApproveTeamAddress(pool, team);
        return (lock, maxValueToken, madeValueToken, maxValue, madeValue);
    }
    event SetReferral(address pool, address lPartner,address referral,bool result);
    function setReferral(address pool, address lPartner, address referral) public returns (bool) {
        require(IPool(pool).hasRole(LIMITED_PARTNER_ROLE, lPartner), "PoolRegistry: parameter Lpartner has no role LPartner");
        bool result = IPool(pool)._setReferral(msg.sender, lPartner, referral);
        emit SetReferral(pool,lPartner,referral,result);
        return result;
    }
    function getReferral(address pool, address lPartner) public view returns (address) {
        return IPool(pool).getReferral(lPartner);
    }
    function requestReturnInvestmentLpartner(address pool, uint256 index, uint256 amount,address token) public returns (bool) {
        return _returnInvestmentLpartner._request(pool, msg.sender, index, amount, token);
    }
    function approveReturnInvestmentLpartner(address pool, address lPartner) public returns (bool) {
        return _returnInvestmentLpartner._approve(pool, lPartner, msg.sender);
    }
    event WithdrawLPartner(address pool, address lPartner,bool result);
    function withdrawLPartner(address pool) public returns (bool) {
        bool result;
        uint256 totalAmountReturn;
        address token;
        (result,totalAmountReturn,token) = IPool(pool)._withdrawLPartner(msg.sender);
        if (result) {
            _returnedFunds[token] = _returnedFunds[token] + totalAmountReturn;
        }
        emit WithdrawLPartner(pool,msg.sender,result);
        return result;
    }
    function disapproveReturnInvestmentLpartner(address pool, address lPartner) public returns (bool)
    {
        return _returnInvestmentLpartner._disapprove(pool, lPartner, msg.sender);
    }
    function getAddrRequestsReturnInvesLpartner(address pool) public view returns (address[] memory)
    {
        return _returnInvestmentLpartner.getRequests(pool);
    }
    function getRequestsReturnInvestLpartner(address pool, address lPartner) public view returns (uint256[] memory)
    {
        return _returnInvestmentLpartner.getRequestsLpartner(pool, lPartner);
    }
    function getInvestedFunds(address token) public view returns (uint256)
    {
        return _investedFunds[token];
    }
    function getReturnedFunds(address token) public view returns (uint256)
    {
        return _returnedFunds[token];
    }
    uint256 constant private mulitpierDefault = 100000;
    function feesMulitpier(address sender) public view returns (uint256) {
        uint256 balanceProjectTokensForSender = _balanceTokenForTokensale(sender);
        uint256 mulitpier = mulitpierDefault;
        if (balanceProjectTokensForSender > 0) {
            uint256 initialProjectTokensInPool = 10 ** uint256(18) * 80000 ;//_balanceTokenForTokensale(address(this));
            mulitpier = balanceProjectTokensForSender.mul(mulitpierDefault).div(initialProjectTokensInPool).add(mulitpierDefault);
        }
        return mulitpier;
    }
    event DepositToPool(address sender, uint256 amount);
    function depositToPool(address payable pool) public payable returns (bool) {
        uint256 amount = msg.value;
        pool.transfer(amount);
        IPool(pool)._depositPoolRegistry(msg.sender, amount, feesMulitpier(msg.sender));
        _investedFunds[address(0)] = _investedFunds[address(0)] + amount;
        emit DepositToPool(msg.sender,amount);
        return true;
    }
    event ReturnsFromStartupTeam(address sender, uint256 amount);
    function returnsFromStartupTeam(address payable pool) public payable returns (bool) {
        require(IPool(pool).hasRole(STARTUP_TEAM_ROLE, msg.sender), "PoolRegistry: sender has no role TeamStartup");
        pool.transfer(msg.value);
        emit ReturnsFromStartupTeam(msg.sender,msg.value);
        return true;
    }
    function activateDepositToPool(address pool) public onlyTeam returns (bool) {
        return IPool(pool)._activateDepositToPool();
    }
    function disactivateDepositToPool(address pool) public onlyTeam returns (bool) {
        return IPool(pool)._disactivateDepositToPool();
    }
    function grantRoleInvestmentPool(address pool, bytes32 role, address account) public returns (bool) {
        require(IPool(pool).hasRole(SUPER_ADMIN_ROLE, msg.sender), "PoolRegistry: sender has no role GPartner");
        IPool(pool).grantRole(role, account);
        return true;
    }
    function revokeRoleInvestmentPool(address pool, bytes32 role, address account) public returns (bool) {
        require(IPool(pool).hasRole(SUPER_ADMIN_ROLE, msg.sender), "PoolRegistry: sender has no role GPartner");
        IPool(pool).revokeRole(role, account);
        return true;
    }
    function setAddressCreatorInvestPool(address creatorContract) public onlyTeam returns (bool) {
        _creatorInvestPool = creatorContract;
        return true;
    }
    function setAssetManageTeamContract(IAssetsManageTeam addrContract) public onlyTeam returns (bool)
    {
        _assetsManageTeam = addrContract;
        return true;
    }
    function setReturnInvestmentLpartner(IReturnInvestmentLpartner addrContract) public onlyTeam returns (bool)
    {
        _returnInvestmentLpartner = addrContract;
        return true;
    }
    function setOracleContract(IOracle _oracle) public onlyTeam returns (bool) {
        _oracleContract = _oracle;
        return true;
    }
    function getPools() public view returns (address[] memory) {
        return _addressesPools.collection();
    }
    function getInfoPool(address pool) public view returns (string memory name, bool isPublicPool, address token, uint256 locked)
    {
        (name, isPublicPool, token, locked) = IPool(pool).getInfoPool();
        return (name, isPublicPool, token, locked);
    }
    function getInfoPoolFees(address pool) public view returns (uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 anualPrecent, uint256 penaltyEarlyWithdraw, uint256 totalInvestLpartner, uint256 premiumFee)
    {
        (rate ,depositFixedFee , referralDepositFee, anualPrecent , penaltyEarlyWithdraw, totalInvestLpartner, premiumFee) = IPool(pool).getInfoPoolFees();
        return (rate, depositFixedFee, referralDepositFee, anualPrecent, penaltyEarlyWithdraw, totalInvestLpartner, premiumFee);
    }
    function getAssetManageTeamContract() public view returns (IAssetsManageTeam) {
        return _assetsManageTeam;
    }
    function getReturnInvesmentLpartner() public view returns (IReturnInvestmentLpartner) {
        return _returnInvestmentLpartner;
    }
    function getOracleContract() public view returns (IOracle) {
        return _oracleContract;
    }
    function getAddressesRolesPool(address pool, bytes32 role) public view returns (address[] memory)
    {
        return IPool(pool).getMembersRole(role);
    }
    function getAddressCreatorInvestPool() public view returns (address) {
        return _creatorInvestPool;
    }
    function getPoolValues(address pool) public view returns (uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue, uint256 poolValuesTotal, uint256 poolValuesUSDTotal) {
        (poolValueUSD, poolValue, proofOfValue) = IPool(pool).getPoolValues();
        return (poolValueUSD,poolValue,proofOfValue,_poolValuesTotal,_poolValuesUSDTotal);
    }
    event SetPoolValues(address pool,uint256 poolValueUSD, uint256 poolValue, string proofOfValue, bool result);
    function setPoolValues(address pool,uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue) public returns (bool) {
        require(IPool(pool).hasRole(SUPER_ADMIN_ROLE, msg.sender), "PoolRegistry: sender has no role SUPER_ADMIN_ROLE");
        _poolValues[pool] = poolValue;
        _poolValuesUSD[pool] = poolValueUSD;
        bool result = IPool(pool)._setPoolValues(poolValueUSD,poolValue,proofOfValue);
        uint256 poolValueUSDNewTotal;
        uint256 poolValueNewTotal;
        address [] memory pools = getPools();
        for (uint256 i = 0; i < pools.length; i++) {
            uint256 poolValueUSDforSum;
            uint256 poolValueforSum;
            (poolValueUSDforSum, poolValueforSum, ) = IPool(pools[i]).getPoolValues();
            poolValueUSDNewTotal += poolValueUSDforSum;
            poolValueNewTotal += poolValueforSum;
        }
        if (poolValueNewTotal > 0) {
            _poolValuesTotal = poolValueNewTotal;
        }
        if (poolValueUSDNewTotal > 0) {
            _poolValuesUSDTotal = poolValueUSDNewTotal;
        }
        emit SetPoolValues(pool,poolValueUSD,poolValue,proofOfValue,result);
        return result;
    }
    function getPoolPairReserves(address pool) public view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address token0, address token1, address weth,uint price0CumulativeLast,uint price1CumulativeLast)
    {
        return IPool(pool).getPoolPairReserves();
    }
    event DepositInvestmentInTokensToPool(address pool,uint256 amount, address token);
    function _depositInvestmentInTokensToPoolCalculationReferral (address referalAddress, uint256 amount, uint256 referralDepositFee) private view returns (uint256) {
        uint256 depositFeeReferrer = 0;
        if (referalAddress != address(0)) {
            depositFeeReferrer = amount.mul(referralDepositFee).div(100); // zero referral fees for zero address
        }
        return depositFeeReferrer;
    }
    function _depositInvestmentInTokensToPoolCalculation (uint256 depositFixedFee,uint256 referralDepositFee, uint256 amount, address referalAddress, uint256 mulitpier) private view returns (uint256,uint256,uint256){
        uint256 depositFee = amount.mul(depositFixedFee).div(100).mul(mulitpier).div(mulitpierDefault);
        uint256 depositFeeReferrer = _depositInvestmentInTokensToPoolCalculationReferral(referalAddress, amount, referralDepositFee).mul(mulitpier).div(mulitpierDefault);
        uint256 finalAmount = amount.sub(depositFee);
        if (depositFeeReferrer > 0) {
            finalAmount = finalAmount.sub(depositFeeReferrer);
        }
        return (finalAmount,depositFee,depositFeeReferrer);
    }
    function depositInvestmentInTokensToPool(address pool, uint256 amount, address token) public returns (bool) {
        require(amount > 0, "depositInvestmentInTokensToPool: the number of sent token is 0");
        uint256 depositFixedFee = 0;
        uint256 referralDepositFee = 0;
        (, depositFixedFee, referralDepositFee, , , , ) = IPool(pool).getInfoPoolFees();
        address payable team = payable(getTeamAddresses()[1]);
        address referalAddress = IPool(pool).getReferral(msg.sender);
        uint256 depositFee = 0;
        uint256 depositFeeReferrer = 0;
        uint256 finalAmount = 0;
        (finalAmount,depositFee,depositFeeReferrer) = _depositInvestmentInTokensToPoolCalculation(depositFixedFee, referralDepositFee, amount, referalAddress, feesMulitpier(msg.sender));
        IERC20(token).transferFrom(msg.sender, pool, finalAmount);
        IERC20(token).transferFrom(msg.sender, team, depositFee);
        if (depositFeeReferrer > 0) {
            IERC20(token).transferFrom(msg.sender, payable(referalAddress), depositFeeReferrer);
        }
        IPool(pool)._depositInvestmentInTokensToPool(msg.sender,amount,token);
        _investedFunds[token] = _investedFunds[token] + amount;
        emit DepositInvestmentInTokensToPool(pool,amount,token);
        return true;
    }
    event WithdrawInTokensToStartupTeam(address pool,uint256 amount, address token);
    function withdrawInTokensToStartupTeam(address pool,address token, uint256 amount) public returns (bool) {
        IPool(pool)._withdrawTokensToStartup(msg.sender,token, amount);
        emit WithdrawInTokensToStartupTeam(pool,amount,token);
        return true;
    }
    function requestTokensWithdwawalFromStartup(address pool, address token, uint256 maxValue) public returns (bool) {
        return _assetsManageTeam._requestTokensWithdwawalFromStartup(pool,token, msg.sender, maxValue);
    }
    function approveTokensWithdwawalFromStartup(address pool, address token, address team) public returns (bool) {
        return _assetsManageTeam._approveTokensWithdwawalFromStartup(pool,token,team,msg.sender);
    }
    event ReturnsInTokensFromTeam(address pool,uint256 amount, address token);
    function returnsInTokensFromTeam(address payable pool,address token, uint256 amount) public returns (bool) {
        IPool(pool)._returnsInTokensFromTeam(msg.sender,token,amount);
        emit ReturnsInTokensFromTeam(pool,amount,token);
        return true;
    }
    function withdrawSuperAdmin(address pool, address token, uint256 amount) public returns (bool) {
        return IPool(pool)._withdrawSuperAdmin(msg.sender, token, amount);
    }
    function getCustomPrice(address aggregator) public view returns (uint256,uint8) {
        return _oracleContract.getCustomPrice(aggregator);
    }
    mapping(address => uint256) private _investorsReceivedMainTokenLatestDate;
    event ClaimFreeProjectTokens(address pool, uint256 lastRewardTimestamp, uint256 poolValuesUSDTotal, uint256 balanceLeavedOnThisContractProjectTokens, uint256 amountTotalUSD, bool newInvestor, uint256 tokensToPay, uint256 poolValuesUSDTotalInUSD, uint256 percentOfTAV);
    function _tokenForTokensale() private view returns (IERC20) {
        address tokenForTokensale;
        (,,tokenForTokensale,) = IPool(getPools()[0]).getInfoPool();
        return IERC20(tokenForTokensale);
    }
    function _balanceTokenForTokensale(address forAddress) private view returns (uint256) {
        return _tokenForTokensale().balanceOf(forAddress);
    }
    function _tokensToDistribute(uint256 amountTotalUSD, bool newInvestor) private view returns (uint256,uint256) {
        uint256 balanceLeavedOnThisContractProjectTokens = _balanceTokenForTokensale(address (this));/* if TAV < 500k, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 1%   if TAV >  $500k and TAV < $5M, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 3% if TAV >  $500k and TAV < $5M, balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens * 10% */
        if (_poolValuesUSDTotal.div(10 ** uint256(18)) < 500000) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(100);
        } else if (_poolValuesUSDTotal.div(10 ** uint256(18)) < 5000000) {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(30);
        } else {
            balanceLeavedOnThisContractProjectTokens = balanceLeavedOnThisContractProjectTokens.div(10);
        } /*  amountTotalUSD / TAV - his percent of TAV balanceLeavedOnThisContractProjectTokens * his percent of pool = amount of tokens to pay if (newInvestor) amount of tokens to pay = amount of tokens to pay * 1.1 _investorsReceivedMainToken[msg.sender][time] = amount of tokens to pay*/
        uint256 poolValuesUSDTotalInUSD = _poolValuesUSDTotal.div(10 ** uint256(18));
        uint256 percentOfTAV = amountTotalUSD.mul(10000).div(poolValuesUSDTotalInUSD);
        if (newInvestor) {
            return (balanceLeavedOnThisContractProjectTokens.mul(percentOfTAV).div(10000).mul(11).div(10),percentOfTAV);
        } else {
            return (balanceLeavedOnThisContractProjectTokens.mul(percentOfTAV).div(10000),percentOfTAV);
        }
    }
    function investorUsdValue(address pool,address investor) public view returns (uint256,bool) {
        uint256 amountTotalUSD;
        bool newInvestor = false;
        uint256 lenghtSender = IPool(pool).getDepositLength(investor);
        uint256 priceMainToUSDreturned;
        uint8 decimals;
        (priceMainToUSDreturned,decimals) = _oracleContract.getLatestPrice();
        for (uint256 i = 0; i < lenghtSender; i++) {
            newInvestor = false;
            uint256 amountWei;          // Amount of funds deposited
            uint256 time;            // Deposit time
            address investedToken; // address(0) for ETH/BNB
            (amountWei, time, , , , ) = IPool(pool).getDeposit(investor, i);
            (, , , , , investedToken) = IPool(pool).getDeposit(investor, i);
            uint256 timeToCompareWithNow = time + 4 weeks; // must hold at least 4 weeks
            if (now > timeToCompareWithNow) {// new investors hold more than 4 weeks
                if (now < time + 8 weeks) { // check if new investors hold less than 8 weeks
                    newInvestor = true;// new investor
                }
                if (investedToken != address(0)) {
                    amountTotalUSD += amountWei.div(10 ** uint256(18)); // invested in BUSD
                } else {
                    amountTotalUSD += amountWei.mul(priceMainToUSDreturned).div(10 ** uint256(decimals)).div(10 ** uint256(18)); // invested in BNB
                }
            }
        }
        return (amountTotalUSD,newInvestor);
    }
    function checkTokensForClaim(address pool,address investor) public view returns (uint256,uint256,uint256,bool) {
        uint256 tokensForClaim;
        uint256 amountTotalUSD;
        uint256 percentOfTAV;
        bool newInvestor = false;
        if (_investorsReceivedMainTokenLatestDate[investor] > now - 4 weeks) {
            return (tokensForClaim,amountTotalUSD,percentOfTAV,newInvestor);// already receive reward 4 weeks ago
        }
        (amountTotalUSD, newInvestor) = investorUsdValue(pool,investor);
        uint256 tokensToDistribute;
        (tokensToDistribute, percentOfTAV) = _tokensToDistribute(amountTotalUSD,newInvestor);
        return (tokensToDistribute,amountTotalUSD,percentOfTAV,newInvestor);
    }
    event ClaimFreeTokens(address pool,uint256 amount, address investor,bool result);
    function claimFreeTokens(address pool) public returns (bool) {
        uint256 tokensToPay;
        (tokensToPay,,,)= checkTokensForClaim(pool,msg.sender);
        bool result = false;
        if (tokensToPay > 0) {
            _tokenForTokensale().transfer(msg.sender, tokensToPay);
            _investorsReceivedMainTokenLatestDate[msg.sender] = now;
            result = true;
        }
        emit ClaimFreeTokens(pool,tokensToPay,msg.sender,result);
        return result;
    }

}

File 2 of 12 : TeamRole.sol
pragma solidity ^0.6.0;
import "./lib/Roles.sol";
contract TeamRole {
    using Roles for Roles.Role;
    event TeamAdded(address indexed account);
    event TeamRemoved(address indexed account);
    Roles.Role private _team;
    constructor () internal {
        _addTeam(msg.sender);
    }
    modifier onlyTeam() {
        require(isTeam(msg.sender), "TeamRole: caller does not have the Team role");
        _;
    }
    function isTeam(address account) public view returns (bool) {
        return _team.has(account);
    }
    function getTeamAddresses() public view returns (address[] memory) {
        return _team.accounts;
    }
    function addTeam(address account) public onlyTeam {
        _addTeam(account);
    }
    function renounceTeam() public {
        _removeTeam(msg.sender);
    }
    function _addTeam(address account) internal {
        _team.add(account);
        emit TeamAdded(account);
    }
    function _removeTeam(address account) internal {
        _team.remove(account);
        emit TeamRemoved(account);
    }
}

File 3 of 12 : Roles.sol
pragma solidity ^0.6.0;
library Roles {
    struct Role {
        address[] accounts;
        mapping (address => bool) bearer;
    }
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
        role.accounts.push(account);
    }
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        for (uint256 i; i < role.accounts.length; i++) {
            if (role.accounts[i] == account) {
                _removeIndexArray(i, role.accounts);
                break;
            }
        }
        role.bearer[account] = false;
    }
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
        for(uint256 i = index; i < array.length-1; i++) {
            array[i] = array[i+1];
        }
        array.pop();
    }
}

File 4 of 12 : IAssetsManageTeam.sol
pragma solidity ^0.6.0;
interface IAssetsManageTeam {
    function _depositToken(address pool, address team, address token, uint256 amount) external returns (bool);
    function _withdraw(address pool, address team, uint256 amount) external returns (bool);
    function _withdrawTokensToStartup(address pool,address token, address team, uint256 amount) external returns (bool);
    function _request(bool withdraw, address pool, address team, uint256 maxValue) external returns(bool);
    function _requestTokensWithdwawalFromStartup(address pool, address token, address team, uint256 maxValue) external returns(bool);
    function _approve(address pool, address team, address owner) external returns(bool);
    function _approveTokensWithdwawalFromStartup(address pool, address token, address team, address owner) external returns(bool);
    function _disapprove(address pool, address team, address owner) external returns(bool);
    function _lock(address pool, address team, address owner) external returns(bool);
    function _unlock(address pool, address team, address owner) external returns(bool);
    function addManager(address account) external;
    function getPerformedOperationsLength(address pool, address owner) external view returns(uint256 length);
    function getPerformedOperations(address pool, address owner, uint256 index) external view returns(address token, uint256 amountToken, uint256 withdraw, uint256 time);
    function getRequests(address pool) external view returns(address[] memory);
    function getApproval(address pool) external view returns(address[] memory);
    function getRequestTeamAddress(address pool, address team) external view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValue);
    function getApproveTeamAddress(address pool, address team) external view returns(bool lock, uint256 maxValueToken, uint256 madeValueToken, uint256 maxValue, uint256 madeValueE);
}

File 5 of 12 : ICreator.sol
pragma solidity ^0.6.0;
interface ICreator {
    function createPool(string calldata name, uint256 lockPeriod,uint256 depositFixedFee,uint256 referralDepositFee,uint256 anualPrecent,uint256 penaltyEarlyWithdraw,address superAdmin,address gPartner,address lPartner,address startupTeam) external returns (address);
}

File 6 of 12 : IERC20.sol
pragma solidity ^0.6.0;
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function decimals() external view returns (uint8);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 7 of 12 : IOracle.sol
pragma solidity ^0.6.0;
interface IOracle {
    function getLatestPrice() external view returns ( uint256,uint8);
    function getCustomPrice(address aggregator) external view returns (uint256,uint8);
}

File 8 of 12 : IPool.sol
pragma solidity ^0.6.0;
interface IPool {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleMemberCount(bytes32 role) external view returns (uint256);
    function getDeposit(address owner, uint256 index) external view returns(uint256 amount, uint256 time, uint256 lock_period, bool refund_authorize, uint256 amountWithdrawal, address investedToken);
    function getDepositLength(address owner) external view returns(uint256);
    function getMembersRole(bytes32 role) external view returns (address[] memory Accounts);
    function getInfoPool() external view returns(string memory name,bool isPublicPool, address token, uint256 locked);
    function getInfoPoolFees() external view returns(uint256 rate, uint256 depositFixedFee, uint256 referralDepositFee, uint256 anualPrecent, uint256 penaltyEarlyWithdraw, uint256 totalInvestLpartner, uint256 premiumFee);
    function getReferral(address lPartner) external view returns (address);
    function getPoolValues() external view returns(uint256 poolValueUSD, uint256 poolValue, string memory proofOfValue);
    function getPoolPairReserves() external view     returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, address token0, address token1, address weth,uint price0CumulativeLast,uint price1CumulativeLast);
    function _updatePool(string calldata name,bool isPublicPool, address token, uint256 locked, uint256 depositFixedFee, uint256 referralDepositFee, uint256 anualPrecent, uint256 penaltyEarlyWithdraw) external returns (bool);
    function _setRate(uint256 rate) external returns (bool);
    function _setTeamReward(uint256 teamReward) external returns (bool);
    function _setPoolValues(uint256 poolValueUSD,uint256 poolValue, string calldata proofOfValue) external returns (bool);
    function _depositPoolRegistry(address sender, uint256 amount, uint256 feesMulitpier) external returns (bool);
    function _depositTokenPoolRegistry(address payable sender, uint256 amount) external returns (bool);
    function _depositInvestmentInTokensToPool(address payable sender, uint256 amount, address token) external returns (bool);
    function _withdrawTeam(address payable sender, uint256 amount) external returns (bool);
    function _withdrawTokensToStartup(address payable sender,address token, uint256 amount) external returns (bool);
    function _returnsInTokensFromTeam(address payable sender,address token, uint256 amount) external returns (bool);
    function _activateDepositToPool() external returns (bool);
    function _disactivateDepositToPool() external returns (bool);
    function _setReferral(address sender, address lPartner, address referral) external returns (bool);
    function _approveWithdrawLpartner(address lPartner, uint256 index, uint256 amount, address investedToken) external returns (bool);
    function _withdrawLPartner(address payable sender) external returns (bool, uint256, address);
    function _withdrawSuperAdmin(address payable sender,address token, uint256 amount) external returns (bool);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
}

File 9 of 12 : IReturnInvestmentLpartner.sol
pragma solidity ^0.6.0;
interface IReturnInvestmentLpartner {
  function _request(address pool, address lPartner, uint256 index, uint256 amount, address token) external returns(bool);
  function _approve(address pool, address lPartner, address sender) external returns(bool);
  function _disapprove(address pool, address lPartner, address sender) external returns(bool);
  function getRequests(address pool) external view returns(address[] memory);
  function getRequestsLpartner(address pool, address lPartner) external view returns(uint256[] memory);
}

File 10 of 12 : IRoleModel.sol
pragma solidity ^0.6.0;
contract IRoleModel {
    bytes32 public constant SUPER_ADMIN_ROLE = keccak256("SUPER_ADMIN_ROLE");
    bytes32 public constant GENERAL_PARTNER_ROLE = keccak256("GENERAL_PARTNER_ROLE");
    bytes32 public constant LIMITED_PARTNER_ROLE = keccak256("LIMITED_PARTNER_ROLE");
    bytes32 public constant STARTUP_TEAM_ROLE = keccak256("STARTUP_TEAM_ROLE");
    bytes32 public constant POOL_REGISTRY = keccak256("POOL_REGISTRY");
    bytes32 public constant RETURN_INVESTMENT_LPARTNER = keccak256("RETURN_INVESTMENT_LPARTNER");
    bytes32 public constant ORACLE = keccak256("ORACLE");
    bytes32 public constant REFERER_ROLE = keccak256("REFERER_ROLE");
}

File 11 of 12 : SafeMath.sol
pragma solidity ^0.6.0;
library SafeMath {
     function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
         if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

File 12 of 12 : EnumerableSet.sol
pragma solidity ^0.6.0;
library EnumerableSet {
    struct Set {
        bytes32[] _values;
        address[] _collection;
        mapping (bytes32 => uint256) _indexes;
    }
    function _add(Set storage set, bytes32 value, address addressValue) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._collection.push(addressValue);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }
    function _remove(Set storage set, bytes32 value, address addressValue) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastvalue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based
            set._values.pop();
            delete set._indexes[value];
            for(uint256 i = 0; i < set._collection.length; i++) {
                if (set._collection[i] == addressValue) {
                    _removeIndexArray(i, set._collection);
                    break;
                }
            }
            return true;
        } else {
            return false;
        }
    }
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }
    function _collection(Set storage set) private view returns (address[] memory) {
        return set._collection;    
    }
    function _removeIndexArray(uint256 index, address[] storage array) internal virtual {
        for(uint256 i = index; i < array.length-1; i++) {
            array[i] = array[i+1];
        }
        array.pop();
    }
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }
    struct AddressSet {
        Set _inner;
    }
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(value)), value);
    }
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(value)), value);
    }
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(value)));
    }
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }
    function collection(AddressSet storage set) internal view returns (address[] memory) {
        return _collection(set._inner);
    }
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint256(_at(set._inner, index)));
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "byzantium",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"AddPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"lastRewardTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolValuesUSDTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceLeavedOnThisContractProjectTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTotalUSD","type":"uint256"},{"indexed":false,"internalType":"bool","name":"newInvestor","type":"bool"},{"indexed":false,"internalType":"uint256","name":"tokensToPay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolValuesUSDTotalInUSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentOfTAV","type":"uint256"}],"name":"ClaimFreeProjectTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"ClaimFreeTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"CreatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"DepositInvestmentInTokensToPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositToPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositTokenToPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReturnsFromStartupTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"ReturnsInTokensFromTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolValue","type":"uint256"},{"indexed":false,"internalType":"string","name":"proofOfValue","type":"string"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"SetPoolValues","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"lPartner","type":"address"},{"indexed":false,"internalType":"address","name":"referral","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"SetReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TeamRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"UpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"WithdrawInTokensToStartupTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"lPartner","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"WithdrawLPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawToStartupTeam","type":"event"},{"inputs":[],"name":"GENERAL_PARTNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIMITED_PARTNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_REGISTRY","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RETURN_INVESTMENT_LPARTNER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STARTUP_TEAM_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPER_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"activateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"}],"name":"addPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"approveReqStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"approveReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"approveTokensWithdwawalFromStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"investor","type":"address"}],"name":"checkTokensForClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"claimFreeTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"lockPeriod","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"anualPrecent","type":"uint256"},{"internalType":"uint256","name":"penaltyEarlyWithdraw","type":"uint256"},{"internalType":"address","name":"superAdmin","type":"address"},{"internalType":"address","name":"gPartner","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"startupTeam","type":"address"}],"name":"createPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"depositInvestmentInTokensToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"pool","type":"address"}],"name":"depositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositTokenToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disactivateDepositToPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"disapproveReqStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"disapproveReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"feesMulitpier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddrRequestsReturnInvesLpartner","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddressCreatorInvestPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getAddressesRolesPool","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getApprovalReqTeam","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"getApproveTeamAddress","outputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"internalType":"uint256","name":"madeValueToken","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"madeValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssetManageTeamContract","outputs":[{"internalType":"contract IAssetsManageTeam","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"}],"name":"getCustomPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDepositPool","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"lock_period","type":"uint256"},{"internalType":"bool","name":"refund_authorize","type":"bool"},{"internalType":"uint256","name":"amountWithdrawal","type":"uint256"},{"internalType":"uint256","name":"lenghtDeposit","type":"uint256"},{"internalType":"address","name":"investedToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getInfoPool","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isPublicPool","type":"bool"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"locked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getInfoPoolFees","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"anualPrecent","type":"uint256"},{"internalType":"uint256","name":"penaltyEarlyWithdraw","type":"uint256"},{"internalType":"uint256","name":"totalInvestLpartner","type":"uint256"},{"internalType":"uint256","name":"premiumFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getInvestedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleContract","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getPerformedOperationsTeamStartup","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"withdrawAmount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPairReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"uint256","name":"price0CumulativeLast","type":"uint256"},{"internalType":"uint256","name":"price1CumulativeLast","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolValues","outputs":[{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"},{"internalType":"uint256","name":"poolValuesTotal","type":"uint256"},{"internalType":"uint256","name":"poolValuesUSDTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"getReferral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"getRequestTeamAddress","outputs":[{"internalType":"bool","name":"lock","type":"bool"},{"internalType":"uint256","name":"maxValueToken","type":"uint256"},{"internalType":"uint256","name":"madeValueToken","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"madeValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"}],"name":"getRequestsReturnInvestLpartner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRequestsTeam","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReturnInvesmentLpartner","outputs":[{"internalType":"contract IReturnInvestmentLpartner","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getReturnedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTeamAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRoleInvestmentPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"investor","type":"address"}],"name":"investorUsdValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"lockStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"requestReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"withdraw","type":"bool"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"requestStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"maxValue","type":"uint256"}],"name":"requestTokensWithdwawalFromStartup","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"pool","type":"address"}],"name":"returnsFromStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"returnsInTokensFromTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRoleInvestmentPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creatorContract","type":"address"}],"name":"setAddressCreatorInvestPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAssetsManageTeam","name":"addrContract","type":"address"}],"name":"setAssetManageTeamContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IOracle","name":"_oracle","type":"address"}],"name":"setOracleContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolValueUSD","type":"uint256"},{"internalType":"uint256","name":"poolValue","type":"uint256"},{"internalType":"string","name":"proofOfValue","type":"string"}],"name":"setPoolValues","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setPriceToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"lPartner","type":"address"},{"internalType":"address","name":"referral","type":"address"}],"name":"setReferral","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IReturnInvestmentLpartner","name":"addrContract","type":"address"}],"name":"setReturnInvestmentLpartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"teamReward","type":"uint256"}],"name":"setTeamReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"team","type":"address"}],"name":"unlockStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"publicPool","type":"bool"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"locked","type":"uint256"},{"internalType":"uint256","name":"depositFixedFee","type":"uint256"},{"internalType":"uint256","name":"referralDepositFee","type":"uint256"},{"internalType":"uint256","name":"anualPrecent","type":"uint256"},{"internalType":"uint256","name":"penaltyEarlyWithdraw","type":"uint256"}],"name":"updatePool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawInTokensToStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"withdrawLPartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawSuperAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToStartupTeam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405262000018336401000000006200001e810204565b620001c1565b62000039600082640100000000620057056200007082021704565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b6200008582826401000000006200013b810204565b15620000f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a031660008181526001838101602090815260408320805460ff191683179055845491820185559382529290209091018054600160a060020a0319169091179055565b6000600160a060020a0382166200019e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062005db56022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b615be480620001d16000396000f3fe60806040526004361061041f5760003560e060020a900480637a3627ff11610222578063c1abd75711610127578063debce1e2116100af578063e7d9d5a91161007e578063e7d9d5a914611528578063e9ec6e0b1461158b578063f121a2fe14611652578063f6f8996b14611728578063fe070e9d1461175b5761041f565b8063debce1e214611447578063e283e5281461145c578063e3bbb565146114e0578063e72f7fa4146114f55761041f565b8063cfddbd85116100f6578063cfddbd8514611356578063d2a4671b14611389578063d67a249c146113bc578063d914cd4b146113ff578063d9a431b3146114325761041f565b8063c1abd757146112c0578063ca701d29146112d5578063cbc5906e14611308578063cc446eb21461131d5761041f565b806393f50200116101aa578063be12da6211610179578063be12da6214611081578063beeb7bde146110bc578063bf9d8cc3146110f5578063bfb885a9146111e8578063c159a3821461127f5761041f565b806393f5020014610f8057806396a3e1f414610fa6578063b463a75c14610fe1578063b4857253146110165761041f565b806389e52771116101f157806389e5277114610dab57806389fd4d3d14610dc05780638d09ce9314610e0e5780638e8b4c8514610e4957806392a7e39114610e8e5761041f565b80637a3627ff14610cc1578063816fb80114610cfc578063823a87da14610d35578063871f470d14610d705761041f565b80634460bdd61161032857806354b0d2a4116102b05780635d255e811161027f5780635d255e8114610bbc578063673a2a1f14610bef57806369a5976e14610c045780636cfad94d14610c4b5780637870b09614610c8e5761041f565b806354b0d2a414610b1a57806354d5543c14610b2f578063570833d314610b745780635ac8b00514610ba75761041f565b8063496ccd9b116102f7578063496ccd9b146109e457806349db9c9714610a175780634b5d042f14610a505780634f899d6414610aa45780635394efed14610ae75761041f565b80634460bdd61461091657806344a08b8c1461092b57806347bf5a711461095e5780634967148b146109a15761041f565b8063261fef02116103ab57806332fd30671161037a57806332fd3067146107f557806338013f021461083057806340a5a151146108455780634325252a146108ad5780634335ac30146108d35761041f565b8063261fef02146106a357806327ee24a0146106b85780632da0154c146106eb5780633070d515146107265761041f565b80631863681f116103f25780631863681f146105aa5780631a88df8a146105dd5780631cda4a8d1461060e57806322529fff1461063557806324851914146106705761041f565b806303889c7a1461042457806306ad92e91461047157806307225595146104e457806308fdaedd14610527575b600080fd5b34801561043057600080fd5b5061045d6004803603604081101561044757600080fd5b50600160a060020a038135169060200135611770565b604080519115158252519081900360200190f35b34801561047d57600080fd5b506104b46004803603606081101561049457600080fd5b50600160a060020a03813581169160208101359091169060400135611855565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b3480156104f057600080fd5b5061045d6004803603606081101561050757600080fd5b50600160a060020a03813581169160208101359160409091013516611921565b34801561053357600080fd5b5061055a6004803603602081101561054a57600080fd5b5035600160a060020a0316611a80565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561059657818101518382015260200161057e565b505050509050019250505060405180910390f35b3480156105b657600080fd5b5061055a600480360360208110156105cd57600080fd5b5035600160a060020a0316611bba565b3480156105e957600080fd5b506105f2611c26565b60408051600160a060020a039092168252519081900360200190f35b34801561061a57600080fd5b50610623611c35565b60408051918252519081900360200190f35b34801561064157600080fd5b506105f26004803603604081101561065857600080fd5b50600160a060020a0381358116916020013516611c6a565b34801561067c57600080fd5b5061045d6004803603602081101561069357600080fd5b5035600160a060020a0316611cf8565b3480156106af57600080fd5b50610623611d0a565b3480156106c457600080fd5b50610623600480360360208110156106db57600080fd5b5035600160a060020a0316611d3f565b3480156106f757600080fd5b5061055a6004803603604081101561070e57600080fd5b50600160a060020a0381358116916020013516611d5a565b34801561073257600080fd5b5061045d6004803603608081101561074957600080fd5b600160a060020a03823516916020810135916040820135919081019060808101606082013564010000000081111561078057600080fd5b82018360208201111561079257600080fd5b803590602001918460018302840111640100000000831117156107b457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e9f945050505050565b34801561080157600080fd5b5061045d6004803603604081101561081857600080fd5b50600160a060020a0381358116916020013516612307565b34801561083c57600080fd5b50610623612394565b34801561085157600080fd5b506108806004803603604081101561086857600080fd5b50600160a060020a03813581169160200135166123c9565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b61045d600480360360208110156108c357600080fd5b5035600160a060020a0316612497565b3480156108df57600080fd5b5061045d600480360360608110156108f657600080fd5b50600160a060020a038135811691602081013590911690604001356125f9565b34801561092257600080fd5b506106236126eb565b34801561093757600080fd5b5061045d6004803603602081101561094e57600080fd5b5035600160a060020a031661270e565b34801561096a57600080fd5b5061045d6004803603606081101561098157600080fd5b50600160a060020a038135811691602081013591604090910135166127c7565b3480156109ad57600080fd5b5061045d600480360360608110156109c457600080fd5b50600160a060020a03813581169160208101359091169060400135612c55565b3480156109f057600080fd5b5061045d60048036036020811015610a0757600080fd5b5035600160a060020a0316612cfb565b348015610a2357600080fd5b5061045d60048036036040811015610a3a57600080fd5b50600160a060020a038135169060200135612d69565b348015610a5c57600080fd5b50610a8b60048036036040811015610a7357600080fd5b50600160a060020a0381358116916020013516612e30565b6040805192835290151560208301528051918290030190f35b348015610ab057600080fd5b5061045d60048036036060811015610ac757600080fd5b50600160a060020a03813581169160208101359160409091013516613185565b348015610af357600080fd5b5061045d60048036036020811015610b0a57600080fd5b5035600160a060020a03166132c0565b348015610b2657600080fd5b506105f261332e565b348015610b3b57600080fd5b5061045d60048036036060811015610b5257600080fd5b50600160a060020a03813581169160208101358216916040909101351661333d565b348015610b8057600080fd5b5061045d60048036036020811015610b9757600080fd5b5035600160a060020a03166133be565b348015610bb357600080fd5b506106236134d6565b348015610bc857600080fd5b5061045d60048036036020811015610bdf57600080fd5b5035600160a060020a031661350b565b348015610bfb57600080fd5b5061055a613592565b348015610c1057600080fd5b5061045d60048036036080811015610c2757600080fd5b50600160a060020a03813581169160208101359160408201359160600135166135a3565b348015610c5757600080fd5b5061045d60048036036060811015610c6e57600080fd5b50600160a060020a03813581169160208101359091169060400135613661565b348015610c9a57600080fd5b5061062360048036036020811015610cb157600080fd5b5035600160a060020a03166136e1565b348015610ccd57600080fd5b5061045d60048036036040811015610ce457600080fd5b50600160a060020a0381358116916020013516613734565b348015610d0857600080fd5b5061045d60048036036040811015610d1f57600080fd5b50600160a060020a0381351690602001356137ad565b348015610d4157600080fd5b5061045d60048036036040811015610d5857600080fd5b50600160a060020a038135811691602001351661383f565b348015610d7c57600080fd5b5061088060048036036040811015610d9357600080fd5b50600160a060020a03813581169160200135166138ba565b348015610db757600080fd5b5061055a613934565b348015610dcc57600080fd5b50610df360048036036020811015610de357600080fd5b5035600160a060020a0316613998565b6040805192835260ff90911660208301528051918290030190f35b348015610e1a57600080fd5b5061045d60048036036040811015610e3157600080fd5b50600160a060020a0381358116916020013516613a3b565b348015610e5557600080fd5b5061045d60048036036060811015610e6c57600080fd5b50600160a060020a038135811691602081013582169160409091013516613ab6565b348015610e9a57600080fd5b5061045d6004803603610120811015610eb257600080fd5b600160a060020a038235169190810190604081016020820135640100000000811115610edd57600080fd5b820183602082011115610eef57600080fd5b80359060200191846001830284011164010000000083111715610f1157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505050803515159150600160a060020a036020820135169060408101359060608101359060808101359060a08101359060c00135613c9f565b61045d60048036036020811015610f9657600080fd5b5035600160a060020a0316613e59565b348015610fb257600080fd5b5061045d60048036036040811015610fc957600080fd5b50600160a060020a0381358116916020013516613fa7565b348015610fed57600080fd5b506110146004803603602081101561100457600080fd5b5035600160a060020a0316614020565b005b34801561102257600080fd5b506110496004803603602081101561103957600080fd5b5035600160a060020a0316614073565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561108d57600080fd5b5061045d600480360360408110156110a457600080fd5b50600160a060020a038135811691602001351661411c565b3480156110c857600080fd5b5061045d600480360360408110156110df57600080fd5b50600160a060020a038135169060200135614195565b34801561110157600080fd5b5061045d600480360361014081101561111957600080fd5b81019060208101813564010000000081111561113457600080fd5b82018360208201111561114657600080fd5b8035906020019184600183028401116401000000008311171561116857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602081013590604081013590606081013590608081013590600160a060020a0360a082013581169160c081013582169160e0820135811691610100013516614279565b3480156111f457600080fd5b5061121b6004803603602081101561120b57600080fd5b5035600160a060020a03166144a8565b604080516dffffffffffffffffffffffffffff998a16815297909816602088015263ffffffff90951686880152600160a060020a039384166060870152918316608086015290911660a084015260c083015260e08201529051908190036101000190f35b34801561128b57600080fd5b5061045d600480360360608110156112a257600080fd5b508035151590600160a060020a036020820135169060400135614562565b3480156112cc57600080fd5b506106236145e2565b3480156112e157600080fd5b50610623600480360360208110156112f857600080fd5b5035600160a060020a0316614617565b34801561131457600080fd5b50610623614632565b34801561132957600080fd5b5061055a6004803603604081101561134057600080fd5b50600160a060020a038135169060200135614667565b34801561136257600080fd5b5061045d6004803603602081101561137957600080fd5b5035600160a060020a03166146b0565b34801561139557600080fd5b5061045d600480360360208110156113ac57600080fd5b5035600160a060020a03166147cf565b3480156113c857600080fd5b5061045d600480360360608110156113df57600080fd5b50600160a060020a0381358116916020810135909116906040013561483d565b34801561140b57600080fd5b5061045d6004803603602081101561142257600080fd5b5035600160a060020a031661492f565b34801561143e57600080fd5b50611014614a4e565b34801561145357600080fd5b506105f2614a59565b34801561146857600080fd5b5061149f6004803603606081101561147f57600080fd5b50600160a060020a03813581169160208101359091169060400135614a68565b604080519788526020880196909652868601949094529115156060860152608085015260a0840152600160a060020a031660c0830152519081900360e00190f35b3480156114ec57600080fd5b506105f2614bc7565b34801561150157600080fd5b5061045d6004803603602081101561151857600080fd5b5035600160a060020a0316614bd6565b34801561153457600080fd5b506115636004803603604081101561154b57600080fd5b50600160a060020a0381358116916020013516614c44565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561159757600080fd5b506115be600480360360208110156115ae57600080fd5b5035600160a060020a0316614cba565b6040518086815260200185815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156116135781810151838201526020016115fb565b50505050905090810190601f1680156116405780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561165e57600080fd5b506116856004803603602081101561167557600080fd5b5035600160a060020a0316614e0f565b60405180806020018515151515815260200184600160a060020a0316600160a060020a03168152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156116ea5781810151838201526020016116d2565b50505050905090810190601f1680156117175780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561173457600080fd5b5061055a6004803603602081101561174b57600080fd5b5035600160a060020a0316614f60565b34801561176757600080fd5b50610623614fca565b604080517fe89ec45f000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600091600160a060020a0385169163e89ec45f9160448082019260209290919082900301818787803b1580156117db57600080fd5b505af11580156117ef573d6000803e3d6000fd5b505050506040513d602081101561180557600080fd5b505060408051600160a060020a03851681526020810184905281517fbae2fb69b5bc6dc5e0d54949e111f231a4581d02d4bf88d28a1d8457d5754223929181900390910190a15060015b92915050565b600354604080517fb95b78d3000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152604482018590529151600093849384938493919092169163b95b78d3916064808301926080929190829003018186803b1580156118d357600080fd5b505afa1580156118e7573d6000803e3d6000fd5b505050506040513d60808110156118fd57600080fd5b50805160208201516040830151606090930151919a90995091975095509350505050565b60408051600080516020615a9b8339815191528152815190819003601001812060e260020a632474521502825260048201523360248201529051600091600160a060020a038616916391d1485491604480820192602092909190829003018186803b15801561198f57600080fd5b505afa1580156119a3573d6000803e3d6000fd5b505050506040513d60208110156119b957600080fd5b50516119f95760405160e560020a62461bcd028152600401808060200182810382526029815260200180615abb6029913960400191505060405180910390fd5b83600160a060020a031663d547741f84846040518363ffffffff1660e060020a0281526004018083815260200182600160a060020a0316600160a060020a0316815260200192505050600060405180830381600087803b158015611a5c57600080fd5b505af1158015611a70573d6000803e3d6000fd5b50505050600190505b9392505050565b600354604080517f804e44f3000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151606093929092169163804e44f391602480820192600092909190829003018186803b158015611aea57600080fd5b505afa158015611afe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611b2757600080fd5b8101908080516040519392919084640100000000821115611b4757600080fd5b908301906020820185811115611b5c57600080fd5b8251866020820283011164010000000082111715611b7957600080fd5b82525081516020918201928201910280838360005b83811015611ba6578181015183820152602001611b8e565b505050509050016040525050509050919050565b60048054604080517f804e44f3000000000000000000000000000000000000000000000000000000008152600160a060020a038581169482019490945290516060939092169163804e44f391602480820192600092909190829003018186803b158015611aea57600080fd5b600254600160a060020a031690565b604080517f504f4f4c5f5245474953545259000000000000000000000000000000000000008152905190819003600d01902081565b600082600160a060020a0316633b0f0f2f836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b158015611cc557600080fd5b505afa158015611cd9573d6000803e3d6000fd5b505050506040513d6020811015611cef57600080fd5b50519392505050565b600061184f818363ffffffff614fff16565b604080517f52455455524e5f494e564553544d454e545f4c504152544e45520000000000008152905190819003601a01902081565b600160a060020a031660009081526009602052604090205490565b60048054604080517f39926c43000000000000000000000000000000000000000000000000000000008152600160a060020a038681169482019490945284841660248201529051606093909216916339926c4391604480820192600092909190829003018186803b158015611dce57600080fd5b505afa158015611de2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611e0b57600080fd5b8101908080516040519392919084640100000000821115611e2b57600080fd5b908301906020820185811115611e4057600080fd5b8251866020820283011164010000000082111715611e5d57600080fd5b82525081516020918201928201910280838360005b83811015611e8a578181015183820152602001611e72565b50505050905001604052505050905092915050565b60408051600080516020615a9b8339815191528152815190819003601001812060e260020a632474521502825260048201523360248201529051600091600160a060020a038716916391d1485491604480820192602092909190829003018186803b158015611f0d57600080fd5b505afa158015611f21573d6000803e3d6000fd5b505050506040513d6020811015611f3757600080fd5b5051611f775760405160e560020a62461bcd028152600401808060200182810382526031815260200180615a066031913960400191505060405180910390fd5b600160a060020a0385166000818152600b60209081526040808320879055600d8252808320889055517fbd8afbf8000000000000000000000000000000000000000000000000000000008152600481018881526024820188905260606044830190815287516064840152875194959463bd8afbf8948b948b948b94909390926084909201918501908083838d5b8381101561201c578181015183820152602001612004565b50505050905090810190601f1680156120495780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561206a57600080fd5b505af115801561207e573d6000803e3d6000fd5b505050506040513d602081101561209457600080fd5b5051905060008060606120a5613592565b905060005b8151811015612212576000808383815181106120c257fe5b6020026020010151600160a060020a031663f66fdcca6040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561210557600080fd5b505afa158015612119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052606081101561214257600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561216d57600080fd5b90830190602082018581111561218257600080fd5b825164010000000081118282018810171561219c57600080fd5b82525081516020918201929091019080838360005b838110156121c95781810151838201526020016121b1565b50505050905090810190601f1680156121f65780820380516001836020036101000a031916815260200191505b50604052505050979091019650949094019350506001016120aa565b50811561221f57600c8290555b821561222b57600e8390555b7fe86b9016c5bcdd538d2d47f4340a948ec6976098744ba3b1427b8d6aa5c2ed3489898989886040518086600160a060020a0316600160a060020a031681526020018581526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156122bc5781810151838201526020016122a4565b50505050905090810190601f1680156122e95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15091979650505050505050565b600354604080517fca2a33d9000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163ca2a33d99160648082019260209290919082900301818787803b15801561238057600080fd5b505af1158015611cd9573d6000803e3d6000fd5b604080517f4f5241434c4500000000000000000000000000000000000000000000000000008152905190819003600601902081565b600354604080517f40a5a151000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301529151600093849384938493849392909216916340a5a1519160448082019260a092909190829003018186803b15801561244357600080fd5b505afa158015612457573d6000803e3d6000fd5b505050506040513d60a081101561246d57600080fd5b508051602082015160408301516060840151608090940151929b919a509850919650945092505050565b604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152815190819003601101812060e260020a632474521502825260048201523360248201529051600091600160a060020a038416916391d1485491604480820192602092909190829003018186803b15801561251757600080fd5b505afa15801561252b573d6000803e3d6000fd5b505050506040513d602081101561254157600080fd5b50516125815760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615ae4602c913960400191505060405180910390fd5b604051600160a060020a038316903480156108fc02916000818181858888f193505050501580156125b6573d6000803e3d6000fd5b506040805133815234602082015281517fba644eb9dc8f6c5dd448aaa21f615b6fee77f1f7dfdf71645b4a8972f019877a929181900390910190a1506001919050565b604080517f594ce4c7000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a03848116602483015260448201849052915160009286169163594ce4c791606480830192602092919082900301818787803b15801561266b57600080fd5b505af115801561267f573d6000803e3d6000fd5b505050506040513d602081101561269557600080fd5b505060408051600160a060020a0380871682526020820185905285168183015290517f995954841d25c2ca3b83c9a3f665ce4bfa4ac1a81d4f9be29f275fad4e8d40269181900360600190a15060019392505050565b60408051600080516020615a9b8339815191528152905190819003601001902081565b600061271933611cf8565b6127575760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b81600160a060020a0316636176dd9f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561279557600080fd5b505af11580156127a9573d6000803e3d6000fd5b505050506040513d60208110156127bf57600080fd5b505192915050565b600080831161280a5760405160e560020a62461bcd02815260040180806020018281038252603e815260200180615b10603e913960400191505060405180910390fd5b6000809050600080905085600160a060020a031663fedf51e96040518163ffffffff1660e060020a02815260040160e06040518083038186803b15801561285057600080fd5b505afa158015612864573d6000803e3d6000fd5b505050506040513d60e081101561287a57600080fd5b50602081015160409091015190925090506000612895613934565b6001815181106128a157fe5b60200260200101519050600087600160a060020a0316633b0f0f2f336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561290657600080fd5b505afa15801561291a573d6000803e3d6000fd5b505050506040513d602081101561293057600080fd5b505190506000808061294d87878c87612948336136e1565b61506c565b80945081955082935050505088600160a060020a03166323b872dd338d846040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050602060405180830381600087803b1580156129d657600080fd5b505af11580156129ea573d6000803e3d6000fd5b505050506040513d6020811015612a0057600080fd5b5050604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038781166024830152604482018690529151918b16916323b872dd916064808201926020929091908290030181600087803b158015612a7457600080fd5b505af1158015612a88573d6000803e3d6000fd5b505050506040513d6020811015612a9e57600080fd5b50508115612b4557604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038681166024830152604482018590529151918b16916323b872dd916064808201926020929091908290030181600087803b158015612b1857600080fd5b505af1158015612b2c573d6000803e3d6000fd5b505050506040513d6020811015612b4257600080fd5b50505b604080517ff45efe67000000000000000000000000000000000000000000000000000000008152336004820152602481018c9052600160a060020a038b811660448301529151918d169163f45efe67916064808201926020929091908290030181600087803b158015612bb757600080fd5b505af1158015612bcb573d6000803e3d6000fd5b505050506040513d6020811015612be157600080fd5b5050600160a060020a03808a1660008181526009602090815260409182902080548f0190558151938f16845283018d905282810191909152517f912199453d9a77d92d283e62a861f39a6d554a984aefedbd122fdec8a3ceb8279181900360600190a15060019a9950505050505050505050565b604080517f7fdbc08b000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a038481166024830152604482018490529151600092861691637fdbc08b91606480830192602092919082900301818787803b158015612cc757600080fd5b505af1158015612cdb573d6000803e3d6000fd5b505050506040513d6020811015612cf157600080fd5b5051949350505050565b6000612d0633611cf8565b612d445760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b5060058054600160a060020a038316600160a060020a03199091161790556001919050565b6000612d7433611cf8565b612db25760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b82600160a060020a031663ff65f332836040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015612dfb57600080fd5b505af1158015612e0f573d6000803e3d6000fd5b505050506040513d6020811015612e2557600080fd5b506001949350505050565b60008060008060009050600086600160a060020a03166387ac828a876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b158015612e9557600080fd5b505afa158015612ea9573d6000803e3d6000fd5b505050506040513d6020811015612ebf57600080fd5b5051600554604080517f8e15f47300000000000000000000000000000000000000000000000000000000815281519394506000938493600160a060020a031692638e15f4739260048082019391829003018186803b158015612f2057600080fd5b505afa158015612f34573d6000803e3d6000fd5b505050506040513d6040811015612f4a57600080fd5b508051602090910151909250905060005b83811015613173576000945060008060008c600160a060020a0316632726b5068d866040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060c06040518083038186803b158015612fcd57600080fd5b505afa158015612fe1573d6000803e3d6000fd5b505050506040513d60c0811015612ff757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091925090915090505080935081945050508c600160a060020a0316632726b5068d866040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060c06040518083038186803b1580156130ad57600080fd5b505afa1580156130c1573d6000803e3d6000fd5b505050506040513d60c08110156130d757600080fd5b5060a0015190506224ea0082014281101561316357826249d400014210156130fe57600198505b600160a060020a0382161561312e5761312584670de0b6b3a764000063ffffffff6150f916565b8a019950613163565b61315e670de0b6b3a764000061315260ff8916600a0a81888c63ffffffff61513b16565b9063ffffffff6150f916565b8a0199505b505060019092019150612f5b9050565b509395509193505050505b9250929050565b60408051600080516020615a9b8339815191528152815190819003601001812060e260020a632474521502825260048201523360248201529051600091600160a060020a038616916391d1485491604480820192602092909190829003018186803b1580156131f357600080fd5b505afa158015613207573d6000803e3d6000fd5b505050506040513d602081101561321d57600080fd5b505161325d5760405160e560020a62461bcd028152600401808060200182810382526029815260200180615abb6029913960400191505060405180910390fd5b83600160a060020a0316632f2ff15d84846040518363ffffffff1660e060020a0281526004018083815260200182600160a060020a0316600160a060020a0316815260200192505050600060405180830381600087803b158015611a5c57600080fd5b60006132cb33611cf8565b6133095760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b5060048054600160a060020a038316600160a060020a03199091161790556001919050565b600354600160a060020a031690565b600354604080517f95e2e9c8000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015285811660248301528481166044830152336064830152915160009392909216916395e2e9c89160848082019260209290919082900301818787803b158015612cc757600080fd5b60008060008084600160a060020a031663d5c5e434336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050606060405180830381600087803b15801561341f57600080fd5b505af1158015613433573d6000803e3d6000fd5b505050506040513d606081101561344957600080fd5b50805160208201516040909201519094509092509050821561348457600160a060020a0381166000908152600a602052604090208054830190555b60408051600160a060020a03871681523360208201528415158183015290517f1e3e48260a5e7f8f8703b38012c2a629ef108129429301a85745e3a9e4120ec49181900360600190a150909392505050565b604080517f524546455245525f524f4c4500000000000000000000000000000000000000008152905190819003600c01902081565b600061351633611cf8565b6135545760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b81600160a060020a0316633049ea336040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561279557600080fd5b606061359e6006615197565b905090565b60048054604080517f6188e37b000000000000000000000000000000000000000000000000000000008152600160a060020a038881169482019490945233602482015260448101879052606481018690528484166084820152905160009390921691636188e37b9160a48082019260209290919082900301818787803b15801561362c57600080fd5b505af1158015613640573d6000803e3d6000fd5b505050506040513d602081101561365657600080fd5b505195945050505050565b600354604080517f573ca4a8000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152336044830152606482018590529151600093929092169163573ca4a89160848082019260209290919082900301818787803b158015612cc757600080fd5b6000806136ed836151a2565b9050620186a08115611a79576910f0cf064dd59200000061372b620186a061371f83613152878463ffffffff61513b16565b9063ffffffff61521816565b95945050505050565b600354604080517fc5c0291f000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163c5c0291f9160648082019260209290919082900301818787803b15801561238057600080fd5b60006137b833611cf8565b6137f65760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b82600160a060020a03166394707a95836040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b158015612dfb57600080fd5b60048054604080517fc5c0291f000000000000000000000000000000000000000000000000000000008152600160a060020a0386811694820194909452848416602482015233604482015290516000939092169163c5c0291f9160648082019260209290919082900301818787803b15801561238057600080fd5b600354604080517f871f470d000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152848116602483015291516000938493849384938493929092169163871f470d9160448082019260a092909190829003018186803b15801561244357600080fd5b60606000800180548060200260200160405190810160405280929190818152602001828054801561398e57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613970575b5050505050905090565b600554604080517f89fd4d3d000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485949216926389fd4d3d926024808301939192829003018186803b1580156139fe57600080fd5b505afa158015613a12573d6000803e3d6000fd5b505050506040513d6040811015613a2857600080fd5b5080516020909101519092509050915091565b60048054604080517fca2a33d9000000000000000000000000000000000000000000000000000000008152600160a060020a0386811694820194909452848416602482015233604482015290516000939092169163ca2a33d99160648082019260209290919082900301818787803b15801561238057600080fd5b604080517f4c494d495445445f504152544e45525f524f4c450000000000000000000000008152815190819003601401812060e260020a63247452150282526004820152600160a060020a03848116602483015291516000928616916391d14854916044808301926020929190829003018186803b158015613b3757600080fd5b505afa158015613b4b573d6000803e3d6000fd5b505050506040513d6020811015613b6157600080fd5b5051613ba15760405160e560020a62461bcd028152600401808060200182810382526035815260200180615b4e6035913960400191505060405180910390fd5b604080517fcb4ff7f2000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0385811660248301528481166044830152915160009287169163cb4ff7f291606480830192602092919082900301818787803b158015613c1457600080fd5b505af1158015613c28573d6000803e3d6000fd5b505050506040513d6020811015613c3e57600080fd5b505160408051600160a060020a0380891682528088166020830152861681830152821515606082015290519192507f304fcfd9500761e683ae3dba7a900542837bb3b1988ae8d48f0aa8551d1dc9e1919081900360800190a1949350505050565b6000613caa33611cf8565b613ce85760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b89600160a060020a031663b06fd88f8a8a8a8a8a8a8a8a6040518963ffffffff1660e060020a02815260040180806020018915151515815260200188600160a060020a0316600160a060020a0316815260200187815260200186815260200185815260200184815260200183815260200182810382528a818151815260200191508051906020019080838360005b83811015613d8e578181015183820152602001613d76565b50505050905090810190601f168015613dbb5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b158015613de157600080fd5b505af1158015613df5573d6000803e3d6000fd5b505050506040513d6020811015613e0b57600080fd5b505060408051600160a060020a038c16815290517f4349687687e69ab0479266619127f66a1d429752cd8accfef157633fa10875d29181900360200190a15060019998505050505050505050565b6040516000903490600160a060020a0384169082156108fc0290839085818181858888f19350505050158015613e93573d6000803e3d6000fd5b5082600160a060020a031663d69df4c73383613eae336136e1565b6040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a031681526020018381526020018281526020019350505050602060405180830381600087803b158015613f0757600080fd5b505af1158015613f1b573d6000803e3d6000fd5b505050506040513d6020811015613f3157600080fd5b505060008052600960209081527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054830190556040805133815291820183905280517fccda644458e53e06b059994f159fd62961b002ab5cdea18e954fe6729b828e8e9281900390910190a150600192915050565b600354604080517fd85d2b13000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301523360448301529151600093929092169163d85d2b139160648082019260209290919082900301818787803b15801561238057600080fd5b61402933611cf8565b6140675760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b61407081615275565b50565b600080600080600080600087600160a060020a031663fedf51e96040518163ffffffff1660e060020a02815260040160e06040518083038186803b1580156140ba57600080fd5b505afa1580156140ce573d6000803e3d6000fd5b505050506040513d60e08110156140e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949e939d50919b50995097509195509350915050565b600354604080517f98545b1e000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528481166024830152336044830152915160009392909216916398545b1e9160648082019260209290919082900301818787803b15801561238057600080fd5b604080517f085a73f5000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600091600160a060020a0385169163085a73f59160448082019260209290919082900301818787803b15801561420057600080fd5b505af1158015614214573d6000803e3d6000fd5b505050506040513d602081101561422a57600080fd5b505060408051600160a060020a03851681526020810184905281517fadb378e8b6cdbcedabcb11d89f5c3d01a5681021c970f30c5b5f698496a56cf6929181900390910190a150600192915050565b600061428433611cf8565b6142c25760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b6000600260009054906101000a9004600160a060020a03169050600081600160a060020a031663bf9d8cc38e8e8e8e8e8e8e8e8e8e6040518b63ffffffff1660e060020a02815260040180806020018b81526020018a815260200189815260200188815260200187815260200186600160a060020a0316600160a060020a0316815260200185600160a060020a0316600160a060020a0316815260200184600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a0316815260200182810382528c818151815260200191508051906020019080838360005b838110156143c45781810151838201526020016143ac565b50505050905090810190601f1680156143f15780820380516001836020036101000a031916815260200191505b509b505050505050505050505050602060405180830381600087803b15801561441957600080fd5b505af115801561442d573d6000803e3d6000fd5b505050506040513d602081101561444357600080fd5b5051905061445860068263ffffffff6152bd16565b5060408051600160a060020a038316815290517f69c0bed0cfe2481daba8100e8d026afc0310449557d52e860717cab3f70fd8ab9181900360200190a15060019c9b505050505050505050505050565b60008060008060008060008088600160a060020a0316632109f77a6040518163ffffffff1660e060020a0281526004016101006040518083038186803b1580156144f157600080fd5b505afa158015614505573d6000803e3d6000fd5b505050506040513d61010081101561451c57600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959e50939c50919a509850965094509092509050919395975091939597565b600354604080517f0e3158f30000000000000000000000000000000000000000000000000000000081528515156004820152600160a060020a0385811660248301523360448301526064820185905291516000939290921691630e3158f39160848082019260209290919082900301818787803b158015612cc757600080fd5b604080517f47454e4552414c5f504152544e45525f524f4c450000000000000000000000008152905190819003601401902081565b600160a060020a03166000908152600a602052604090205490565b604080517f535441525455505f5445414d5f524f4c450000000000000000000000000000008152905190819003601101902081565b606082600160a060020a0316639cf6cc70836040518263ffffffff1660e060020a0281526004018082815260200191505060006040518083038186803b158015611dce57600080fd5b6000806146bd8333614c44565b5091925060009150508115614778576146d46152d3565b600160a060020a031663a9059cbb33846040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561473657600080fd5b505af115801561474a573d6000803e3d6000fd5b505050506040513d602081101561476057600080fd5b5050336000908152600f602052604090204290555060015b60408051600160a060020a0386168152602081018490523381830152821515606082015290517f7d2c1b258322d5feaaca4a7c38e49e543c8df10e64f0369863ef8396e02073bf9181900360800190a19392505050565b60006147da33611cf8565b6148185760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b5060028054600160a060020a038316600160a060020a03199091161790556001919050565b604080517f16fb3c15000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a0384811660248301526044820184905291516000928616916316fb3c1591606480830192602092919082900301818787803b1580156148af57600080fd5b505af11580156148c3573d6000803e3d6000fd5b505050506040513d60208110156148d957600080fd5b505060408051600160a060020a0380871682526020820185905285168183015290517fca237fd96ca9deccc8ce645fc6655847954966129d27c7964bbcce807bd622729181900360600190a15060019392505050565b600061493a33611cf8565b6149785760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b61498960068363ffffffff6152bd16565b50600354604080517f2d06177a000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015291519190921691632d06177a91602480830192600092919082900301818387803b1580156149f157600080fd5b505af1158015614a05573d6000803e3d6000fd5b505060408051600160a060020a038616815290517f8c82d670bc9247c2cfb6964089bc9cff0255f9caade6fbc74a13368083e554669350908190036020019150a1506001919050565b614a5733615424565b565b600454600160a060020a031690565b600080600080600080600089600160a060020a0316632726b5068a8a6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a031681526020018281526020019250505060c06040518083038186803b158015614ad457600080fd5b505afa158015614ae8573d6000803e3d6000fd5b505050506040513d60c0811015614afe57600080fd5b5080516020808301516040808501516060860151608087015160a09097015183517f87ac828a0000000000000000000000000000000000000000000000000000000081523360048201529351969e50939c50909a5098509396509350600092600160a060020a038e16926387ac828a92602480840193919291829003018186803b158015614b8b57600080fd5b505afa158015614b9f573d6000803e3d6000fd5b505050506040513d6020811015614bb557600080fd5b50519250509397509397509397909450565b600554600160a060020a031690565b6000614be133611cf8565b614c1f5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180615b83602c913960400191505060405180910390fd5b5060038054600160a060020a038316600160a060020a03199091161790556001919050565b600160a060020a0381166000908152600f602052604081205481908190819081908190819081906224e9ff1942011015614c875792965090945092509050614cb1565b614c918a8a612e30565b90935090506000614ca2848361546c565b90995093975092955093505050505b92959194509250565b600080606060008085600160a060020a031663f66fdcca6040518163ffffffff1660e060020a02815260040160006040518083038186803b158015614cfe57600080fd5b505afa158015614d12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526060811015614d3b57600080fd5b81516020830151604080850180519151939592948301929184640100000000821115614d6657600080fd5b908301906020820185811115614d7b57600080fd5b8251640100000000811182820188101715614d9557600080fd5b82525081516020918201929091019080838360005b83811015614dc2578181015183820152602001614daa565b50505050905090810190601f168015614def5780820380516001836020036101000a031916815260200191505b506040525050600c54600e54949b939a5091985090965091945092505050565b6060600080600084600160a060020a031663d2f0d2a86040518163ffffffff1660e060020a02815260040160006040518083038186803b158015614e5257600080fd5b505afa158015614e66573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526080811015614e8f57600080fd5b8101908080516040519392919084640100000000821115614eaf57600080fd5b908301906020820185811115614ec457600080fd5b8251640100000000811182820188101715614ede57600080fd5b82525081516020918201929091019080838360005b83811015614f0b578181015183820152602001614ef3565b50505050905090810190601f168015614f385780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060909201519498509650945091925050509193509193565b600354604080517fda076a87000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151606093929092169163da076a8791602480820192600092909190829003018186803b158015611aea57600080fd5b604080517f4c494d495445445f504152544e45525f524f4c450000000000000000000000008152905190819003601401902081565b6000600160a060020a0382166150495760405160e560020a62461bcd028152600401808060200182810382526022815260200180615a796022913960400191505060405180910390fd5b50600160a060020a03166000908152600191909101602052604090205460ff1690565b6000806000806150a1620186a06131528761509560646131528f8e61513b90919063ffffffff16565b9063ffffffff61513b16565b905060006150bb620186a0613152886150958b8d8f615586565b905060006150cf898463ffffffff6155b816565b905081156150ea576150e7818363ffffffff6155b816565b90505b9a919950975095505050505050565b6000611a7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506155fa565b60008261514a5750600061184f565b8282028284828161515757fe5b0414611a795760405160e560020a62461bcd028152600401808060200182810382526021815260200180615a586021913960400191505060405180910390fd5b606061184f8261569f565b60006151ac6152d3565b600160a060020a03166370a08231836040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561520457600080fd5b505afa1580156127a9573d6000803e3d6000fd5b600082820183811015611a79576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b61528660008263ffffffff61570516565b604051600160a060020a038216907f3f5f1db80208f0d453083a86e16909cecc1e95e2618d5d927c93ace22b8200fc90600090a250565b6000611a7983600160a060020a038416846157ad565b6000806152de613592565b6000815181106152ea57fe5b6020026020010151600160a060020a031663d2f0d2a86040518163ffffffff1660e060020a02815260040160006040518083038186803b15801561532d57600080fd5b505afa158015615341573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561536a57600080fd5b810190808051604051939291908464010000000082111561538a57600080fd5b90830190602082018581111561539f57600080fd5b82516401000000008111828201881017156153b957600080fd5b82525081516020918201929091019080838360005b838110156153e65781810151838201526020016153ce565b50505050905090810190601f1680156154135780820380516001836020036101000a031916815260200191505b506040908152015194505050505090565b61543560008263ffffffff61582216565b604051600160a060020a038216907f26b6063d78aefcf96f02ff06bc9822b5a623278253add7fffa5fb453db39981090600090a250565b600080600061547a306151a2565b600e549091506207a1209061549d90670de0b6b3a764000063ffffffff6150f916565b10156154bb576154b481606463ffffffff6150f916565b9050615506565b600e54624c4b40906154db90670de0b6b3a764000063ffffffff6150f916565b10156154f2576154b481601e63ffffffff6150f916565b61550381600a63ffffffff6150f916565b90505b600e5460009061552490670de0b6b3a764000063ffffffff6150f916565b9050600061553e826131528961271063ffffffff61513b16565b9050851561557057615564600a613152600b61509561271083898863ffffffff61513b16565b9450925061317e915050565b615564612710613152858463ffffffff61513b16565b600080600160a060020a038516156155b0576155ad6064613152868663ffffffff61513b16565b90505b949350505050565b6000611a7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506158e6565b600081836156895760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561564e578181015183820152602001615636565b50505050905090810190601f16801561567b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161569557fe5b0495945050505050565b6060816001018054806020026020016040519081016040528092919081815260200182805480156156f957602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116156db575b50505050509050919050565b61570f8282614fff565b15615764576040805160e560020a62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a031660008181526001838101602090815260408320805460ff191683179055845491820185559382529290209091018054600160a060020a0319169091179055565b60006157b98484615943565b61581a57508254600180820185556000858152602080822090930185905581860180548084018255908252838220018054600160a060020a031916600160a060020a0386161790558554858252600287019093526040902091909155611a79565b506000611a79565b61582c8282614fff565b61586a5760405160e560020a62461bcd028152600401808060200182810382526021815260200180615a376021913960400191505060405180910390fd5b60005b82548110156158c15781600160a060020a031683600001828154811061588f57fe5b600091825260209091200154600160a060020a031614156158b9576158b4818461595b565b6158c1565b60010161586d565b50600160a060020a03166000908152600190910160205260409020805460ff19169055565b6000818484111561593b5760405160e560020a62461bcd02815260206004820181815283516024840152835190928392604490910191908501908083836000831561564e578181015183820152602001615636565b505050900390565b60009081526002919091016020526040902054151590565b815b8154600019018110156159d45781816001018154811061597957fe5b9060005260206000200160009054906101000a9004600160a060020a03168282815481106159a357fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560010161595d565b50808054806159df57fe5b60008281526020902081016000199081018054600160a060020a0319169055019055505056fe506f6f6c52656769737472793a2073656e64657220686173206e6f20726f6c652053555045525f41444d494e5f524f4c45526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737353555045525f41444d494e5f524f4c4500000000000000000000000000000000506f6f6c52656769737472793a2073656e64657220686173206e6f20726f6c652047506172746e6572506f6f6c52656769737472793a2073656e64657220686173206e6f20726f6c65205465616d537461727475706465706f736974496e766573746d656e74496e546f6b656e73546f506f6f6c3a20746865206e756d626572206f662073656e7420746f6b656e2069732030506f6f6c52656769737472793a20706172616d65746572204c706172746e657220686173206e6f20726f6c65204c506172746e65725465616d526f6c653a2063616c6c657220646f6573206e6f74206861766520746865205465616d20726f6c65a26469706673582212208f2f0fd5639d4bfc0c0529f186daa791e547877952141938494aa859a09fabf364736f6c63430006020033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading