Contract 0x87b1acce6a1958e522233a737313c086551a5c76 5

 

Contract Overview

Balance:
18,718.903679975035082058 BNB

BNB Value:
$9,448,366.63 (@ $504.75/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x86f7b79513ca62ca9e68d0fafcc8b7a04d1aa0144b78ad9c18f9fb3e0859c61eApprove119522222021-10-21 1:46:431 min ago0x98c489539067bcab9e6246583b562dd214d50c7f IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000221595
0x38adc20d5ce123e97c4cc2ca55a345726f0904b17c991cf40c416384826c817cDeposit119514502021-10-21 1:08:0240 mins ago0xd2d4b8f375c6796e27e6fe077c216939ce9f9aa8 IN  0x87b1acce6a1958e522233a737313c086551a5c760.01 BNB0.000533355
0x7fdb258291111af9e368b21613e976ce711257bd9418507c18b3bb27be75d890Withdraw119512312021-10-21 0:57:0551 mins ago0x196bfb6b1c6dca5f62120628052885f47ea98254 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845565
0xd04b3f08e511416d235d861ad970bed3163fe82543b7bbde169715ac2d57fad8Deposit119509022021-10-21 0:40:181 hr 7 mins ago0x90bdafd0105f046d8e93c6965968452dfa7737f5 IN  0x87b1acce6a1958e522233a737313c086551a5c760.003413581 BNB0.000533355
0xd201d2ffbe73c74a79733c7a4ac21af87c424428ca14eaf86dec5c095315fa1fWithdraw119503262021-10-21 0:10:351 hr 37 mins ago0xc42d122c8ef2562873804ab0dc6ce3cba5283523 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845565
0x9816270900f3087213296227c01caec65a1c42d352a716a7d051db2608c9f1a2Approve119500162021-10-20 23:55:051 hr 53 mins ago0xc42d122c8ef2562873804ab0dc6ce3cba5283523 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000221355
0x9db7585fa26638854aed12e5ed5ba8043e07ffba19be1964d8e537724fcb2a6aDeposit119499752021-10-20 23:53:021 hr 55 mins ago0xc42d122c8ef2562873804ab0dc6ce3cba5283523 IN  0x87b1acce6a1958e522233a737313c086551a5c760.46 BNB0.000533355
0xb661c4177cf35564a2b03beabea83da58214eccea5a2db0718e4cda362b1faa7Withdraw119495532021-10-20 23:31:562 hrs 16 mins ago0xa6d0a8c5526302bfe6ec0339546f65c88370dfe3 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845505
0xca56b1a6c1a1e3664ab8184db663268bdc460eec246acfde50f8082059a453d2Withdraw119492462021-10-20 23:16:352 hrs 31 mins ago0x7e4d2cf3d66e77ef51252c4ece901844ed27edce IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845565
0x29a01a0452d6a6cbb4d21882aab6d540eb8d12d51cbeec584c9f9e0fcc1cc8cdApprove119481912021-10-20 22:23:383 hrs 24 mins ago0xcfea53b071c496db73d4f91f01ec8f896329c9b9 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000221415
0x47d5240bcbc40705d1d337b9e6eab8ec766d4225dde46930ffcf292a474fa1b7Deposit119481882021-10-20 22:23:293 hrs 24 mins ago0xcfea53b071c496db73d4f91f01ec8f896329c9b9 IN  0x87b1acce6a1958e522233a737313c086551a5c760.1 BNB0.000608355
0x0843bea98910c8db3450906c639dafccaaa0b4d3fbb2fdec0f6f99d1127d780bApprove119475662021-10-20 21:52:183 hrs 55 mins ago0x9f786dd6b5d510aa8804bd83733734ac45167c46 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.00007291
0x5341df15bba0afbfabafaa823b43a2dbb161acf5f31ab4a11427176e6e0c47d2Approve119466682021-10-20 21:07:224 hrs 40 mins ago0x7aa74183b5d6d8d9e42664c4642313fe3296ffa4 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000221595
0x4acff83910d8e7590172ba039648e7abc7a560ef37b478c3d844be22ac4b9d76Withdraw119465982021-10-20 21:03:524 hrs 44 mins ago0xd2405faecda2093ed8d323dddd5343d33565a67a IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845565
0xdf2797f589a3e1891d9d87a4d04b47c950bb19cf22b3968a99f10247551060a6Deposit119465652021-10-20 21:02:134 hrs 46 mins ago0x7aa74183b5d6d8d9e42664c4642313fe3296ffa4 IN  0x87b1acce6a1958e522233a737313c086551a5c760.1 BNB0.000608355
0x7ab484789695f988b3c8d014d158d7c0a25a3895f565d571f31b2ab1a749a3b8Withdraw119461682021-10-20 20:42:225 hrs 5 mins ago0x2abf629737762d75e1760cc9a1914c8ee7952736 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845445
0x71d2ed8c31dd5e4b974105e38fa32df3a8be7652115d6929d248bc34a6847cfeApprove119452332021-10-20 19:55:215 hrs 52 mins ago0xd2405faecda2093ed8d323dddd5343d33565a67a IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000221415
0x36b3e9cc9345fc01d2723cd4ec95ce71f7f8547a4dc7a65b2527dbb0ebb7ab84Deposit119451552021-10-20 19:51:275 hrs 56 mins ago0xd2405faecda2093ed8d323dddd5343d33565a67a IN  0x87b1acce6a1958e522233a737313c086551a5c760.2 BNB0.000608355
0x9d93336c040861c0ad69a6aa875d2fe70e87ca1cc7adbebe6a3e5fb4c0b9cd40Deposit119442582021-10-20 19:05:106 hrs 43 mins ago0x2ccc1b1d98d3cc6ae1b925626635b35266d4e96a IN  0x87b1acce6a1958e522233a737313c086551a5c761.65 BNB0.000640026
0xc19b7eb19d5194a951faad2de525510116045cf298e9c424851cde0ae60d9b24Approve119440292021-10-20 18:52:296 hrs 55 mins ago0x472e441b66f081ad0ef9f81e6808535f038f44f8 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000221595
0x57d457143b503e9de85edb8d35a21e524203247efb273a33130fda54ccf20e95Withdraw119432032021-10-20 18:11:117 hrs 37 mins ago0x099fc7f1a9bb5ce6e15ba5905975949abf7fa75c IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845565
0xefc65976787610cafbb24d9edc8200aa69d49435af0a349955ac672ff1eb42fcWithdraw119431392021-10-20 18:07:597 hrs 40 mins ago0x31088faff89088a15be935e8a8fb6fec891c08ef IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845505
0x7eb3a3ceb2701d6abd16af409d150c7d73a1ea4f0ebb4508e2f66472cac3d8aaDeposit119430532021-10-20 18:03:417 hrs 44 mins ago0x81e24a68ba69fe9d6c5a05239ee801da3e122517 IN  0x87b1acce6a1958e522233a737313c086551a5c760.2 BNB0.000608355
0x3b4ed73b193f5cd2de8f006c332d8786a5cfd3347d2d17081fb099ffbd4b3449Withdraw119421292021-10-20 17:16:258 hrs 31 mins ago0x134ef8ff7a8a6636a5bdf884f0860f0bf013bd25 IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845505
0xc7e06bb3c89c594391a94c3aff72eb6f6cd6886e91dc6ed83be2dc5a8b1bf4eaWithdraw119418772021-10-20 17:03:478 hrs 44 mins ago0xa36fea1da70c96c8827ec0d1bfe331289dfe812f IN  0x87b1acce6a1958e522233a737313c086551a5c760 BNB0.000845565
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1e913fb3c270595f51e0a4f8c4700912cc49b48042aef751fb461c17d5b81d2a119522222021-10-21 1:46:431 min ago 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7 0x87b1acce6a1958e522233a737313c086551a5c760.00465852 BNB
0xa8839b6dbfe449704a7fc3dd2078f5950dac09d74c37a3829211d7615b010fba119522172021-10-21 1:46:281 min ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc70.025058182119187266 BNB
0xa8839b6dbfe449704a7fc3dd2078f5950dac09d74c37a3829211d7615b010fba119522172021-10-21 1:46:281 min ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc712.058223211761530314 BNB
0xe8c9631cf7c3c9084d06ce6470d1c21615c61f26216c7cd8a7bfbbcdeba96678119522142021-10-21 1:46:191 min ago 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7 0x87b1acce6a1958e522233a737313c086551a5c760.1 BNB
0x75918a7c265f69b796e065ff93b7f175291f5d717eb2ec8bdab92d02da5a0718119521832021-10-21 1:44:463 mins ago 0xa3d522c151ad654b36bdfe7a69d0c405193a22f9 0x87b1acce6a1958e522233a737313c086551a5c760.019 BNB
0x41c0f784d468f1a9d44e7814462634dd58dbb7a4193262b6b6a16467d3d2c3d8119521732021-10-21 1:44:164 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc70.61150412183380113 BNB
0x8556559189a3c5d08d493ab330a1decbb8212b07e7b90be692450db07fe6158e119521622021-10-21 1:43:434 mins ago 0x958f7322dad103ca64ee7914ade761bdebbb7656 0x87b1acce6a1958e522233a737313c086551a5c760.02 BNB
0x495dd159f7c22b0a296d21c0e3053520b1d3865dde3ce28aeb7384629d8485d1119521472021-10-21 1:42:585 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0xfd5a48d542aea1b1fd57d80818b1a6922c4c9f690.017922760216154945 BNB
0x4e3ec7f868be3038a2e178f7da7f9144e131fb599bcc404c964f573e64d6acd0119521352021-10-21 1:42:225 mins ago 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7 0x87b1acce6a1958e522233a737313c086551a5c761.5 BNB
0x687e030d3a125b3a17c6809daba7eefb20980cd56b17a4598bbf1bfbac354168119520742021-10-21 1:39:198 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc70.058362508403540271 BNB
0xdd07b9c6454d19e1806797b6623333861933cef9b12269aa3956fc80a6e8d500119520482021-10-21 1:38:0110 mins ago 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7 0x87b1acce6a1958e522233a737313c086551a5c760.00304018 BNB
0x13c66698b355e3f67201e8311cf67014689569023d0bab479da6e7f2b58895ea119520212021-10-21 1:36:4011 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x6898c97d7fd26debdcbc79602a26dfad8ca595640.98443323221440666 BNB
0xd701e73287bbf449266e164f811a80eea1feec3c3b6d69d31f705f527484ccdc119520062021-10-21 1:35:5512 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x6898c97d7fd26debdcbc79602a26dfad8ca595640.984548394661811651 BNB
0x567ef65e9ff9b954bdf31e1ee1c530cab4311c086c9d2f048148c472b910ac5d119520002021-10-21 1:35:3712 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x6898c97d7fd26debdcbc79602a26dfad8ca595642.027856652261613253 BNB
0x59b4e0c1d24cedae9b0a8ad22d58741fca0183c21b419302c32c5fafefdbfd80119519502021-10-21 1:33:0215 mins ago 0xa3d522c151ad654b36bdfe7a69d0c405193a22f9 0x87b1acce6a1958e522233a737313c086551a5c760.0363 BNB
0x3c383dde0d22fe49d0c3fffc328cd107043226012cd932a2107c44dafef1af30119519162021-10-21 1:31:2016 mins ago 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7 0x87b1acce6a1958e522233a737313c086551a5c760.07446207 BNB
0x0c25086db98dd210e8d72f9c34774e91e69ba93ac11fa033a4811f575e2a5043119518512021-10-21 1:28:0520 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc72.118858113811886059 BNB
0x7218aefa270b988a66f6ae192b27323f7f2dea847a55ee511834523e9f9f4185119517912021-10-21 1:25:0523 mins ago 0xa3d522c151ad654b36bdfe7a69d0c405193a22f9 0x87b1acce6a1958e522233a737313c086551a5c760.02 BNB
0x092b56b21fa7b09d34580a611928ccd58cb5ae67e5fe1ec7a25f00bf8b36d0af119517512021-10-21 1:23:0525 mins ago 0x818e2013dd7d9bf4547aaabf6b617c1262578bc7 0x87b1acce6a1958e522233a737313c086551a5c760.03966523 BNB
0xe00777e1c302c74a08ae6c635493fcb157dfcb168e933fef6486215de0130f4f119517072021-10-21 1:20:5327 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0xfd5a48d542aea1b1fd57d80818b1a6922c4c9f690.002962363675778221 BNB
0xb726512e966b255131aadfabd30ed33a5efeb35bb08f9207d1fcb0c1e65ca02c119516912021-10-21 1:20:0528 mins ago 0xe6e35aa2a3aec259821b8555fda71bf778f39a06 0x87b1acce6a1958e522233a737313c086551a5c760.000237957773678636 BNB
0x5f05a421de525592f9df2dbf73ad0e1ca70b048e7ae1494162e50a8d91ead0aa119516862021-10-21 1:19:5028 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc70.144208747120551185 BNB
0x12df7672974392936e27c34679bdfa4cc65f3e5289eb675ed08ffac354c85a9c119516582021-10-21 1:18:2629 mins ago 0xe6e35aa2a3aec259821b8555fda71bf778f39a06 0x87b1acce6a1958e522233a737313c086551a5c760.22 BNB
0xdf0ec1ff202b3003c35ce3a08da78e8377b62f1c92cd10c386942a106fa396b8119516452021-10-21 1:17:4730 mins ago 0x87b1acce6a1958e522233a737313c086551a5c76 0x818e2013dd7d9bf4547aaabf6b617c1262578bc72.512218271014871248 BNB
0x7dcfd01723e8633df8b6a88299dad5acdcc0b8ed7c1b60cd952622a79dc6fb8d119515962021-10-21 1:15:2032 mins ago 0xa3d522c151ad654b36bdfe7a69d0c405193a22f9 0x87b1acce6a1958e522233a737313c086551a5c760.21 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
fBNB

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-02-28
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.1;
library EnumerableSet {
    // To implement this library for multiple types with as little code
    // repetition as possible, we write it in terms of a generic Set type with
    // bytes32 values.
    // The Set implementation uses private functions, and user-facing
    // implementations (such as AddressSet) are just wrappers around the
    // underlying Set.
    // This means that we can only create new EnumerableSets for types that fit
    // in bytes32.

    struct Set {
        // Storage of set values
        bytes32[] _values;

        // Position of the value in the `values` array, plus 1 because index 0
        // means a value is not in the set.
        mapping (bytes32 => uint256) _indexes;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            // The value is stored at length-1, but we add 1 to all indexes
            // and use 0 as a sentinel value
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function _remove(Set storage set, bytes32 value) private returns (bool) {
        // We read and store the value's index to prevent multiple reads from the same storage slot
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)
            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in
            // the array, and then remove the last element (sometimes called as 'swap and pop').
            // This modifies the order of the array, as noted in {at}.

            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.

            bytes32 lastvalue = set._values[lastIndex];

            // Move the last value to the index where the value to delete is
            set._values[toDeleteIndex] = lastvalue;
            // Update the index for the moved value
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

            // Delete the slot where the moved value was stored
            set._values.pop();

            // Delete the index for the deleted slot
            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    /**
     * @dev Returns the number of values on the set. O(1).
     */
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    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];
    }

    // Bytes32Set

    struct Bytes32Set {
        Set _inner;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    /**
     * @dev Returns the number of values in the set. O(1).
     */
    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Returns the number of values in the set. O(1).
     */
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }


    // UintSet

    struct UintSet {
        Set _inner;
    }

    /**
     * @dev Add a value to a set. O(1).
     *
     * Returns true if the value was added to the set, that is if it was not
     * already present.
     */
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    /**
     * @dev Removes a value from a set. O(1).
     *
     * Returns true if the value was removed from the set, that is if it was
     * present.
     */
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    /**
     * @dev Returns the number of values on the set. O(1).
     */
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

   /**
    * @dev Returns the value stored at position `index` in the set. O(1).
    *
    * Note that there are no guarantees on the ordering of values inside the
    * array, and it may change when more values are added or removed.
    *
    * Requirements:
    *
    * - `index` must be strictly less than {length}.
    */
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}



// File: openzeppelin-solidity\contracts\token\ERC20\IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: openzeppelin-solidity\contracts\utils\Address.sol


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


contract fBNB is IERC20 {
    using Address for address;
    enum TxType { FromExcluded, ToExcluded, BothExcluded, Standard }

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

    EnumerableSet.AddressSet excluded;

    uint256 private tBnbSupply;
    uint256 private rBnbSupply;
    uint256 private feesAccrued;
 
    string private _name = 'FEG Wrapped BNB'; 
    string private _symbol = 'fBNB';
    uint8  private _decimals = 18;
    
    address private op;
    address private op2;
    
    event  Deposit(address indexed dst, uint amount);
    event  Withdrawal(address indexed src, uint amount);

    receive() external payable {
        deposit();
    }

    constructor () {
        op = address(0x00461eDCaDC9389F57bBfc3913afC10E3B5E92B5);
        op2 = op;
        EnumerableSet.add(excluded, address(0)); // stablity - zen.
        emit Transfer(address(0), msg.sender, 0);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        if (EnumerableSet.contains(excluded, account)) return tBnbBalance[account];
        (uint256 r, uint256 t) = currentSupply();
        return (rBnbBalance[account] * t)  / r;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue);
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return EnumerableSet.contains(excluded, account);
    }

    function totalFees() public view returns (uint256) {
        return feesAccrued;
    }
    
    function deposit() public payable {
        require(msg.value > 0, "can't deposit nothing");
        (uint256 r, uint256 t) = currentSupply();
        tBnbSupply += msg.value;
        uint256 fee = msg.value / 100; 
        uint256 df = fee / 8;
        uint256 net = fee != 0 ? (msg.value - (fee)) : msg.value;
        if(isExcluded(msg.sender)){
            tBnbBalance[msg.sender] += (msg.value - fee);
        } 
        feesAccrued += fee;
        rBnbBalance[op] += ((df * r) / t);
        rBnbSupply += (((net + df) * r) / t);
        rBnbBalance[msg.sender] += ((net * r) / t);
        emit Deposit(msg.sender, msg.value);
    }

    function withdraw(uint amt) public {
        require(balanceOf(msg.sender) >= amt && amt <= totalSupply(), "invalid amt");
        (uint256 r, uint256 t) = currentSupply();
        uint256 fee = amt / 100;
        uint256 wf = fee / 8;
        uint256 net = amt - fee;
        if(isExcluded(msg.sender)) {
            tBnbBalance[msg.sender] -= amt;
            rBnbBalance[msg.sender] -= ((amt * r) / t);
        } else {
            rBnbBalance[msg.sender] -= ((amt * r) / t);
        }
        tBnbSupply -= (net + wf);
        rBnbSupply -= (((net + wf) * r ) / t);
        rBnbBalance[op] += ((wf * r) / t);
        feesAccrued += wf;
        payable(msg.sender).transfer(net); 
        emit Withdrawal(msg.sender, net);
    }
    
    function rBnbToEveryone(uint256 amt) public {
        require(!isExcluded(msg.sender), "not allowed");
        (uint256 r, uint256 t) = currentSupply();
        rBnbBalance[msg.sender] -= ((amt * r) / t);
        rBnbSupply -= ((amt * r) / t);
        feesAccrued += amt;
    }

    function excludeFromFees(address account) external {
        require(msg.sender == op2, "op only");
        require(!EnumerableSet.contains(excluded, account), "address excluded");
        if(rBnbBalance[account] > 0) {
            (uint256 r, uint256 t) = currentSupply();
            tBnbBalance[account] = (rBnbBalance[account] * (t)) / (r);
        }
        EnumerableSet.add(excluded, account);
    }

    function includeInFees(address account) external {
        require(msg.sender == op2, "op only");
        require(EnumerableSet.contains(excluded, account), "address excluded");
        tBnbBalance[account] = 0;
        EnumerableSet.remove(excluded, account);
    }
    
    function tBnbFromrBnb(uint256 rBnbAmount) external view returns (uint256) {
        (uint256 r, uint256 t) = currentSupply();
        return (rBnbAmount * t) / r;
    }


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

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

    function getTtype(address sender, address recipient) internal view returns (TxType t) {
        bool isSenderExcluded = EnumerableSet.contains(excluded, sender);
        bool isRecipientExcluded = EnumerableSet.contains(excluded, recipient);
        if (isSenderExcluded && !isRecipientExcluded) {
            t = TxType.FromExcluded;
        } else if (!isSenderExcluded && isRecipientExcluded) {
            t = TxType.ToExcluded;
        } else if (!isSenderExcluded && !isRecipientExcluded) {
            t = TxType.Standard;
        } else if (isSenderExcluded && isRecipientExcluded) {
            t = TxType.BothExcluded;
        } else {
            t = TxType.Standard;
        }
        return t;
    }
    function _transfer(address sender, address recipient, uint256 amt) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amt > 0, "Transfer amt must be greater than zero");
        (uint256 r, uint256 t) = currentSupply();
        uint256 fee = amt / 100;
        TxType tt = getTtype(sender, recipient);
        if (tt == TxType.ToExcluded) {
            rBnbBalance[sender] -= ((amt * r) / t);
            tBnbBalance[recipient] += (amt - fee);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        } else if (tt == TxType.FromExcluded) {
            tBnbBalance[sender] -= (amt);
            rBnbBalance[sender] -= ((amt * r) / t);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        } else if (tt == TxType.BothExcluded) {
            tBnbBalance[sender] -= (amt);
            rBnbBalance[sender] -= ((amt * r) / t);
            tBnbBalance[recipient] += (amt - fee);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        } else {
            rBnbBalance[sender] -= ((amt * r) / t);
            rBnbBalance[recipient] += (((amt - fee) * r) / t);
        }
        rBnbSupply  -= ((fee * r) / t);
        feesAccrued += fee;
        emit Transfer(sender, recipient, amt - fee);
    }

    function currentSupply() public view returns(uint256, uint256) {
        if(rBnbSupply == 0 || tBnbSupply == 0) return (1000000000, 1);
        uint256 rSupply = rBnbSupply;
        uint256 tSupply = tBnbSupply;
        for (uint256 i = 0; i < EnumerableSet.length(excluded); i++) {
            if (rBnbBalance[EnumerableSet.at(excluded, i)] > rSupply || tBnbBalance[EnumerableSet.at(excluded, i)] > tSupply) return (rBnbSupply, tBnbSupply);
            rSupply -= (rBnbBalance[EnumerableSet.at(excluded, i)]);
            tSupply -= (tBnbBalance[EnumerableSet.at(excluded, i)]);
        }
        if (rSupply < rBnbSupply / tBnbSupply) return (rBnbSupply, tBnbSupply);
        return (rSupply, tSupply);
    }
    
    function setOp(address opper, address opper2) external {
        require(msg.sender == op, "only op can call");
        op = opper;
        op2 = opper2;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"rBnbToEveryone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"opper","type":"address"},{"internalType":"address","name":"opper2","type":"address"}],"name":"setOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rBnbAmount","type":"uint256"}],"name":"tBnbFromrBnb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600f60808190526e2322a3902bb930b83832b21021272160891b60a0908152620000329160089190620001b4565b50604080518082019091526004808252633321272160e11b60209092019182526200006091600991620001b4565b50600a805460ff191660121790553480156200007b57600080fd5b50600a805473461edcadc9389f57bbfc3913afc10e3b5e92b500610100600160a81b03199091161790819055600b80546001600160a01b0319166101009092046001600160a01b0316919091179055620000e76003600062000e456200012d602090811b91909117901c565b5060405133906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200011f9083906200025a565b60405180910390a3620002a0565b600062000144836001600160a01b0384166200014d565b90505b92915050565b60006200015b83836200019c565b620001935750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000147565b50600062000147565b60009081526001919091016020526040902054151590565b828054620001c29062000263565b90600052602060002090601f016020900481019282620001e6576000855562000231565b82601f106200020157805160ff191683800117855562000231565b8280016001018555821562000231579182015b828111156200023157825182559160200191906001019062000214565b506200023f92915062000243565b5090565b5b808211156200023f576000815560010162000244565b90815260200190565b6002810460018216806200027857607f821691505b602082108114156200029a57634e487b7160e01b600052602260045260246000fd5b50919050565b611a6780620002b06000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb1461032b578063b9eb6bda1461034b578063cba0e9961461036b578063d0e30db01461038b578063dd62ed3e14610393578063e57f14e1146103b35761013d565b806370a0823114610293578063771282f6146102b35780638cf882a4146102d657806395d89b41146102f6578063a457c2d71461030b5761013d565b806323b872dd116100f257806323b872dd146101f15780632b414264146102115780632e1a7d4d14610231578063313ce5671461025157806339509351146102735761013d565b806306fdde0314610142578063095ea7b31461016d57806313114a9d1461019a57806316a2f82a146101bc57806318160ddd146101dc5761013d565b3661013d5761013b6103d3565b005b600080fd5b34801561014e57600080fd5b506101576105aa565b604051610164919061165b565b60405180910390f35b34801561017957600080fd5b5061018d61018836600461160f565b61063c565b6040516101649190611650565b3480156101a657600080fd5b506101af610653565b6040516101649190611932565b3480156101c857600080fd5b5061013b6101d7366004611588565b610659565b3480156101e857600080fd5b506101af6106d2565b3480156101fd57600080fd5b5061018d61020c3660046115d4565b6106d8565b34801561021d57600080fd5b5061013b61022c3660046115a2565b61072a565b34801561023d57600080fd5b5061013b61024c366004611638565b610791565b34801561025d57600080fd5b506102666109e5565b6040516101649190611949565b34801561027f57600080fd5b5061018d61028e36600461160f565b6109ee565b34801561029f57600080fd5b506101af6102ae366004611588565b610a25565b3480156102bf57600080fd5b506102c8610aa0565b60405161016492919061193b565b3480156102e257600080fd5b5061013b6102f1366004611638565b610c11565b34801561030257600080fd5b50610157610cca565b34801561031757600080fd5b5061018d61032636600461160f565b610cd9565b34801561033757600080fd5b5061018d61034636600461160f565b610d10565b34801561035757600080fd5b506101af610366366004611638565b610d1d565b34801561037757600080fd5b5061018d610386366004611588565b610d3a565b61013b6103d3565b34801561039f57600080fd5b506101af6103ae3660046115a2565b610d47565b3480156103bf57600080fd5b5061013b6103ce366004611588565b610d72565b600034116103fc5760405162461bcd60e51b81526004016103f390611733565b60405180910390fd5b600080610407610aa0565b91509150346005600082825461041d9190611957565b909155506000905061043060643461196f565b9050600061043f60088361196f565b905060008261044e5734610458565b61045883346119ae565b905061046333610d3a565b156104975761047283346119ae565b3360009081526001602052604081208054909190610491908490611957565b90915550505b82600760008282546104a99190611957565b909155508490506104ba868461198f565b6104c4919061196f565b600a5461010090046001600160a01b0316600090815260208190526040812080549091906104f3908490611957565b90915550849050856105058484611957565b61050f919061198f565b610519919061196f565b6006600082825461052a9190611957565b9091555084905061053b868361198f565b610545919061196f565b3360009081526020819052604081208054909190610564908490611957565b909155505060405133907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9061059b903490611932565b60405180910390a25050505050565b6060600880546105b9906119c5565b80601f01602080910402602001604051908101604052809291908181526020018280546105e5906119c5565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b5050505050905090565b6000610649338484610e61565b5060015b92915050565b60075490565b600b546001600160a01b031633146106835760405162461bcd60e51b81526004016103f3906117f3565b61068e600382610f15565b6106aa5760405162461bcd60e51b81526004016103f3906117a4565b6001600160a01b0381166000908152600160205260408120556106ce600382610f2a565b5050565b60055490565b60006106e5848484610f3f565b6001600160a01b03841660009081526002602090815260408083203380855292529091205461072091869161071b9086906119ae565b610e61565b5060019392505050565b600a5461010090046001600160a01b031633146107595760405162461bcd60e51b81526004016103f39061187e565b600a8054610100600160a81b0319166101006001600160a01b0394851602179055600b80546001600160a01b03191691909216179055565b8061079b33610a25565b101580156107b057506107ac6106d2565b8111155b6107cc5760405162461bcd60e51b81526004016103f390611814565b6000806107d7610aa0565b909250905060006107e960648561196f565b905060006107f860088361196f565b9050600061080683876119ae565b905061081133610d3a565b1561087a5733600090815260016020526040812080548892906108359084906119ae565b90915550849050610846868861198f565b610850919061196f565b336000908152602081905260408120805490919061086f9084906119ae565b909155506108b49050565b83610885868861198f565b61088f919061196f565b33600090815260208190526040812080549091906108ae9084906119ae565b90915550505b6108be8282611957565b600560008282546108cf91906119ae565b90915550849050856108e18484611957565b6108eb919061198f565b6108f5919061196f565b6006600082825461090691906119ae565b90915550849050610917868461198f565b610921919061196f565b600a5461010090046001600160a01b031660009081526020819052604081208054909190610950908490611957565b9250508190555081600760008282546109699190611957565b9091555050604051339082156108fc029083906000818181858888f1935050505015801561099b573d6000803e3d6000fd5b50336001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516109d59190611932565b60405180910390a2505050505050565b600a5460ff1690565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161064991859061071b908690611957565b6000610a32600383610f15565b15610a5657506001600160a01b038116600090815260016020526040902054610a9b565b600080610a61610aa0565b6001600160a01b03861660009081526020819052604090205491935091508290610a8c90839061198f565b610a96919061196f565b925050505b919050565b60008060065460001480610ab45750600554155b15610ac85750633b9aca0090506001610c0d565b60065460055460005b610adb60036112ee565b811015610bde5782600080610af16003856112f9565b6001600160a01b03166001600160a01b03168152602001908152602001600020541180610b4c57508160016000610b296003856112f9565b6001600160a01b03166001600160a01b0316815260200190815260200160002054115b15610b635760065460055494509450505050610c0d565b600080610b716003846112f9565b6001600160a01b03168152602081019190915260400160002054610b9590846119ae565b925060016000610ba66003846112f9565b6001600160a01b03168152602081019190915260400160002054610bca90836119ae565b915080610bd681611a00565b915050610ad1565b50600554600654610bef919061196f565b821015610c0757600654600554935093505050610c0d565b90925090505b9091565b610c1a33610d3a565b15610c375760405162461bcd60e51b81526004016103f3906117ce565b600080610c42610aa0565b909250905080610c52838561198f565b610c5c919061196f565b3360009081526020819052604081208054909190610c7b9084906119ae565b90915550819050610c8c838561198f565b610c96919061196f565b60066000828254610ca791906119ae565b925050819055508260076000828254610cc09190611957565b9091555050505050565b6060600980546105b9906119c5565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161064991859061071b9086906119ae565b6000610649338484610f3f565b6000806000610d2a610aa0565b909250905081610a8c828661198f565b600061064d600383610f15565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600b546001600160a01b03163314610d9c5760405162461bcd60e51b81526004016103f3906117f3565b610da7600382610f15565b15610dc45760405162461bcd60e51b81526004016103f3906117a4565b6001600160a01b03811660009081526020819052604090205415610e3e57600080610ded610aa0565b6001600160a01b03851660009081526020819052604090205491935091508290610e1890839061198f565b610e22919061196f565b6001600160a01b03841660009081526001602052604090205550505b6106ce6003825b6000610e5a836001600160a01b038416611305565b9392505050565b6001600160a01b038316610e875760405162461bcd60e51b81526004016103f3906118a8565b6001600160a01b038216610ead5760405162461bcd60e51b81526004016103f390611762565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f08908590611932565b60405180910390a3505050565b6000610e5a836001600160a01b03841661134f565b6000610e5a836001600160a01b038416611367565b6001600160a01b038316610f655760405162461bcd60e51b81526004016103f390611839565b6001600160a01b038216610f8b5760405162461bcd60e51b81526004016103f3906116f0565b60008111610fab5760405162461bcd60e51b81526004016103f3906118ec565b600080610fb6610aa0565b90925090506000610fc860648561196f565b90506000610fd68787611484565b90506001816003811115610ffa57634e487b7160e01b600052602160045260246000fd5b14156110ce578261100b858761198f565b611015919061196f565b6001600160a01b0388166000908152602081905260408120805490919061103d9084906119ae565b9091555061104d905082866119ae565b6001600160a01b03871660009081526001602052604081208054909190611075908490611957565b909155508390508461108784886119ae565b611091919061198f565b61109b919061196f565b6001600160a01b038716600090815260208190526040812080549091906110c3908490611957565b909155506112539050565b60008160038111156110f057634e487b7160e01b600052602160045260246000fd5b1415611161576001600160a01b0387166000908152600160205260408120805487929061111e9084906119ae565b9091555083905061112f858761198f565b611139919061196f565b6001600160a01b038816600090815260208190526040812080549091906110759084906119ae565b600281600381111561118357634e487b7160e01b600052602160045260246000fd5b14156111c2576001600160a01b038716600090815260016020526040812080548792906111b19084906119ae565b9091555083905061100b858761198f565b826111cd858761198f565b6111d7919061196f565b6001600160a01b038816600090815260208190526040812080549091906111ff9084906119ae565b909155508390508461121184886119ae565b61121b919061198f565b611225919061196f565b6001600160a01b0387166000908152602081905260408120805490919061124d908490611957565b90915550505b8261125e858461198f565b611268919061196f565b6006600082825461127991906119ae565b9250508190555081600760008282546112929190611957565b90915550506001600160a01b038087169088167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112d085896119ae565b6040516112dd9190611932565b60405180910390a350505050505050565b600061064d82611514565b6000610e5a8383611518565b6000611311838361134f565b6113475750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561064d565b50600061064d565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561147a57600061138b6001836119ae565b855490915060009061139f906001906119ae565b905060008660000182815481106113c657634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106113f757634e487b7160e01b600052603260045260246000fd5b60009182526020909120015561140e836001611957565b6000828152600189016020526040902055865487908061143e57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061064d565b600091505061064d565b600080611492600385610f15565b905060006114a1600385610f15565b90508180156114ae575080155b156114bc576000925061150c565b811580156114c75750805b156114d5576001925061150c565b811580156114e1575080155b156114ef576003925061150c565b8180156114f95750805b15611507576002925061150c565b600392505b505092915050565b5490565b8154600090821061153b5760405162461bcd60e51b81526004016103f3906116ae565b82600001828154811061155e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b80356001600160a01b0381168114610a9b57600080fd5b600060208284031215611599578081fd5b610e5a82611571565b600080604083850312156115b4578081fd5b6115bd83611571565b91506115cb60208401611571565b90509250929050565b6000806000606084860312156115e8578081fd5b6115f184611571565b92506115ff60208501611571565b9150604084013590509250925092565b60008060408385031215611621578182fd5b61162a83611571565b946020939093013593505050565b600060208284031215611649578081fd5b5035919050565b901515815260200190565b6000602080835283518082850152825b818110156116875785810183015185820160400152820161166b565b818111156116985783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526015908201527463616e2774206465706f736974206e6f7468696e6760581b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526010908201526f1859191c995cdcc8195e18db1d59195960821b604082015260600190565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252600790820152666f70206f6e6c7960c81b604082015260600190565b6020808252600b908201526a1a5b9d985b1a5908185b5d60aa1b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526010908201526f1bdb9b1e481bdc0818d85b8818d85b1b60821b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526026908201527f5472616e7366657220616d74206d7573742062652067726561746572207468616040820152656e207a65726f60d01b606082015260800190565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b6000821982111561196a5761196a611a1b565b500190565b60008261198a57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156119a9576119a9611a1b565b500290565b6000828210156119c0576119c0611a1b565b500390565b6002810460018216806119d957607f821691505b602082108114156119fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a1457611a14611a1b565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cd98b6421e102b3c9a14746cbd3f8ada0bd2db2001e7dcb05a11b228a00c63f864736f6c63430008010033

Deployed ByteCode Sourcemap

17977:9156:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18783:9;:7;:9::i;:::-;17977:9156;;;;;19045:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20028:159;;;;;;;;;;-1:-1:-1;20028:159:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21052:88::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23285:271::-;;;;;;;;;;-1:-1:-1;23285:271:0;;;;;:::i;:::-;;:::i;19322:98::-;;;;;;;;;;;;;:::i;20195:262::-;;;;;;;;;;-1:-1:-1;20195:262:0;;;;;:::i;:::-;;:::i;26967:163::-;;;;;;;;;;-1:-1:-1;26967:163:0;;;;;:::i;:::-;;:::i;21811:749::-;;;;;;;;;;-1:-1:-1;21811:749:0;;;;;:::i;:::-;;:::i;19231:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20465:211::-;;;;;;;;;;-1:-1:-1;20465:211:0;;;;;:::i;:::-;;:::i;19428:268::-;;;;;;;;;;-1:-1:-1;19428:268:0;;;;;:::i;:::-;;:::i;26234:721::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;22572:283::-;;;;;;;;;;-1:-1:-1;22572:283:0;;;;;:::i;:::-;;:::i;19136:87::-;;;;;;;;;;;;;:::i;20684:221::-;;;;;;;;;;-1:-1:-1;20684:221:0;;;;;:::i;:::-;;:::i;19704:165::-;;;;;;;;;;-1:-1:-1;19704:165:0;;;;;:::i;:::-;;:::i;23568:171::-;;;;;;;;;;-1:-1:-1;23568:171:0;;;;;:::i;:::-;;:::i;20913:131::-;;;;;;;;;;-1:-1:-1;20913:131:0;;;;;:::i;:::-;;:::i;21152:651::-;;;:::i;19877:143::-;;;;;;;;;;-1:-1:-1;19877:143:0;;;;;:::i;:::-;;:::i;22863:414::-;;;;;;;;;;-1:-1:-1;22863:414:0;;;;;:::i;:::-;;:::i;21152:651::-;21217:1;21205:9;:13;21197:47;;;;-1:-1:-1;;;21197:47:0;;;;;;;:::i;:::-;;;;;;;;;21256:9;21267;21280:15;:13;:15::i;:::-;21255:40;;;;21320:9;21306:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;21340:11:0;;-1:-1:-1;21354:15:0;21366:3;21354:9;:15;:::i;:::-;21340:29;-1:-1:-1;21381:10:0;21394:7;21400:1;21340:29;21394:7;:::i;:::-;21381:20;-1:-1:-1;21412:11:0;21426:8;:42;;21459:9;21426:42;;;21438:17;21451:3;21438:9;:17;:::i;:::-;21412:56;;21482:22;21493:10;21482;:22::i;:::-;21479:97;;;21548:15;21560:3;21548:9;:15;:::i;:::-;21532:10;21520:23;;;;:11;:23;;;;;:44;;:23;;;:44;;;;;:::i;:::-;;;;-1:-1:-1;;21479:97:0;21602:3;21587:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;21647:1:0;;-1:-1:-1;21637:6:0;21642:1;21637:2;:6;:::i;:::-;21636:12;;;;:::i;:::-;21628:2;;;;;-1:-1:-1;;;;;21628:2:0;21616:11;:15;;;;;;;;;;:33;;:15;;:11;:33;;;;;:::i;:::-;;;;-1:-1:-1;21694:1:0;;-1:-1:-1;21689:1:0;21677:8;21683:2;21677:3;:8;:::i;:::-;21676:14;;;;:::i;:::-;21675:20;;;;:::i;:::-;21660:10;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;21747:1:0;;-1:-1:-1;21736:7:0;21742:1;21736:3;:7;:::i;:::-;21735:13;;;;:::i;:::-;21719:10;21707:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;;21765:30:0;;21773:10;;21765:30;;;;21785:9;;21765:30;:::i;:::-;;;;;;;;21152:651;;;;;:::o;19045:83::-;19082:13;19115:5;19108:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19045:83;:::o;20028:159::-;20103:4;20120:37;20129:10;20141:7;20150:6;20120:8;:37::i;:::-;-1:-1:-1;20175:4:0;20028:159;;;;;:::o;21052:88::-;21121:11;;21052:88;:::o;23285:271::-;23367:3;;-1:-1:-1;;;;;23367:3:0;23353:10;:17;23345:37;;;;-1:-1:-1;;;23345:37:0;;;;;;;:::i;:::-;23401:41;23424:8;23434:7;23401:22;:41::i;:::-;23393:70;;;;-1:-1:-1;;;23393:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23474:20:0;;23497:1;23474:20;;;:11;:20;;;;;:24;23509:39;23530:8;23486:7;23509:20;:39::i;:::-;;23285:271;:::o;19322:98::-;19402:10;;19322:98;:::o;20195:262::-;20293:4;20310:36;20320:6;20328:9;20339:6;20310:9;:36::i;:::-;-1:-1:-1;;;;;20386:19:0;;;;;;:11;:19;;;;;;;;20374:10;20386:31;;;;;;;;;20357:70;;20366:6;;20386:40;;20420:6;;20386:40;:::i;:::-;20357:8;:70::i;:::-;-1:-1:-1;20445:4:0;20195:262;;;;;:::o;26967:163::-;27055:2;;;;;-1:-1:-1;;;;;27055:2:0;27041:10;:16;27033:45;;;;-1:-1:-1;;;27033:45:0;;;;;;;:::i;:::-;27089:2;:10;;-1:-1:-1;;;;;;27089:10:0;;-1:-1:-1;;;;;27089:10:0;;;;;;;27110:3;:12;;-1:-1:-1;;;;;;27110:12:0;;;;;;;;26967:163::o;21811:749::-;21890:3;21865:21;21875:10;21865:9;:21::i;:::-;:28;;:52;;;;;21904:13;:11;:13::i;:::-;21897:3;:20;;21865:52;21857:76;;;;-1:-1:-1;;;21857:76:0;;;;;;;:::i;:::-;21945:9;21956;21969:15;:13;:15::i;:::-;21944:40;;-1:-1:-1;21944:40:0;-1:-1:-1;21995:11:0;22009:9;22015:3;22009;:9;:::i;:::-;21995:23;-1:-1:-1;22029:10:0;22042:7;22048:1;21995:23;22042:7;:::i;:::-;22029:20;-1:-1:-1;22060:11:0;22074:9;22080:3;22074;:9;:::i;:::-;22060:23;;22097:22;22108:10;22097;:22::i;:::-;22094:216;;;22148:10;22136:23;;;;:11;:23;;;;;:30;;22163:3;;22136:23;:30;;22163:3;;22136:30;:::i;:::-;;;;-1:-1:-1;22221:1:0;;-1:-1:-1;22210:7:0;22216:1;22210:3;:7;:::i;:::-;22209:13;;;;:::i;:::-;22193:10;22181:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;22094:216:0;;-1:-1:-1;22094:216:0;;22296:1;22285:7;22291:1;22285:3;:7;:::i;:::-;22284:13;;;;:::i;:::-;22268:10;22256:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;;22094:216:0;22335:8;22341:2;22335:3;:8;:::i;:::-;22320:10;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;22390:1:0;;-1:-1:-1;22384:1:0;22372:8;22378:2;22372:3;:8;:::i;:::-;22371:14;;;;:::i;:::-;22370:21;;;;:::i;:::-;22355:10;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;22434:1:0;;-1:-1:-1;22424:6:0;22429:1;22424:2;:6;:::i;:::-;22423:12;;;;:::i;:::-;22415:2;;;;;-1:-1:-1;;;;;22415:2:0;22403:11;:15;;;;;;;;;;:33;;:15;;:11;:33;;;;;:::i;:::-;;;;;;;;22462:2;22447:11;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;;22475:33:0;;22483:10;;22475:33;;;;;22504:3;;22475:33;;;;22504:3;22483:10;22475:33;;;;;;;;;;;;;;;;;;;;;22536:10;-1:-1:-1;;;;;22525:27:0;;22548:3;22525:27;;;;;;:::i;:::-;;;;;;;;21811:749;;;;;;:::o;19231:83::-;19297:9;;;;19231:83;:::o;20465:211::-;20579:10;20553:4;20600:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20600:32:0;;;;;;;;;;20553:4;;20570:76;;20591:7;;20600:45;;20635:10;;20600:45;:::i;19428:268::-;19494:7;19518:41;19541:8;19551:7;19518:22;:41::i;:::-;19514:74;;;-1:-1:-1;;;;;;19568:20:0;;;;;;:11;:20;;;;;;19561:27;;19514:74;19600:9;19611;19624:15;:13;:15::i;:::-;-1:-1:-1;;;;;19658:20:0;;:11;:20;;;;;;;;;;;19599:40;;-1:-1:-1;19599:40:0;-1:-1:-1;19599:40:0;;19658:24;;19599:40;;19658:24;:::i;:::-;19657:31;;;;:::i;:::-;19650:38;;;;19428:268;;;;:::o;26234:721::-;26279:7;26288;26311:10;;26325:1;26311:15;:34;;;-1:-1:-1;26330:10:0;;:15;26311:34;26308:61;;;-1:-1:-1;26355:10:0;;-1:-1:-1;26367:1:0;26347:22;;26308:61;26398:10;;26437;;26380:15;26458:373;26482:30;26503:8;26482:20;:30::i;:::-;26478:1;:34;26458:373;;;26583:7;26538:11;:42;26550:29;26567:8;26577:1;26550:16;:29::i;:::-;-1:-1:-1;;;;;26538:42:0;-1:-1:-1;;;;;26538:42:0;;;;;;;;;;;;;:52;:108;;;;26639:7;26594:11;:42;26606:29;26623:8;26633:1;26606:16;:29::i;:::-;-1:-1:-1;;;;;26594:42:0;-1:-1:-1;;;;;26594:42:0;;;;;;;;;;;;;:52;26538:108;26534:145;;;26656:10;;26668;;26648:31;;;;;;;;;26534:145;26706:11;:42;26718:29;26735:8;26745:1;26718:16;:29::i;:::-;-1:-1:-1;;;;;26706:42:0;;;;;;;;;;;;-1:-1:-1;26706:42:0;;26694:55;;;;:::i;:::-;;;26776:11;:42;26788:29;26805:8;26815:1;26788:16;:29::i;:::-;-1:-1:-1;;;;;26776:42:0;;;;;;;;;;;;-1:-1:-1;26776:42:0;;26764:55;;;;:::i;:::-;;-1:-1:-1;26514:3:0;;;;:::i;:::-;;;;26458:373;;;;26868:10;;26855;;:23;;;;:::i;:::-;26845:7;:33;26841:70;;;26888:10;;26900;;26880:31;;;;;;;;26841:70;26930:7;;-1:-1:-1;26939:7:0;-1:-1:-1;26234:721:0;;;:::o;22572:283::-;22636:22;22647:10;22636;:22::i;:::-;22635:23;22627:47;;;;-1:-1:-1;;;22627:47:0;;;;;;;:::i;:::-;22686:9;22697;22710:15;:13;:15::i;:::-;22685:40;;-1:-1:-1;22685:40:0;-1:-1:-1;22685:40:0;22765:7;22685:40;22765:3;:7;:::i;:::-;22764:13;;;;:::i;:::-;22748:10;22736:11;:23;;;;;;;;;;:42;;:23;;:11;:42;;;;;:::i;:::-;;;;-1:-1:-1;22816:1:0;;-1:-1:-1;22805:7:0;22811:1;22805:3;:7;:::i;:::-;22804:13;;;;:::i;:::-;22789:10;;:29;;;;;;;:::i;:::-;;;;;;;;22844:3;22829:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;22572:283:0:o;19136:87::-;19175:13;19208:7;19201:14;;;;;:::i;20684:221::-;20803:10;20777:4;20824:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20824:32:0;;;;;;;;;;20777:4;;20794:81;;20815:7;;20824:50;;20859:15;;20824:50;:::i;19704:165::-;19782:4;19799:40;19809:10;19821:9;19832:6;19799:9;:40::i;23568:171::-;23633:7;23654:9;23665;23678:15;:13;:15::i;:::-;23653:40;;-1:-1:-1;23653:40:0;-1:-1:-1;23653:40:0;23712:14;23653:40;23712:10;:14;:::i;20913:131::-;20971:4;20995:41;21018:8;21028:7;20995:22;:41::i;19877:143::-;-1:-1:-1;;;;;19985:18:0;;;19958:7;19985:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19877:143::o;22863:414::-;22947:3;;-1:-1:-1;;;;;22947:3:0;22933:10;:17;22925:37;;;;-1:-1:-1;;;22925:37:0;;;;;;;:::i;:::-;22982:41;23005:8;23015:7;22982:22;:41::i;:::-;22981:42;22973:71;;;;-1:-1:-1;;;22973:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23058:20:0;;23081:1;23058:20;;;;;;;;;;;:24;23055:168;;23100:9;23111;23124:15;:13;:15::i;:::-;-1:-1:-1;;;;;23178:20:0;;:11;:20;;;;;;;;;;;23099:40;;-1:-1:-1;23099:40:0;-1:-1:-1;23099:40:0;;23178:26;;23099:40;;23178:26;:::i;:::-;23177:34;;;;:::i;:::-;-1:-1:-1;;;;;23154:20:0;;;;;;:11;:20;;;;;:57;-1:-1:-1;;23055:168:0;23233:36;23251:8;23261:7;5910:152;5980:4;6004:50;6009:3;-1:-1:-1;;;;;6029:23:0;;6004:4;:50::i;:::-;5997:57;5910:152;-1:-1:-1;;;5910:152:0:o;23749:337::-;-1:-1:-1;;;;;23842:19:0;;23834:68;;;;-1:-1:-1;;;23834:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23921:21:0;;23913:68;;;;-1:-1:-1;;;23913:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23994:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;24046:32;;;;;24024:6;;24046:32;:::i;:::-;;;;;;;;23749:337;;;:::o;6482:167::-;6562:4;6586:55;6596:3;-1:-1:-1;;;;;6616:23:0;;6586:9;:55::i;6238:158::-;6311:4;6335:53;6343:3;-1:-1:-1;;;;;6363:23:0;;6335:7;:53::i;24827:1399::-;-1:-1:-1;;;;;24921:20:0;;24913:70;;;;-1:-1:-1;;;24913:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25002:23:0;;24994:71;;;;-1:-1:-1;;;24994:71:0;;;;;;;:::i;:::-;25090:1;25084:3;:7;25076:58;;;;-1:-1:-1;;;25076:58:0;;;;;;;:::i;:::-;25146:9;25157;25170:15;:13;:15::i;:::-;25145:40;;-1:-1:-1;25145:40:0;-1:-1:-1;25196:11:0;25210:9;25216:3;25210;:9;:::i;:::-;25196:23;;25230:9;25242:27;25251:6;25259:9;25242:8;:27::i;:::-;25230:39;-1:-1:-1;25290:17:0;25284:2;:23;;;;;;-1:-1:-1;;;25284:23:0;;;;;;;;;;25280:815;;;25360:1;25349:7;25355:1;25349:3;:7;:::i;:::-;25348:13;;;;:::i;:::-;-1:-1:-1;;;;;25324:19:0;;:11;:19;;;;;;;;;;:38;;:19;;:11;:38;;;;;:::i;:::-;;;;-1:-1:-1;25404:9:0;;-1:-1:-1;25410:3:0;25404;:9;:::i;:::-;-1:-1:-1;;;;;25377:22:0;;;;;;:11;:22;;;;;:37;;:22;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;25476:1:0;;-1:-1:-1;25471:1:0;25458:9;25464:3;25458;:9;:::i;:::-;25457:15;;;;:::i;:::-;25456:21;;;;:::i;:::-;-1:-1:-1;;;;;25429:22:0;;:11;:22;;;;;;;;;;:49;;:22;;:11;:49;;;;;:::i;:::-;;;;-1:-1:-1;25280:815:0;;-1:-1:-1;25280:815:0;;25506:19;25500:2;:25;;;;;;-1:-1:-1;;;25500:25:0;;;;;;;;;;25496:599;;;-1:-1:-1;;;;;25542:19:0;;;;;;:11;:19;;;;;:28;;25566:3;;25542:19;:28;;25566:3;;25542:28;:::i;:::-;;;;-1:-1:-1;25621:1:0;;-1:-1:-1;25610:7:0;25616:1;25610:3;:7;:::i;:::-;25609:13;;;;:::i;:::-;-1:-1:-1;;;;;25585:19:0;;:11;:19;;;;;;;;;;:38;;:19;;:11;:38;;;;;:::i;25496:599::-;25715:19;25709:2;:25;;;;;;-1:-1:-1;;;25709:25:0;;;;;;;;;;25705:390;;;-1:-1:-1;;;;;25751:19:0;;;;;;:11;:19;;;;;:28;;25775:3;;25751:19;:28;;25775:3;;25751:28;:::i;:::-;;;;-1:-1:-1;25830:1:0;;-1:-1:-1;25819:7:0;25825:1;25819:3;:7;:::i;25705:390::-;26017:1;26006:7;26012:1;26006:3;:7;:::i;:::-;26005:13;;;;:::i;:::-;-1:-1:-1;;;;;25981:19:0;;:11;:19;;;;;;;;;;:38;;:19;;:11;:38;;;;;:::i;:::-;;;;-1:-1:-1;26081:1:0;;-1:-1:-1;26076:1:0;26063:9;26069:3;26063;:9;:::i;:::-;26062:15;;;;:::i;:::-;26061:21;;;;:::i;:::-;-1:-1:-1;;;;;26034:22:0;;:11;:22;;;;;;;;;;:49;;:22;;:11;:49;;;;;:::i;:::-;;;;-1:-1:-1;;25705:390:0;26133:1;26122:7;26128:1;26122:3;:7;:::i;:::-;26121:13;;;;:::i;:::-;26105:10;;:30;;;;;;;:::i;:::-;;;;;;;;26161:3;26146:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;26180:38:0;;;;;;;26208:9;26214:3;26208;:9;:::i;:::-;26180:38;;;;;;:::i;:::-;;;;;;;;24827:1399;;;;;;;:::o;6735:117::-;6798:7;6825:19;6833:3;6825:7;:19::i;7196:158::-;7270:7;7321:22;7325:3;7337:5;7321:3;:22::i;974:414::-;1037:4;1059:21;1069:3;1074:5;1059:9;:21::i;:::-;1054:327;;-1:-1:-1;1097:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;1280:18;;1258:19;;;:12;;;:19;;;;;;:40;;;;1313:11;;1054:327;-1:-1:-1;1364:5:0;1357:12;;3194:129;3267:4;3291:19;;;:12;;;;;:19;;;;;;:24;;;3194:129::o;1564:1544::-;1630:4;1769:19;;;:12;;;:19;;;;;;1805:15;;1801:1300;;2167:21;2191:14;2204:1;2191:10;:14;:::i;:::-;2240:18;;2167:38;;-1:-1:-1;2220:17:0;;2240:22;;2261:1;;2240:22;:::i;:::-;2220:42;;2507:17;2527:3;:11;;2539:9;2527:22;;;;;;-1:-1:-1;;;2527:22:0;;;;;;;;;;;;;;;;;2507:42;;2673:9;2644:3;:11;;2656:13;2644:26;;;;;;-1:-1:-1;;;2644:26:0;;;;;;;;;;;;;;;;;;:38;2776:17;:13;2792:1;2776:17;:::i;:::-;2750:23;;;;:12;;;:23;;;;;:43;2902:17;;2750:3;;2902:17;;;-1:-1:-1;;;2902:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;2997:3;:12;;:19;3010:5;2997:19;;;;;;;;;;;2990:26;;;3040:4;3033:11;;;;;;;;1801:1300;3084:5;3077:12;;;;;24094:727;24170:8;24191:21;24215:40;24238:8;24248:6;24215:22;:40::i;:::-;24191:64;;24266:24;24293:43;24316:8;24326:9;24293:22;:43::i;:::-;24266:70;;24351:16;:40;;;;;24372:19;24371:20;24351:40;24347:448;;;24412:19;24408:23;;24347:448;;;24454:16;24453:17;:40;;;;;24474:19;24453:40;24449:346;;;24514:17;24510:21;;24449:346;;;24554:16;24553:17;:41;;;;;24575:19;24574:20;24553:41;24549:246;;;24615:15;24611:19;;24549:246;;;24652:16;:39;;;;;24672:19;24652:39;24648:147;;;24712:19;24708:23;;24648:147;;;24768:15;24764:19;;24648:147;24805:8;;24094:727;;;;:::o;3409:109::-;3492:18;;3409:109::o;3862:204::-;3957:18;;3929:7;;3957:26;-1:-1:-1;3949:73:0;;;;-1:-1:-1;;;3949:73:0;;;;;;;:::i;:::-;4040:3;:11;;4052:5;4040:18;;;;;;-1:-1:-1;;;4040:18:0;;;;;;;;;;;;;;;;;4033:25;;3862:204;;;;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:266::-;;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1173:6;1165;1158:22;1120:2;1201:31;1222:9;1201:31;:::i;:::-;1191:41;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1110:179:1:o;1294:190::-;;1406:2;1394:9;1385:7;1381:23;1377:32;1374:2;;;1427:6;1419;1412:22;1374:2;-1:-1:-1;1455:23:1;;1364:120;-1:-1:-1;1364:120:1:o;1489:187::-;1654:14;;1647:22;1629:41;;1617:2;1602:18;;1584:92::o;1681:603::-;;1822:2;1851;1840:9;1833:21;1883:6;1877:13;1926:6;1921:2;1910:9;1906:18;1899:34;1951:4;1964:140;1978:6;1975:1;1972:13;1964:140;;;2073:14;;;2069:23;;2063:30;2039:17;;;2058:2;2035:26;2028:66;1993:10;;1964:140;;;2122:6;2119:1;2116:13;2113:2;;;2192:4;2187:2;2178:6;2167:9;2163:22;2159:31;2152:45;2113:2;-1:-1:-1;2268:2:1;2247:15;-1:-1:-1;;2243:29:1;2228:45;;;;2275:2;2224:54;;1802:482;-1:-1:-1;;;1802:482:1:o;2289:398::-;2491:2;2473:21;;;2530:2;2510:18;;;2503:30;2569:34;2564:2;2549:18;;2542:62;-1:-1:-1;;;2635:2:1;2620:18;;2613:32;2677:3;2662:19;;2463:224::o;2692:399::-;2894:2;2876:21;;;2933:2;2913:18;;;2906:30;2972:34;2967:2;2952:18;;2945:62;-1:-1:-1;;;3038:2:1;3023:18;;3016:33;3081:3;3066:19;;2866:225::o;3096:345::-;3298:2;3280:21;;;3337:2;3317:18;;;3310:30;-1:-1:-1;;;3371:2:1;3356:18;;3349:51;3432:2;3417:18;;3270:171::o;3446:398::-;3648:2;3630:21;;;3687:2;3667:18;;;3660:30;3726:34;3721:2;3706:18;;3699:62;-1:-1:-1;;;3792:2:1;3777:18;;3770:32;3834:3;3819:19;;3620:224::o;3849:340::-;4051:2;4033:21;;;4090:2;4070:18;;;4063:30;-1:-1:-1;;;4124:2:1;4109:18;;4102:46;4180:2;4165:18;;4023:166::o;4194:335::-;4396:2;4378:21;;;4435:2;4415:18;;;4408:30;-1:-1:-1;;;4469:2:1;4454:18;;4447:41;4520:2;4505:18;;4368:161::o;4534:330::-;4736:2;4718:21;;;4775:1;4755:18;;;4748:29;-1:-1:-1;;;4808:2:1;4793:18;;4786:37;4855:2;4840:18;;4708:156::o;4869:335::-;5071:2;5053:21;;;5110:2;5090:18;;;5083:30;-1:-1:-1;;;5144:2:1;5129:18;;5122:41;5195:2;5180:18;;5043:161::o;5209:401::-;5411:2;5393:21;;;5450:2;5430:18;;;5423:30;5489:34;5484:2;5469:18;;5462:62;-1:-1:-1;;;5555:2:1;5540:18;;5533:35;5600:3;5585:19;;5383:227::o;5615:340::-;5817:2;5799:21;;;5856:2;5836:18;;;5829:30;-1:-1:-1;;;5890:2:1;5875:18;;5868:46;5946:2;5931:18;;5789:166::o;5960:400::-;6162:2;6144:21;;;6201:2;6181:18;;;6174:30;6240:34;6235:2;6220:18;;6213:62;-1:-1:-1;;;6306:2:1;6291:18;;6284:34;6350:3;6335:19;;6134:226::o;6365:402::-;6567:2;6549:21;;;6606:2;6586:18;;;6579:30;6645:34;6640:2;6625:18;;6618:62;-1:-1:-1;;;6711:2:1;6696:18;;6689:36;6757:3;6742:19;;6539:228::o;6772:177::-;6918:25;;;6906:2;6891:18;;6873:76::o;6954:248::-;7128:25;;;7184:2;7169:18;;7162:34;7116:2;7101:18;;7083:119::o;7207:184::-;7379:4;7367:17;;;;7349:36;;7337:2;7322:18;;7304:87::o;7396:128::-;;7467:1;7463:6;7460:1;7457:13;7454:2;;;7473:18;;:::i;:::-;-1:-1:-1;7509:9:1;;7444:80::o;7529:217::-;;7595:1;7585:2;;-1:-1:-1;;;7620:31:1;;7674:4;7671:1;7664:15;7702:4;7627:1;7692:15;7585:2;-1:-1:-1;7731:9:1;;7575:171::o;7751:168::-;;7857:1;7853;7849:6;7845:14;7842:1;7839:21;7834:1;7827:9;7820:17;7816:45;7813:2;;;7864:18;;:::i;:::-;-1:-1:-1;7904:9:1;;7803:116::o;7924:125::-;;7992:1;7989;7986:8;7983:2;;;7997:18;;:::i;:::-;-1:-1:-1;8034:9:1;;7973:76::o;8054:380::-;8139:1;8129:12;;8186:1;8176:12;;;8197:2;;8251:4;8243:6;8239:17;8229:27;;8197:2;8304;8296:6;8293:14;8273:18;8270:38;8267:2;;;8350:10;8345:3;8341:20;8338:1;8331:31;8385:4;8382:1;8375:15;8413:4;8410:1;8403:15;8267:2;;8109:325;;;:::o;8439:135::-;;-1:-1:-1;;8499:17:1;;8496:2;;;8519:18;;:::i;:::-;-1:-1:-1;8566:1:1;8555:13;;8486:88::o;8579:127::-;8640:10;8635:3;8631:20;8628:1;8621:31;8671:4;8668:1;8661:15;8695:4;8692:1;8685:15

Swarm Source

ipfs://cd98b6421e102b3c9a14746cbd3f8ada0bd2db2001e7dcb05a11b228a00c63f8
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.