Contract 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c 1

 

Contract Overview

Balance:
1.1942323 BNB

BNB Value:
$510.00 (@ $427.05/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x36fe57ca7aa721921bcdeb46d08b82fb275d01390d6be731ce5ae4e8e40a527eApprove145262642022-01-20 9:22:4919 hrs 17 mins ago0xbbd4712b29d76898d34ce6b89f68b8188afc8260 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000074445
0x5be2d467947c9cbac7479e5054007c2819524aaa5fa23bdff28a903de56c2f46Approve144481962022-01-17 15:46:343 days 12 hrs ago0xd5e3d96595886ecde31fa57acef65d089885391a IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0x5deba220924fad478c0b3e191205f61558808e17a384c648a72024aef9184eaeApprove143903132022-01-15 15:14:005 days 13 hrs ago0xf30cd6661d1aec1fca24a3d76ca5876f8199f51f IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000129805
0xba6fa509e97c83c15668448a640414b7ab438671d9185255c045d2ef98cd7675Approve143903082022-01-15 15:13:455 days 13 hrs ago0xf30cd6661d1aec1fca24a3d76ca5876f8199f51f IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0x9ba57e6e35775ff1f1a0585047b217b02087fa463bbf32dd10a54c4f3bd111c4Approve143444942022-01-14 0:57:257 days 3 hrs ago0xfaa7998b2b9d4f1e9c9b71cf9cd28e099b94499b IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000316127
0x00bf320469e355ff6306b286551675d9017ce8824d89fb863a403757e34eeac7Approve143337312022-01-13 15:58:247 days 12 hrs ago0x5d8a6290aab822a61a43d81e8024b36b0aafbc1b IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0x70e3e2061edf08f5d862af5403a8d8ceb1ca8ad3c211327bc790994f1b7fb799Approve142570912022-01-10 23:57:4710 days 4 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000127885
0x396850427e7020d7bb33297fa16f487b51dbabd2a600a7f2e5774063b9b96152Approve142560832022-01-10 23:06:1410 days 5 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000136964835
0x04e4bbfbef2a1aa7f30b371c594102ab6f36a9e95cf0d89ece5a5ba8219fc7f0Approve142461842022-01-10 14:50:5310 days 13 hrs ago0xf8516380eb1319b4080b61a124448d538f513dfe IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0xb25ad07d1ce39342b8e8d3d48faae1f5ec4bf44e8eb1ecbfb077ae4d6ebb4e48Approve142344692022-01-10 5:05:0310 days 23 hrs ago0xd4e539937a22adc07f93d4b8407e9dd6e2ad6502 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000316127
0x4f6893aafb8102d3564b5cca3d886e8735b0df786695efafc98ce87eae0f691cApprove142124532022-01-09 10:43:1711 days 17 hrs ago0x714d7f1d6ac3d0bd1e571f7e655567438ae389d8 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000270966
0xc8cea9bd794cc2b0df5cc89c90ae9de291e2a8acf845e33708c7a200f8f70bc7Approve141930492022-01-08 18:33:0212 days 10 hrs ago0xc5ce687c471c451d1d8176e1c3f52f08ced5219e IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0xb3e5f7d93c8a3b5ae055a3febebd31c18b41f3a8b9458c817ee0263a655f420eApprove140362992022-01-03 7:38:3117 days 21 hrs ago0xae9e9412ee360811a3a35d0806cdad665b1a3ee4 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000074445
0x864a3b6c9556f1732db5d8e6a9abc1defc9d0797e61d8e0f1fef13634d2b9f9dApprove139593442021-12-31 15:23:2520 days 13 hrs ago0xb5c61b618f6b160aedd7f5c1d313e35ba5347630 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000316127
0xeb4798f7f41c4e95247f56e43f67b4b889c7a8f17c40927932583a58ba4764faApprove139527842021-12-31 9:54:4820 days 18 hrs ago0x1aa9e98fed129cb450030e4680ac5cd08835c5f9 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0xb7130a99151c0d97d0b355f5d51d68b71fb9ee2fe4f6246c3782c8b2163b7a5fApprove139506242021-12-31 8:06:4820 days 20 hrs ago0x5d211fd89517dfdd06372ee35f6734643d1f49c2 IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0x1d25f8f7694100b9cbde50044d916dc02a6fb024e3cc0c913fc87ec4955139eeApprove139247562021-12-30 10:32:4521 days 18 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000127885
0x8887d544af3cb3cc96393f5bec63da512d7196b03b4ab44b28b6bea74369a8dfApprove139239562021-12-30 9:52:4521 days 18 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000127885
0x404f530a6e6b66cd9008e9ac6ebe1442a09b0d79718a293c7deed805e3116744Approve139208392021-12-30 7:16:5421 days 21 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000136964835
0x4e1753536dc406b452503639d47868152b3d1d6ab096d97091b26be6a40a3e00Approve139183652021-12-30 5:12:5821 days 23 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000127885
0x85998b9c2596753cef6725403d77ea395128d254d4b90e134fe33a42d1434ab8Approve139181892021-12-30 5:04:1021 days 23 hrs ago0xce94a9be53edb2863cb960e0dceeb3948bd69c5a IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
0xba42a614e461eb573f84bdd84959ccd26d0a8cc3bbee7ab4748e7975e6d93714Approve139175902021-12-30 4:34:1322 days 5 mins ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000127885
0x263886a61efd082da2eac538390e017d955e9f6422522bba4566e361dfdf4be0Approve139059522021-12-29 18:52:1922 days 9 hrs ago0xce6c245e32504026f411187e9bffeb838806da1d IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000074445
0xc376925c5d6b246b72ba3f700421850a41d8cb0e5db146acb59d525c486aef90Approve138911732021-12-29 6:32:5822 days 22 hrs ago0x00e0ec70ae84aa61f11b709072fd80437a17841c IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000129805
0xaab839116760b8f73f62d2a27cff226a8ac7a8d8cff8cce036080a800888be02Approve138911702021-12-29 6:32:4922 days 22 hrs ago0x00e0ec70ae84aa61f11b709072fd80437a17841c IN  0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0 BNB0.000225805
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x65078afae74c6ab1d01359b5b0db32ec984a62806bc1c1c808ddd565685e8006143903192022-01-15 15:14:185 days 13 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000803965265005816 BNB
0x65078afae74c6ab1d01359b5b0db32ec984a62806bc1c1c808ddd565685e8006143903192022-01-15 15:14:185 days 13 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000803965265005816 BNB
0x5fe814b7bccd59c3947fe34530be88bafa1aa24723832b1f47cdfb96ce53e353142934912022-01-12 6:22:468 days 22 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.00072437502758042 BNB
0x5fe814b7bccd59c3947fe34530be88bafa1aa24723832b1f47cdfb96ce53e353142934912022-01-12 6:22:468 days 22 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.00072437502758042 BNB
0xecbec18f3cc1ab72400bdc1754f1827ab3badf851a193b3c48b381623b1bc75a139182032021-12-30 5:04:5221 days 23 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000852961421190297 BNB
0xecbec18f3cc1ab72400bdc1754f1827ab3badf851a193b3c48b381623b1bc75a139182032021-12-30 5:04:5221 days 23 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000852961421190297 BNB
0x626190533b00afd565ee19323117a6c81430b9c41996b43a7656de67eb5e15eb137014192021-12-22 16:12:0729 days 12 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000909417839339714 BNB
0x626190533b00afd565ee19323117a6c81430b9c41996b43a7656de67eb5e15eb137014192021-12-22 16:12:0729 days 12 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000909417839339714 BNB
0xc447fb9dc27c2bed7b49ba0d182893feae0fbe1128075403c9c6a8575f4ed29c136744482021-12-21 17:39:2730 days 11 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000813421978651955 BNB
0xc447fb9dc27c2bed7b49ba0d182893feae0fbe1128075403c9c6a8575f4ed29c136744482021-12-21 17:39:2730 days 11 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000813421978651955 BNB
0xc9449ae1c49bb69664284e4d60d35b39c0c6d4408161ec3fc45af0d663ba8205134622152021-12-14 7:43:3537 days 20 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000671461454599524 BNB
0xc9449ae1c49bb69664284e4d60d35b39c0c6d4408161ec3fc45af0d663ba8205134622152021-12-14 7:43:3537 days 20 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000671461454599524 BNB
0x17716fb95e1e1f43e60f0e57ac35160981e42ddd70b43ee314b116d27a3ebde4133565622021-12-10 15:24:0841 days 13 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000646287159064395 BNB
0x17716fb95e1e1f43e60f0e57ac35160981e42ddd70b43ee314b116d27a3ebde4133565622021-12-10 15:24:0841 days 13 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000646287159064395 BNB
0x2f0f74d91a108d9a3bd143444bfbe7719deb63ce380211fa402518469f0e4b97133265412021-12-09 14:07:0842 days 14 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.001352485784546047 BNB
0x2f0f74d91a108d9a3bd143444bfbe7719deb63ce380211fa402518469f0e4b97133265412021-12-09 14:07:0842 days 14 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.001352485784546047 BNB
0xdaae10312722c5fe56fac4c29f4e7fd62f9aa783b8524afdc107944ab4c4c91f132861462021-12-08 1:38:2544 days 3 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000659946697589019 BNB
0xdaae10312722c5fe56fac4c29f4e7fd62f9aa783b8524afdc107944ab4c4c91f132861462021-12-08 1:38:2544 days 3 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000659946697589019 BNB
0x51733fff56b4d2a258b8db83318c510cd58bf916655a7ebe700b61bfcc1ee007132270562021-12-05 22:11:3146 days 6 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000591969248165716 BNB
0x51733fff56b4d2a258b8db83318c510cd58bf916655a7ebe700b61bfcc1ee007132270562021-12-05 22:11:3146 days 6 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000591969248165716 BNB
0x82139e967c45540eb40997f09252adfdcfcafd6156b9aee0fa5a38dde53d3385130884122021-11-30 22:53:1251 days 5 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000710275609333901 BNB
0x82139e967c45540eb40997f09252adfdcfcafd6156b9aee0fa5a38dde53d3385130884122021-11-30 22:53:1251 days 5 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000710275609333901 BNB
0x39bfd16224f740253830e4c1898df6fe7a30bc72939bd14ca9874afc80101f22130621722021-11-29 23:36:3652 days 5 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000721482803534916 BNB
0x39bfd16224f740253830e4c1898df6fe7a30bc72939bd14ca9874afc80101f22130621722021-11-29 23:36:3652 days 5 hrs ago PancakeSwap: Router v2 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c0.000721482803534916 BNB
0x157110ec550840cd0e3fdaf1694a967b40b68af20f745dfee3ad611d56830c36130621722021-11-29 23:36:3652 days 5 hrs ago 0x7c6da35b6e28c5e571026eb4f9605e35d79dcb4c PancakeSwap: Router v20.000618184910587549 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NFTeez

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-10-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

/**
 * @title SafeMathUint
 * @dev Math operations with safety checks that revert on error
 */
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
/*
    MIT License

    Copyright (c) 2018 requestnetwork
    Copyright (c) 2018 Fragments, Inc.

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.
*/

pragma solidity ^0.8.7;

/**
 * @title SafeMathInt
 * @dev Math operations for int256 with overflow safety checks.
 */
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

pragma solidity ^0.8.7;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

pragma solidity ^0.8.7;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

pragma solidity ^0.8.7;

interface IPancakeSwapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

pragma solidity ^0.8.7;

interface IPancakeSwapV2Router02 is IPancakeSwapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

pragma solidity ^0.8.7;

interface IPancakeSwapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

pragma solidity ^0.8.7;

interface IPancakeSwapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

pragma solidity ^0.8.7;

library IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    function get(Map storage map, address key) public view returns (uint) {
        return map.values[key];
    }

    function getIndexOfKey(Map storage map, address key) public view returns (int) {
        if(!map.inserted[key]) {
            return -1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(Map storage map, uint index) public view returns (address) {
        return map.keys[index];
    }



    function size(Map storage map) public view returns (uint) {
        return map.keys.length;
    }

    function set(Map storage map, address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(Map storage map, address key) public {
        if (!map.inserted[key]) {
            return;
        }

        delete map.inserted[key];
        delete map.values[key];

        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];

        map.indexOf[lastKey] = index;
        delete map.indexOf[key];

        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

pragma solidity ^0.8.7;

/**
 * @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);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

pragma solidity ^0.8.7;

contract NFTeez is ERC20, Ownable {
    using SafeMath for uint256;

    IPancakeSwapV2Router02 public pancakeSwapV2Router;
    address public pancakeSwapV2Pair;

    bool private swapping;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;

    uint256 public swapTokensAtAmount = 1000000 * (10**18);

    uint256 public liquidityFee = 2;
    uint256 public marketinAndInitiativeFee = 4;
    uint256 public buyBackAndBurnFee = 4;

    uint256 public previousLiquidityFee = liquidityFee;
    uint256 public previousMarketinAndInitiativeFee = marketinAndInitiativeFee;
    uint256 public previousBuyBackAndBurnFee = buyBackAndBurnFee;

    address public BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;

    // Addresses
    address public _marketingAndInitiativesWalletAddress = 0x645B49884208bbEA11E49Da8169Ae8389d860295;
    address public _buyBackAndBurnWalletAddress = 0xb0d23a0b33bDB05938976A7567fF5E4F53985f9E;

     // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event UpdatePancakeSwapV2Router(address indexed newAddress, address indexed oldAddress);

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() ERC20("NFTeez", "$NFTeez") {
        address  _newOwner = 0x1B7494Fbd632dDb0953eCaF6C87D90A2a9b9F3EF;

        IPancakeSwapV2Router02 _pancakeSwapV2Router = IPancakeSwapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); //MAINNET
        // IPancakeSwapV2Router02 _pancakeSwapV2Router = IPancakeSwapV2Router02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);

         // Create a PancakeSwap pair for this new token
        address _pancakeSwapV2Pair = IPancakeSwapV2Factory(_pancakeSwapV2Router.factory())
            .createPair(address(this), _pancakeSwapV2Router.WETH());

        pancakeSwapV2Router = _pancakeSwapV2Router;
        pancakeSwapV2Pair = _pancakeSwapV2Pair;

        _setAutomatedMarketMakerPair(_pancakeSwapV2Pair, true);
        setMarketingWallet(payable(0x645B49884208bbEA11E49Da8169Ae8389d860295));
        setBuyBackWallet(payable(0xb0d23a0b33bDB05938976A7567fF5E4F53985f9E));

        // exclude from paying fees or having max transaction amount
        excludeFromFees(_newOwner, true);
        excludeFromFees(address(this), true);
        
        // Transfer ownaship to owner
        transferOwnership(_newOwner);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        // SEND TOTAL_SUPPLY TO OWNER  
        _mint(owner(), 10000000000 * (1e18));
    }

    receive() external payable {
  	}

    function updatePancakeSwapV2Router(address newAddress) public onlyOwner {
        require(newAddress != address(pancakeSwapV2Router), "NFTeez: The router already has that address");
        emit UpdatePancakeSwapV2Router(newAddress, address(pancakeSwapV2Router));
        pancakeSwapV2Router = IPancakeSwapV2Router02(newAddress);
        address _pancakeSwapV2Pair = IPancakeSwapV2Factory(pancakeSwapV2Router.factory())
            .createPair(address(this), pancakeSwapV2Router.WETH());
        pancakeSwapV2Pair = _pancakeSwapV2Pair;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "NFTeez: Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(address[] memory accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setMarketingWallet(address payable wallet) public onlyOwner {
        require(wallet != owner(), "Marketing wallet cannot be the owner");
        _marketingAndInitiativesWalletAddress = wallet;
        excludeFromFees(_marketingAndInitiativesWalletAddress, true);
    }

    function setBuyBackWallet(address payable wallet) public onlyOwner {
        require(wallet != owner(), "But back and burn wallet cannot be the owner");
        _buyBackAndBurnWalletAddress = wallet;
        excludeFromFees(_buyBackAndBurnWalletAddress, true);
    }

    function setLiquidityFee(uint256 value) external onlyOwner{
        liquidityFee = value;
    }

    function setMarketingFee(uint256 value) external onlyOwner{
        marketinAndInitiativeFee = value;
    }

    function setBuyBackFee(uint256 value) external onlyOwner{
        buyBackAndBurnFee = value;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != pancakeSwapV2Pair, "NFTeez: The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "NFTeez: Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function removeAllFees() public onlyOwner {
        liquidityFee = 0;
        marketinAndInitiativeFee = 0;
        buyBackAndBurnFee = 0;

    }

    function restoreAllFees () public onlyOwner {
        liquidityFee = previousLiquidityFee;
        marketinAndInitiativeFee = previousMarketinAndInitiativeFee;
        buyBackAndBurnFee = previousBuyBackAndBurnFee;

    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

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

		if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            from != owner() &&
            to != owner()
        ) {
            swapping = true;
            
            uint256 totalFees = liquidityFee.add(marketinAndInitiativeFee).add(buyBackAndBurnFee);

            uint256 swapTokens = contractTokenBalance.mul(liquidityFee).div(totalFees);
            swapAndLiquify(swapTokens);

            uint256 marketingTokens = contractTokenBalance.mul(marketinAndInitiativeFee).div(totalFees);
            swapAndSendMarketing(marketingTokens);

            uint256 buyBackTokens = contractTokenBalance.mul(buyBackAndBurnFee).div(totalFees);
            swapAndSendBuyBack(buyBackTokens);

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if(takeFee) {
            uint256 feePercent = liquidityFee.add(marketinAndInitiativeFee).add(buyBackAndBurnFee);

        	if(automatedMarketMakerPairs[to]) {
				feePercent += 1;
        	}

			uint256 fees = amount.mul(feePercent).div(100);

        	amount = amount.sub(fees);

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);

    }


    function swapAndLiquify(uint256 tokens) private {

        // split the contract balance into halves
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to PancakeSwap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the PancakeSwap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pancakeSwapV2Router.WETH();

        _approve(address(this), address(pancakeSwapV2Router), tokenAmount);

        // make the swap
        pancakeSwapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

    }

    function swapTokensForBUSD(uint256 tokenAmount) private {

        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = pancakeSwapV2Router.WETH();
        path[2] = BUSD;

        _approve(address(this), address(pancakeSwapV2Router), tokenAmount);

        // make the swap
        pancakeSwapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }


    function swapAndSendMarketing(uint256 tokens) private {

        uint256 initialBalance = IERC20(BUSD).balanceOf(address(this));

        // swap tokens for BUSD
        swapTokensForBUSD(tokens); 

        // how much BUSD did we just swap into?
        uint256 newBalance = IERC20(BUSD).balanceOf(address(this)).sub(initialBalance);

        IERC20(BUSD).transfer(_marketingAndInitiativesWalletAddress, newBalance);
    }

    function swapAndSendBuyBack(uint256 tokens) private {

        uint256 initialBalance = IERC20(BUSD).balanceOf(address(this));

        // swap tokens for BUSD
        swapTokensForBUSD(tokens); 

        // how much BUSD did we just swap into?
        uint256 newBalance = IERC20(BUSD).balanceOf(address(this)).sub(initialBalance);

        IERC20(BUSD).transfer(_buyBackAndBurnWalletAddress, newBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(pancakeSwapV2Router), tokenAmount);

        // add the liquidity
        pancakeSwapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0),
            block.timestamp
        );

    }

}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdatePancakeSwapV2Router","type":"event"},{"inputs":[],"name":"BUSD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBackAndBurnWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAndInitiativesWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackAndBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketinAndInitiativeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeSwapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeSwapV2Router","outputs":[{"internalType":"contract IPancakeSwapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousBuyBackAndBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousMarketinAndInitiativeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restoreAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setBuyBackFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setBuyBackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updatePancakeSwapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069d3c21bcecceda10000006009556002600a556004600b556004600c55600a54600d55600b54600e55600c54600f5573e9e7cea3dedca5984780bafc599bd69add087d56601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073645b49884208bbea11e49da8169ae8389d860295601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0d23a0b33bdb05938976a7567ff5e4f53985f9e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200018257600080fd5b506040518060400160405280600681526020017f4e465465657a00000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f244e465465657a000000000000000000000000000000000000000000000000008152508160039080519060200190620002079291906200105b565b508060049080519060200190620002209291906200105b565b505050600062000235620005eb60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000731b7494fbd632ddb0953ecaf6c87d90a2a9b9f3ef905060007310ed43c718714eb63d5aa57b78b54704e256024e905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034f57600080fd5b505afa15801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a919062001122565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ed57600080fd5b505afa15801562000402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000428919062001122565b6040518363ffffffff1660e01b815260040162000447929190620012bf565b602060405180830381600087803b1580156200046257600080fd5b505af115801562000477573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049d919062001122565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000534816001620005f360201b60201c565b6200055973645b49884208bbea11e49da8169ae8389d8602956200072a60201b60201c565b6200057e73b0d23a0b33bdb05938976a7567ff5e4f53985f9e620008c660201b60201c565b6200059183600162000a6260201b60201c565b620005a430600162000a6260201b60201c565b620005b58362000c4560201b60201c565b620005e2620005c962000e1a60201b60201c565b6b204fce5e3e2502611000000062000e4460201b60201c565b505050620017a7565b600033905090565b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068090620013d5565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200073a620005eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c390620013b3565b60405180910390fd5b620007dc62000e1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000844906200134d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008c3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a6260201b60201c565b50565b620008d6620005eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200095f90620013b3565b60405180910390fd5b6200097862000e1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620009e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e09062001309565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000a5f601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a6260201b60201c565b50565b62000a72620005eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afb90620013b3565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b91906200132b565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000c399190620012ec565b60405180910390a25050565b62000c55620005eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000ce7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cde90620013b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d51906200136f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000eb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000eae90620013f7565b60405180910390fd5b62000ecb6000838362000ff360201b60201c565b62000ee78160025462000ff860201b620021681790919060201c565b60028190555062000f45816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000ff860201b620021681790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000fe7919062001419565b60405180910390a35050565b505050565b600080828462001009919062001447565b90508381101562001051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010489062001391565b60405180910390fd5b8091505092915050565b8280546200106990620014ee565b90600052602060002090601f0160209004810192826200108d5760008555620010d9565b82601f10620010a857805160ff1916838001178555620010d9565b82800160010185558215620010d9579182015b82811115620010d8578251825591602001919060010190620010bb565b5b509050620010e89190620010ec565b5090565b5b8082111562001107576000816000905550600101620010ed565b5090565b6000815190506200111c816200178d565b92915050565b6000602082840312156200113b576200113a62001582565b5b60006200114b848285016200110b565b91505092915050565b6200115f81620014a4565b82525050565b6200117081620014b8565b82525050565b600062001185602c8362001436565b9150620011928262001587565b604082019050919050565b6000620011ac60328362001436565b9150620011b982620015d6565b604082019050919050565b6000620011d360248362001436565b9150620011e08262001625565b604082019050919050565b6000620011fa60268362001436565b9150620012078262001674565b604082019050919050565b600062001221601b8362001436565b91506200122e82620016c3565b602082019050919050565b60006200124860208362001436565b91506200125582620016ec565b602082019050919050565b60006200126f60408362001436565b91506200127c8262001715565b604082019050919050565b600062001296601f8362001436565b9150620012a38262001764565b602082019050919050565b620012b981620014e4565b82525050565b6000604082019050620012d6600083018562001154565b620012e5602083018462001154565b9392505050565b600060208201905062001303600083018462001165565b92915050565b60006020820190508181036000830152620013248162001176565b9050919050565b6000602082019050818103600083015262001346816200119d565b9050919050565b600060208201905081810360008301526200136881620011c4565b9050919050565b600060208201905081810360008301526200138a81620011eb565b9050919050565b60006020820190508181036000830152620013ac8162001212565b9050919050565b60006020820190508181036000830152620013ce8162001239565b9050919050565b60006020820190508181036000830152620013f08162001260565b9050919050565b60006020820190508181036000830152620014128162001287565b9050919050565b6000602082019050620014306000830184620012ae565b92915050565b600082825260208201905092915050565b60006200145482620014e4565b91506200146183620014e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001499576200149862001524565b5b828201905092915050565b6000620014b182620014c4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200150757607f821691505b602082108114156200151e576200151d62001553565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f427574206261636b20616e64206275726e2077616c6c65742063616e6e6f742060008201527f626520746865206f776e65720000000000000000000000000000000000000000602082015250565b7f4e465465657a3a204163636f756e7420697320616c726561647920746865207660008201527f616c7565206f6620276578636c75646564270000000000000000000000000000602082015250565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865206f60008201527f776e657200000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e465465657a3a204175746f6d61746564206d61726b6574206d616b6572207060008201527f61697220697320616c72656164792073657420746f20746861742076616c7565602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6200179881620014a4565b8114620017a457600080fd5b50565b614dac80620017b76000396000f3fe60806040526004361061023f5760003560e01c806385141a771161012e578063b62496f5116100ab578063e2f456051161006f578063e2f4560514610884578063e5974196146108af578063f0dbd3c4146108d8578063f2fde38b14610903578063fea1319f1461092c57610246565b8063b62496f51461078d578063c0246668146107ca578063c492f046146107f3578063ce3c7e311461081c578063dd62ed3e1461084757610246565b8063a457c2d7116100f2578063a457c2d7146106a8578063a4640b82146106e5578063a9059cbb1461070e578063b5803e2a1461074b578063b61a95391461076257610246565b806385141a77146105d35780638da5cb5b146105fe57806395d89b411461062957806398118cb4146106545780639a7a23d61461067f57610246565b806339509351116101bc5780636b130f9a116101805780636b130f9a146105125780636e70c7b71461052957806370a0823114610554578063715018a614610591578063731a77eb146105a857610246565b8063395093511461041b578063484f4ea9146104585780634fbee193146104835780635d098b38146104c0578063625e764c146104e957610246565b806318160ddd1161020357806318160ddd1461033457806323b872dd1461035f5780632fdc1cf11461039c578063313ce567146103c7578063357bf15c146103f257610246565b806306fdde031461024b578063092fde8714610276578063095ea7b3146102a15780630cb3a23e146102de57806311a9785f1461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610955565b60405161026d9190614179565b60405180910390f35b34801561028257600080fd5b5061028b6109e7565b604051610298919061435b565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190613bcd565b6109ed565b6040516102d59190614143565b60405180910390f35b3480156102ea57600080fd5b506102f3610a0b565b6040516103009190614045565b60405180910390f35b34801561031557600080fd5b5061031e610a31565b60405161032b919061435b565b60405180910390f35b34801561034057600080fd5b50610349610a37565b604051610356919061435b565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613b3a565b610a41565b6040516103939190614143565b60405180910390f35b3480156103a857600080fd5b506103b1610b1a565b6040516103be919061435b565b60405180910390f35b3480156103d357600080fd5b506103dc610b20565b6040516103e99190614407565b60405180910390f35b3480156103fe57600080fd5b5061041960048036038101906104149190613c96565b610b29565b005b34801561042757600080fd5b50610442600480360381019061043d9190613bcd565b610bca565b60405161044f9190614143565b60405180910390f35b34801561046457600080fd5b5061046d610c7d565b60405161047a9190614045565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190613a73565b610ca3565b6040516104b79190614143565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190613acd565b610cf9565b005b3480156104f557600080fd5b50610510600480360381019061050b9190613c96565b610e77565b005b34801561051e57600080fd5b50610527610f18565b005b34801561053557600080fd5b5061053e610fc9565b60405161054b919061435b565b60405180910390f35b34801561056057600080fd5b5061057b60048036038101906105769190613a73565b610fcf565b604051610588919061435b565b60405180910390f35b34801561059d57600080fd5b506105a6611017565b005b3480156105b457600080fd5b506105bd61116f565b6040516105ca919061415e565b60405180910390f35b3480156105df57600080fd5b506105e8611195565b6040516105f59190614045565b60405180910390f35b34801561060a57600080fd5b506106136111bb565b6040516106209190614045565b60405180910390f35b34801561063557600080fd5b5061063e6111e5565b60405161064b9190614179565b60405180910390f35b34801561066057600080fd5b50610669611277565b604051610676919061435b565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190613b8d565b61127d565b005b3480156106b457600080fd5b506106cf60048036038101906106ca9190613bcd565b6113b3565b6040516106dc9190614143565b60405180910390f35b3480156106f157600080fd5b5061070c60048036038101906107079190613acd565b611480565b005b34801561071a57600080fd5b5061073560048036038101906107309190613bcd565b6115fe565b6040516107429190614143565b60405180910390f35b34801561075757600080fd5b5061076061161c565b005b34801561076e57600080fd5b506107776116d0565b6040516107849190614045565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613a73565b6116f6565b6040516107c19190614143565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613b8d565b611716565b005b3480156107ff57600080fd5b5061081a60048036038101906108159190613c0d565b6118e9565b005b34801561082857600080fd5b50610831611a4e565b60405161083e9190614045565b60405180910390f35b34801561085357600080fd5b5061086e60048036038101906108699190613afa565b611a74565b60405161087b919061435b565b60405180910390f35b34801561089057600080fd5b50610899611afb565b6040516108a6919061435b565b60405180910390f35b3480156108bb57600080fd5b506108d660048036038101906108d19190613a73565b611b01565b005b3480156108e457600080fd5b506108ed611efa565b6040516108fa919061435b565b60405180910390f35b34801561090f57600080fd5b5061092a60048036038101906109259190613a73565b611f00565b005b34801561093857600080fd5b50610953600480360381019061094e9190613c96565b6120c7565b005b606060038054610964906146bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610990906146bf565b80156109dd5780601f106109b2576101008083540402835291602001916109dd565b820191906000526020600020905b8154815290600101906020018083116109c057829003601f168201915b5050505050905090565b600e5481565b6000610a016109fa6121c6565b84846121ce565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000600254905090565b6000610a4e848484612399565b610b0f84610a5a6121c6565b610b0a85604051806060016040528060288152602001614d2a60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ac06121c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b9092919063ffffffff16565b6121ce565b600190509392505050565b600d5481565b60006012905090565b610b316121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb7906142bb565b60405180910390fd5b80600a8190555050565b6000610c73610bd76121c6565b84610c6e8560016000610be86121c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461216890919063ffffffff16565b6121ce565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d016121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d87906142bb565b60405180910390fd5b610d986111bb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd906141fb565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e74601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611716565b50565b610e7f6121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f05906142bb565b60405180910390fd5b80600b8190555050565b610f206121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa6906142bb565b60405180910390fd5b6000600a819055506000600b819055506000600c81905550565b600f5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101f6121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a5906142bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546111f4906146bf565b80601f0160208091040260200160405190810160405280929190818152602001828054611220906146bf565b801561126d5780601f106112425761010080835404028352916020019161126d565b820191906000526020600020905b81548152906001019060200180831161125057829003601f168201915b5050505050905090565b600a5481565b6112856121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130b906142bb565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c9061427b565b60405180910390fd5b6113af82826128bf565b5050565b60006114766113c06121c6565b8461147185604051806060016040528060258152602001614d5260259139600160006113ea6121c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b9092919063ffffffff16565b6121ce565b6001905092915050565b6114886121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906142bb565b60405180910390fd5b61151f6111bb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611584906141bb565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115fb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611716565b50565b600061161261160b6121c6565b8484612399565b6001905092915050565b6116246121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906142bb565b60405180910390fd5b600d54600a81905550600e54600b81905550600f54600c81905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b61171e6121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a4906142bb565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611840576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611837906141db565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118dd9190614143565b60405180910390a25050565b6118f16121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906142bb565b60405180910390fd5b60005b8251811015611a105781601360008584815181106119a4576119a36147f8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a0890614722565b915050611983565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358282604051611a42929190614113565b60405180910390a15050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611b096121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f906142bb565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c20906142db565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f34bd3ad95c838494171d0cb488956d44efaa30bc98eaa86da70f7ab15b77beaf60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5057600080fd5b505afa158015611d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d889190613aa0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0c57600080fd5b505afa158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e449190613aa0565b6040518363ffffffff1660e01b8152600401611e61929190614060565b602060405180830381600087803b158015611e7b57600080fd5b505af1158015611e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb39190613aa0565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b611f086121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e906142bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe9061421b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120cf6121c6565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612155906142bb565b60405180910390fd5b80600c8190555050565b600080828461217791906144c8565b9050838110156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39061425b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561223e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122359061431b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a59061423b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161238c919061435b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612409576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612400906142fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612479576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124709061419b565b60405180910390fd5b60008114156124935761248e838360006129f3565b612856565b600061249e30610fcf565b9050600060095482101590508080156124c45750600760149054906101000a900460ff16155b801561251a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561255957506125296111bb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561259857506125686111bb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126a3576001600760146101000a81548160ff02191690831515021790555060006125e5600c546125d7600b54600a5461216890919063ffffffff16565b61216890919063ffffffff16565b9050600061261082612602600a5487612c8890919063ffffffff16565b612d0390919063ffffffff16565b905061261b81612d4d565b600061264483612636600b5488612c8890919063ffffffff16565b612d0390919063ffffffff16565b905061264f81612ded565b60006126788461266a600c5489612c8890919063ffffffff16565b612d0390919063ffffffff16565b90506126838161303d565b6000600760146101000a81548160ff021916908315150217905550505050505b6000600760149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127595750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561276357600090505b8015612847576000612796600c54612788600b54600a5461216890919063ffffffff16565b61216890919063ffffffff16565b9050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127fa576001816127f791906144c8565b90505b600061282260646128148489612c8890919063ffffffff16565b612d0390919063ffffffff16565b9050612837818761328d90919063ffffffff16565b95506128448830836129f3565b50505b6128528686866129f3565b5050505b505050565b60008383111582906128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a9190614179565b60405180910390fd5b50600083856128b291906145a9565b9050809150509392505050565b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612952576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129499061433b565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5a906142fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca9061419b565b60405180910390fd5b612ade8383836132d7565b612b4981604051806060016040528060268152602001614d04602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bdc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461216890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c7b919061435b565b60405180910390a3505050565b600080831415612c9b5760009050612cfd565b60008284612ca9919061454f565b9050828482612cb8919061451e565b14612cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cef9061429b565b60405180910390fd5b809150505b92915050565b6000612d4583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132dc565b905092915050565b6000612d63600283612d0390919063ffffffff16565b90506000612d7a828461328d90919063ffffffff16565b90506000479050612d8a8361333f565b6000612d9f824761328d90919063ffffffff16565b9050612dab8382613591565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612dde939291906143d0565b60405180910390a15050505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612e4a9190614045565b60206040518083038186803b158015612e6257600080fd5b505afa158015612e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9a9190613cc3565b9050612ea58261367f565b6000612f6482601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f069190614045565b60206040518083038186803b158015612f1e57600080fd5b505afa158015612f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f569190613cc3565b61328d90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612fe5929190614089565b602060405180830381600087803b158015612fff57600080fd5b505af1158015613013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130379190613c69565b50505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161309a9190614045565b60206040518083038186803b1580156130b257600080fd5b505afa1580156130c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ea9190613cc3565b90506130f58261367f565b60006131b482601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016131569190614045565b60206040518083038186803b15801561316e57600080fd5b505afa158015613182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a69190613cc3565b61328d90919063ffffffff16565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401613235929190614089565b602060405180830381600087803b15801561324f57600080fd5b505af1158015613263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132879190613c69565b50505050565b60006132cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061285b565b905092915050565b505050565b60008083118290613323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331a9190614179565b60405180910390fd5b5060008385613332919061451e565b9050809150509392505050565b6000600267ffffffffffffffff81111561335c5761335b614827565b5b60405190808252806020026020018201604052801561338a5781602001602082028036833780820191505090505b50905030816000815181106133a2576133a16147f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561344457600080fd5b505afa158015613458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347c9190613aa0565b816001815181106134905761348f6147f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506134f730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121ce565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161355b959493929190614376565b600060405180830381600087803b15801561357557600080fd5b505af1158015613589573d6000803e3d6000fd5b505050505050565b6135be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121ce565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806000426040518863ffffffff1660e01b8152600401613626969594939291906140b2565b6060604051808303818588803b15801561363f57600080fd5b505af1158015613653573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136789190613cf0565b5050505050565b6000600367ffffffffffffffff81111561369c5761369b614827565b5b6040519080825280602002602001820160405280156136ca5781602001602082028036833780820191505090505b50905030816000815181106136e2576136e16147f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561378457600080fd5b505afa158015613798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bc9190613aa0565b816001815181106137d0576137cf6147f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110613841576138406147f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138a830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121ce565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b815260040161390c959493929190614376565b600060405180830381600087803b15801561392657600080fd5b505af115801561393a573d6000803e3d6000fd5b505050505050565b600061395561395084614447565b614422565b905080838252602082019050828560208602820111156139785761397761485b565b5b60005b858110156139a8578161398e88826139b2565b84526020840193506020830192505060018101905061397b565b5050509392505050565b6000813590506139c181614ca7565b92915050565b6000815190506139d681614ca7565b92915050565b6000813590506139eb81614cbe565b92915050565b600082601f830112613a0657613a05614856565b5b8135613a16848260208601613942565b91505092915050565b600081359050613a2e81614cd5565b92915050565b600081519050613a4381614cd5565b92915050565b600081359050613a5881614cec565b92915050565b600081519050613a6d81614cec565b92915050565b600060208284031215613a8957613a88614865565b5b6000613a97848285016139b2565b91505092915050565b600060208284031215613ab657613ab5614865565b5b6000613ac4848285016139c7565b91505092915050565b600060208284031215613ae357613ae2614865565b5b6000613af1848285016139dc565b91505092915050565b60008060408385031215613b1157613b10614865565b5b6000613b1f858286016139b2565b9250506020613b30858286016139b2565b9150509250929050565b600080600060608486031215613b5357613b52614865565b5b6000613b61868287016139b2565b9350506020613b72868287016139b2565b9250506040613b8386828701613a49565b9150509250925092565b60008060408385031215613ba457613ba3614865565b5b6000613bb2858286016139b2565b9250506020613bc385828601613a1f565b9150509250929050565b60008060408385031215613be457613be3614865565b5b6000613bf2858286016139b2565b9250506020613c0385828601613a49565b9150509250929050565b60008060408385031215613c2457613c23614865565b5b600083013567ffffffffffffffff811115613c4257613c41614860565b5b613c4e858286016139f1565b9250506020613c5f85828601613a1f565b9150509250929050565b600060208284031215613c7f57613c7e614865565b5b6000613c8d84828501613a34565b91505092915050565b600060208284031215613cac57613cab614865565b5b6000613cba84828501613a49565b91505092915050565b600060208284031215613cd957613cd8614865565b5b6000613ce784828501613a5e565b91505092915050565b600080600060608486031215613d0957613d08614865565b5b6000613d1786828701613a5e565b9350506020613d2886828701613a5e565b9250506040613d3986828701613a5e565b9150509250925092565b6000613d4f8383613d5b565b60208301905092915050565b613d64816145dd565b82525050565b613d73816145dd565b82525050565b6000613d8482614483565b613d8e81856144a6565b9350613d9983614473565b8060005b83811015613dca578151613db18882613d43565b9750613dbc83614499565b925050600181019050613d9d565b5085935050505092915050565b613de081614601565b82525050565b613def81614644565b82525050565b613dfe81614656565b82525050565b6000613e0f8261448e565b613e1981856144b7565b9350613e2981856020860161468c565b613e328161486a565b840191505092915050565b6000613e4a6023836144b7565b9150613e558261487b565b604082019050919050565b6000613e6d602c836144b7565b9150613e78826148ca565b604082019050919050565b6000613e906032836144b7565b9150613e9b82614919565b604082019050919050565b6000613eb36024836144b7565b9150613ebe82614968565b604082019050919050565b6000613ed66026836144b7565b9150613ee1826149b7565b604082019050919050565b6000613ef96022836144b7565b9150613f0482614a06565b604082019050919050565b6000613f1c601b836144b7565b9150613f2782614a55565b602082019050919050565b6000613f3f604d836144b7565b9150613f4a82614a7e565b606082019050919050565b6000613f626021836144b7565b9150613f6d82614af3565b604082019050919050565b6000613f856020836144b7565b9150613f9082614b42565b602082019050919050565b6000613fa8602b836144b7565b9150613fb382614b6b565b604082019050919050565b6000613fcb6025836144b7565b9150613fd682614bba565b604082019050919050565b6000613fee6024836144b7565b9150613ff982614c09565b604082019050919050565b60006140116040836144b7565b915061401c82614c58565b604082019050919050565b6140308161462d565b82525050565b61403f81614637565b82525050565b600060208201905061405a6000830184613d6a565b92915050565b60006040820190506140756000830185613d6a565b6140826020830184613d6a565b9392505050565b600060408201905061409e6000830185613d6a565b6140ab6020830184614027565b9392505050565b600060c0820190506140c76000830189613d6a565b6140d46020830188614027565b6140e16040830187613df5565b6140ee6060830186613df5565b6140fb6080830185613d6a565b61410860a0830184614027565b979650505050505050565b6000604082019050818103600083015261412d8185613d79565b905061413c6020830184613dd7565b9392505050565b60006020820190506141586000830184613dd7565b92915050565b60006020820190506141736000830184613de6565b92915050565b600060208201905081810360008301526141938184613e04565b905092915050565b600060208201905081810360008301526141b481613e3d565b9050919050565b600060208201905081810360008301526141d481613e60565b9050919050565b600060208201905081810360008301526141f481613e83565b9050919050565b6000602082019050818103600083015261421481613ea6565b9050919050565b6000602082019050818103600083015261423481613ec9565b9050919050565b6000602082019050818103600083015261425481613eec565b9050919050565b6000602082019050818103600083015261427481613f0f565b9050919050565b6000602082019050818103600083015261429481613f32565b9050919050565b600060208201905081810360008301526142b481613f55565b9050919050565b600060208201905081810360008301526142d481613f78565b9050919050565b600060208201905081810360008301526142f481613f9b565b9050919050565b6000602082019050818103600083015261431481613fbe565b9050919050565b6000602082019050818103600083015261433481613fe1565b9050919050565b6000602082019050818103600083015261435481614004565b9050919050565b60006020820190506143706000830184614027565b92915050565b600060a08201905061438b6000830188614027565b6143986020830187613df5565b81810360408301526143aa8186613d79565b90506143b96060830185613d6a565b6143c66080830184614027565b9695505050505050565b60006060820190506143e56000830186614027565b6143f26020830185614027565b6143ff6040830184614027565b949350505050565b600060208201905061441c6000830184614036565b92915050565b600061442c61443d565b905061443882826146f1565b919050565b6000604051905090565b600067ffffffffffffffff82111561446257614461614827565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006144d38261462d565b91506144de8361462d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145135761451261476b565b5b828201905092915050565b60006145298261462d565b91506145348361462d565b9250826145445761454361479a565b5b828204905092915050565b600061455a8261462d565b91506145658361462d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459e5761459d61476b565b5b828202905092915050565b60006145b48261462d565b91506145bf8361462d565b9250828210156145d2576145d161476b565b5b828203905092915050565b60006145e88261460d565b9050919050565b60006145fa8261460d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061464f82614668565b9050919050565b60006146618261462d565b9050919050565b60006146738261467a565b9050919050565b60006146858261460d565b9050919050565b60005b838110156146aa57808201518184015260208101905061468f565b838111156146b9576000848401525b50505050565b600060028204905060018216806146d757607f821691505b602082108114156146eb576146ea6147c9565b5b50919050565b6146fa8261486a565b810181811067ffffffffffffffff8211171561471957614718614827565b5b80604052505050565b600061472d8261462d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147605761475f61476b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f427574206261636b20616e64206275726e2077616c6c65742063616e6e6f742060008201527f626520746865206f776e65720000000000000000000000000000000000000000602082015250565b7f4e465465657a3a204163636f756e7420697320616c726561647920746865207660008201527f616c7565206f6620276578636c75646564270000000000000000000000000000602082015250565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865206f60008201527f776e657200000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4e465465657a3a205468652050616e63616b655377617020706169722063616e60008201527f6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d617260208201527f6b65744d616b6572506169727300000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e465465657a3a2054686520726f7574657220616c726561647920686173207460008201527f6861742061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4e465465657a3a204175746f6d61746564206d61726b6574206d616b6572207060008201527f61697220697320616c72656164792073657420746f20746861742076616c7565602082015250565b614cb0816145dd565b8114614cbb57600080fd5b50565b614cc7816145ef565b8114614cd257600080fd5b50565b614cde81614601565b8114614ce957600080fd5b50565b614cf58161462d565b8114614d0057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207bd7fca3360e60be6eec2d41dc7ebfef4a0727b66dbca53770e9b3efb652d0e364736f6c63430008070033

Deployed ByteCode Sourcemap

34526:11931:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25895:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35061:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28062:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35302:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34909:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27015:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28713:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35004:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26857:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39523:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29477:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35211:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40845:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38955:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39628:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40453:150;;;;;;;;;;;;;:::i;:::-;;35142:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27186:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10257:148;;;;;;;;;;;;;:::i;:::-;;34602:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34729:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9615:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26114:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34871:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39853:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30198:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39245:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27526:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40611:226;;;;;;;;;;;;;:::i;:::-;;34658:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35768:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38339:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38645:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35406:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27764:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34808:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37783:548;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34959:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10560:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39745:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25895;25949:13;25982:5;25975:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25895:100;:::o;35061:74::-;;;;:::o;28062:169::-;28145:4;28162:39;28171:12;:10;:12::i;:::-;28185:7;28194:6;28162:8;:39::i;:::-;28219:4;28212:11;;28062:169;;;;:::o;35302:97::-;;;;;;;;;;;;;:::o;34909:43::-;;;;:::o;27015:108::-;27076:7;27103:12;;27096:19;;27015:108;:::o;28713:355::-;28853:4;28870:36;28880:6;28888:9;28899:6;28870:9;:36::i;:::-;28917:121;28926:6;28934:12;:10;:12::i;:::-;28948:89;28986:6;28948:89;;;;;;;;;;;;;;;;;:11;:19;28960:6;28948:19;;;;;;;;;;;;;;;:33;28968:12;:10;:12::i;:::-;28948:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;28917:8;:121::i;:::-;29056:4;29049:11;;28713:355;;;;;:::o;35004:50::-;;;;:::o;26857:93::-;26915:5;26940:2;26933:9;;26857:93;:::o;39523:97::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39607:5:::1;39592:12;:20;;;;39523:97:::0;:::o;29477:218::-;29565:4;29582:83;29591:12;:10;:12::i;:::-;29605:7;29614:50;29653:10;29614:11;:25;29626:12;:10;:12::i;:::-;29614:25;;;;;;;;;;;;;;;:34;29640:7;29614:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;29582:8;:83::i;:::-;29683:4;29676:11;;29477:218;;;;:::o;35211:64::-;;;;;;;;;;;;;:::o;40845:125::-;40910:4;40934:19;:28;40954:7;40934:28;;;;;;;;;;;;;;;;;;;;;;;;;40927:35;;40845:125;;;:::o;38955:282::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39053:7:::1;:5;:7::i;:::-;39043:17;;:6;:17;;;;39035:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;39152:6;39112:37;;:46;;;;;;;;;;;;;;;;;;39169:60;39185:37;;;;;;;;;;;39224:4;39169:15;:60::i;:::-;38955:282:::0;:::o;39628:109::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39724:5:::1;39697:24;:32;;;;39628:109:::0;:::o;40453:150::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40521:1:::1;40506:12;:16;;;;40560:1;40533:24;:28;;;;40592:1;40572:17;:21;;;;40453:150::o:0;35142:60::-;;;;:::o;27186:127::-;27260:7;27287:9;:18;27297:7;27287:18;;;;;;;;;;;;;;;;27280:25;;27186:127;;;:::o;10257:148::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10364:1:::1;10327:40;;10348:6;;;;;;;;;;;10327:40;;;;;;;;;;;;10395:1;10378:6;;:19;;;;;;;;;;;;;;;;;;10257:148::o:0;34602:49::-;;;;;;;;;;;;;:::o;34729:70::-;;;;;;;;;;;;;:::o;9615:79::-;9653:7;9680:6;;;;;;;;;;;9673:13;;9615:79;:::o;26114:104::-;26170:13;26203:7;26196:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26114:104;:::o;34871:31::-;;;;:::o;39853:268::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39960:17:::1;;;;;;;;;;;39952:25;;:4;:25;;;;39944:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;40072:41;40101:4;40107:5;40072:28;:41::i;:::-;39853:268:::0;;:::o;30198:269::-;30291:4;30308:129;30317:12;:10;:12::i;:::-;30331:7;30340:96;30379:15;30340:96;;;;;;;;;;;;;;;;;:11;:25;30352:12;:10;:12::i;:::-;30340:25;;;;;;;;;;;;;;;:34;30366:7;30340:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;30308:8;:129::i;:::-;30455:4;30448:11;;30198:269;;;;:::o;39245:270::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39341:7:::1;:5;:7::i;:::-;39331:17;;:6;:17;;;;39323:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;39439:6;39408:28;;:37;;;;;;;;;;;;;;;;;;39456:51;39472:28;;;;;;;;;;;39502:4;39456:15;:51::i;:::-;39245:270:::0;:::o;27526:175::-;27612:4;27629:42;27639:12;:10;:12::i;:::-;27653:9;27664:6;27629:9;:42::i;:::-;27689:4;27682:11;;27526:175;;;;:::o;40611:226::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40681:20:::1;;40666:12;:35;;;;40739:32;;40712:24;:59;;;;40802:25;;40782:17;:45;;;;40611:226::o:0;34658:32::-;;;;;;;;;;;;;:::o;35768:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;38339:298::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38464:8:::1;38432:40;;:19;:28;38452:7;38432:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;38424:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;38569:8;38538:19;:28;38558:7;38538:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38611:7;38595:34;;;38620:8;38595:34;;;;;;:::i;:::-;;;;;;;;38339:298:::0;;:::o;38645:302::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38760:9:::1;38756:115;38779:8;:15;38775:1;:19;38756:115;;;38851:8;38816:19;:32;38836:8;38845:1;38836:11;;;;;;;;:::i;:::-;;;;;;;;38816:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;38796:3;;;;;:::i;:::-;;;;38756:115;;;;38888:51;38920:8;38930;38888:51;;;;;;;:::i;:::-;;;;;;;;38645:302:::0;;:::o;35406:88::-;;;;;;;;;;;;;:::o;27764:151::-;27853:7;27880:11;:18;27892:5;27880:18;;;;;;;;;;;;;;;:27;27899:7;27880:27;;;;;;;;;;;;;;;;27873:34;;27764:151;;;;:::o;34808:54::-;;;;:::o;37783:548::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37896:19:::1;;;;;;;;;;;37874:42;;:10;:42;;;;37866:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38026:19;;;;;;;;;;;37980:67;;38006:10;37980:67;;;;;;;;;;;;38103:10;38058:19;;:56;;;;;;;;;;;;;;;;;;38125:26;38176:19;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38154:77;;;38240:4;38247:19;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38154:120;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38125:149;;38305:18;38285:17;;:38;;;;;;;;;;;;;;;;;;37855:476;37783:548:::0;:::o;34959:36::-;;;;:::o;10560:244::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10669:1:::1;10649:22;;:8;:22;;;;10641:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10759:8;10730:38;;10751:6;;;;;;;;;;;10730:38;;;;;;;;;;;;10788:8;10779:6;;:17;;;;;;;;;;;;;;;;;;10560:244:::0;:::o;39745:100::-;9837:12;:10;:12::i;:::-;9827:22;;:6;;;;;;;;;;;:22;;;9819:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39832:5:::1;39812:17;:25;;;;39745:100:::0;:::o;3742:181::-;3800:7;3820:9;3836:1;3832;:5;;;;:::i;:::-;3820:17;;3861:1;3856;:6;;3848:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3914:1;3907:8;;;3742:181;;;;:::o;8768:98::-;8821:7;8848:10;8841:17;;8768:98;:::o;33384:380::-;33537:1;33520:19;;:5;:19;;;;33512:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33618:1;33599:21;;:7;:21;;;;33591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33702:6;33672:11;:18;33684:5;33672:18;;;;;;;;;;;;;;;:27;33691:7;33672:27;;;;;;;;;;;;;;;:36;;;;33740:7;33724:32;;33733:5;33724:32;;;33749:6;33724:32;;;;;;:::i;:::-;;;;;;;;33384:380;;;:::o;40978:1957::-;41126:1;41110:18;;:4;:18;;;;41102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41203:1;41189:16;;:2;:16;;;;41181:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;41265:1;41255:6;:11;41252:92;;;41283:28;41299:4;41305:2;41309:1;41283:15;:28::i;:::-;41326:7;;41252:92;41350:28;41381:24;41399:4;41381:9;:24::i;:::-;41350:55;;41418:12;41457:18;;41433:20;:42;;41418:57;;41492:7;:33;;;;;41517:8;;;;;;;;;;;41516:9;41492:33;:82;;;;;41543:25;:31;41569:4;41543:31;;;;;;;;;;;;;;;;;;;;;;;;;41542:32;41492:82;:114;;;;;41599:7;:5;:7::i;:::-;41591:15;;:4;:15;;;;41492:114;:144;;;;;41629:7;:5;:7::i;:::-;41623:13;;:2;:13;;;;41492:144;41488:788;;;41674:4;41663:8;;:15;;;;;;;;;;;;;;;;;;41707:17;41727:65;41774:17;;41727:42;41744:24;;41727:12;;:16;;:42;;;;:::i;:::-;:46;;:65;;;;:::i;:::-;41707:85;;41809:18;41830:53;41873:9;41830:38;41855:12;;41830:20;:24;;:38;;;;:::i;:::-;:42;;:53;;;;:::i;:::-;41809:74;;41898:26;41913:10;41898:14;:26::i;:::-;41941:23;41967:65;42022:9;41967:50;41992:24;;41967:20;:24;;:50;;;;:::i;:::-;:54;;:65;;;;:::i;:::-;41941:91;;42047:37;42068:15;42047:20;:37::i;:::-;42101:21;42125:58;42173:9;42125:43;42150:17;;42125:20;:24;;:43;;;;:::i;:::-;:47;;:58;;;;:::i;:::-;42101:82;;42198:33;42217:13;42198:18;:33::i;:::-;42259:5;42248:8;;:16;;;;;;;;;;;;;;;;;;41648:628;;;;41488:788;42288:12;42304:8;;;;;;;;;;;42303:9;42288:24;;42413:19;:25;42433:4;42413:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;42442:19;:23;42462:2;42442:23;;;;;;;;;;;;;;;;;;;;;;;;;42413:52;42410:99;;;42492:5;42482:15;;42410:99;42524:7;42521:359;;;42548:18;42569:65;42616:17;;42569:42;42586:24;;42569:12;;:16;;:42;;;;:::i;:::-;:46;;:65;;;;:::i;:::-;42548:86;;42651:25;:29;42677:2;42651:29;;;;;;;;;;;;;;;;;;;;;;;;;42648:69;;;42703:1;42689:15;;;;;:::i;:::-;;;42648:69;42724:12;42739:31;42766:3;42739:22;42750:10;42739:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;42724:46;;42793:16;42804:4;42793:6;:10;;:16;;;;:::i;:::-;42784:25;;42826:42;42842:4;42856;42863;42826:15;:42::i;:::-;42533:347;;42521:359;42892:33;42908:4;42914:2;42918:6;42892:15;:33::i;:::-;41091:1844;;;40978:1957;;;;:::o;4645:192::-;4731:7;4764:1;4759;:6;;4767:12;4751:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4791:9;4807:1;4803;:5;;;;:::i;:::-;4791:17;;4828:1;4821:8;;;4645:192;;;;;:::o;40129:316::-;40255:5;40220:40;;:25;:31;40246:4;40220:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;40212:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;40374:5;40340:25;:31;40366:4;40340:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;40431:5;40397:40;;40425:4;40397:40;;;;;;;;;;;;40129:316;;:::o;30957:573::-;31115:1;31097:20;;:6;:20;;;;31089:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;31199:1;31178:23;;:9;:23;;;;31170:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31254:47;31275:6;31283:9;31294:6;31254:20;:47::i;:::-;31334:71;31356:6;31334:71;;;;;;;;;;;;;;;;;:9;:17;31344:6;31334:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;31314:9;:17;31324:6;31314:17;;;;;;;;;;;;;;;:91;;;;31439:32;31464:6;31439:9;:20;31449:9;31439:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;31416:9;:20;31426:9;31416:20;;;;;;;;;;;;;;;:55;;;;31504:9;31487:35;;31496:6;31487:35;;;31515:6;31487:35;;;;;;:::i;:::-;;;;;;;;30957:573;;;:::o;5096:471::-;5154:7;5404:1;5399;:6;5395:47;;;5429:1;5422:8;;;;5395:47;5454:9;5470:1;5466;:5;;;;:::i;:::-;5454:17;;5499:1;5494;5490;:5;;;;:::i;:::-;:10;5482:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5558:1;5551:8;;;5096:471;;;;;:::o;6043:132::-;6101:7;6128:39;6132:1;6135;6128:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6121:46;;6043:132;;;;:::o;42945:929::-;43057:12;43072:13;43083:1;43072:6;:10;;:13;;;;:::i;:::-;43057:28;;43096:17;43116:16;43127:4;43116:6;:10;;:16;;;;:::i;:::-;43096:36;;43410:22;43435:21;43410:46;;43501:22;43518:4;43501:16;:22::i;:::-;43654:18;43675:41;43701:14;43675:21;:25;;:41;;;;:::i;:::-;43654:62;;43770:35;43783:9;43794:10;43770:12;:35::i;:::-;43823:43;43838:4;43844:10;43856:9;43823:43;;;;;;;;:::i;:::-;;;;;;;;42993:881;;;;42945:929;:::o;45051:434::-;45118:22;45150:4;;;;;;;;;;;45143:22;;;45174:4;45143:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45118:62;;45226:25;45244:6;45226:17;:25::i;:::-;45314:18;45335:57;45377:14;45342:4;;;;;;;;;;;45335:22;;;45366:4;45335:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;45314:78;;45412:4;;;;;;;;;;;45405:21;;;45427:37;;;;;;;;;;;45466:10;45405:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45105:380;;45051:434;:::o;45493:423::-;45558:22;45590:4;;;;;;;;;;;45583:22;;;45614:4;45583:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45558:62;;45666:25;45684:6;45666:17;:25::i;:::-;45754:18;45775:57;45817:14;45782:4;;;;;;;;;;;45775:22;;;45806:4;45775:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;45754:78;;45852:4;;;;;;;;;;;45845:21;;;45867:28;;;;;;;;;;;45897:10;45845:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45545:371;;45493:423;:::o;4206:136::-;4264:7;4291:43;4295:1;4298;4291:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4284:50;;4206:136;;;;:::o;34367:125::-;;;;:::o;6671:278::-;6757:7;6789:1;6785;:5;6792:12;6777:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6816:9;6832:1;6828;:5;;;;:::i;:::-;6816:17;;6940:1;6933:8;;;6671:278;;;;;:::o;43882:607::-;44012:21;44050:1;44036:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44012:40;;44081:4;44063;44068:1;44063:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;44107:19;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44097:4;44102:1;44097:7;;;;;;;;:::i;:::-;;;;;;;:36;;;;;;;;;;;44146:66;44163:4;44178:19;;;;;;;;;;;44200:11;44146:8;:66::i;:::-;44251:19;;;;;;;;;;;:70;;;44336:11;44362:1;44406:4;44433;44453:15;44251:228;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43937:552;43882:607;:::o;45924:528::-;46074:66;46091:4;46106:19;;;;;;;;;;;46128:11;46074:8;:66::i;:::-;46183:19;;;;;;;;;;;:35;;;46226:9;46259:4;46279:11;46305:1;46348;46399;46416:15;46183:259;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;45924:528;;:::o;44497:544::-;44566:21;44604:1;44590:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44566:40;;44635:4;44617;44622:1;44617:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;44661:19;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44651:4;44656:1;44651:7;;;;;;;;:::i;:::-;;;;;;;:36;;;;;;;;;;;44708:4;;;;;;;;;;;44698;44703:1;44698:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;44725:66;44742:4;44757:19;;;;;;;;;;;44779:11;44725:8;:66::i;:::-;44830:19;;;;;;;;;;;:73;;;44918:11;44944:1;44960:4;44987;45007:15;44830:203;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44553:488;44497:544;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1046:155::-;1100:5;1138:6;1125:20;1116:29;;1154:41;1189:5;1154:41;:::i;:::-;1046:155;;;;:::o;1224:370::-;1295:5;1344:3;1337:4;1329:6;1325:17;1321:27;1311:122;;1352:79;;:::i;:::-;1311:122;1469:6;1456:20;1494:94;1584:3;1576:6;1569:4;1561:6;1557:17;1494:94;:::i;:::-;1485:103;;1301:293;1224:370;;;;:::o;1600:133::-;1643:5;1681:6;1668:20;1659:29;;1697:30;1721:5;1697:30;:::i;:::-;1600:133;;;;:::o;1739:137::-;1793:5;1824:6;1818:13;1809:22;;1840:30;1864:5;1840:30;:::i;:::-;1739:137;;;;:::o;1882:139::-;1928:5;1966:6;1953:20;1944:29;;1982:33;2009:5;1982:33;:::i;:::-;1882:139;;;;:::o;2027:143::-;2084:5;2115:6;2109:13;2100:22;;2131:33;2158:5;2131:33;:::i;:::-;2027:143;;;;:::o;2176:329::-;2235:6;2284:2;2272:9;2263:7;2259:23;2255:32;2252:119;;;2290:79;;:::i;:::-;2252:119;2410:1;2435:53;2480:7;2471:6;2460:9;2456:22;2435:53;:::i;:::-;2425:63;;2381:117;2176:329;;;;:::o;2511:351::-;2581:6;2630:2;2618:9;2609:7;2605:23;2601:32;2598:119;;;2636:79;;:::i;:::-;2598:119;2756:1;2781:64;2837:7;2828:6;2817:9;2813:22;2781:64;:::i;:::-;2771:74;;2727:128;2511:351;;;;:::o;2868:345::-;2935:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:119;;;2990:79;;:::i;:::-;2952:119;3110:1;3135:61;3188:7;3179:6;3168:9;3164:22;3135:61;:::i;:::-;3125:71;;3081:125;2868:345;;;;:::o;3219:474::-;3287:6;3295;3344:2;3332:9;3323:7;3319:23;3315:32;3312:119;;;3350:79;;:::i;:::-;3312:119;3470:1;3495:53;3540:7;3531:6;3520:9;3516:22;3495:53;:::i;:::-;3485:63;;3441:117;3597:2;3623:53;3668:7;3659:6;3648:9;3644:22;3623:53;:::i;:::-;3613:63;;3568:118;3219:474;;;;;:::o;3699:619::-;3776:6;3784;3792;3841:2;3829:9;3820:7;3816:23;3812:32;3809:119;;;3847:79;;:::i;:::-;3809:119;3967:1;3992:53;4037:7;4028:6;4017:9;4013:22;3992:53;:::i;:::-;3982:63;;3938:117;4094:2;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4065:118;4222:2;4248:53;4293:7;4284:6;4273:9;4269:22;4248:53;:::i;:::-;4238:63;;4193:118;3699:619;;;;;:::o;4324:468::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:50;4767:7;4758:6;4747:9;4743:22;4725:50;:::i;:::-;4715:60;;4670:115;4324:468;;;;;:::o;4798:474::-;4866:6;4874;4923:2;4911:9;4902:7;4898:23;4894:32;4891:119;;;4929:79;;:::i;:::-;4891:119;5049:1;5074:53;5119:7;5110:6;5099:9;5095:22;5074:53;:::i;:::-;5064:63;;5020:117;5176:2;5202:53;5247:7;5238:6;5227:9;5223:22;5202:53;:::i;:::-;5192:63;;5147:118;4798:474;;;;;:::o;5278:678::-;5368:6;5376;5425:2;5413:9;5404:7;5400:23;5396:32;5393:119;;;5431:79;;:::i;:::-;5393:119;5579:1;5568:9;5564:17;5551:31;5609:18;5601:6;5598:30;5595:117;;;5631:79;;:::i;:::-;5595:117;5736:78;5806:7;5797:6;5786:9;5782:22;5736:78;:::i;:::-;5726:88;;5522:302;5863:2;5889:50;5931:7;5922:6;5911:9;5907:22;5889:50;:::i;:::-;5879:60;;5834:115;5278:678;;;;;:::o;5962:345::-;6029:6;6078:2;6066:9;6057:7;6053:23;6049:32;6046:119;;;6084:79;;:::i;:::-;6046:119;6204:1;6229:61;6282:7;6273:6;6262:9;6258:22;6229:61;:::i;:::-;6219:71;;6175:125;5962:345;;;;:::o;6313:329::-;6372:6;6421:2;6409:9;6400:7;6396:23;6392:32;6389:119;;;6427:79;;:::i;:::-;6389:119;6547:1;6572:53;6617:7;6608:6;6597:9;6593:22;6572:53;:::i;:::-;6562:63;;6518:117;6313:329;;;;:::o;6648:351::-;6718:6;6767:2;6755:9;6746:7;6742:23;6738:32;6735:119;;;6773:79;;:::i;:::-;6735:119;6893:1;6918:64;6974:7;6965:6;6954:9;6950:22;6918:64;:::i;:::-;6908:74;;6864:128;6648:351;;;;:::o;7005:663::-;7093:6;7101;7109;7158:2;7146:9;7137:7;7133:23;7129:32;7126:119;;;7164:79;;:::i;:::-;7126:119;7284:1;7309:64;7365:7;7356:6;7345:9;7341:22;7309:64;:::i;:::-;7299:74;;7255:128;7422:2;7448:64;7504:7;7495:6;7484:9;7480:22;7448:64;:::i;:::-;7438:74;;7393:129;7561:2;7587:64;7643:7;7634:6;7623:9;7619:22;7587:64;:::i;:::-;7577:74;;7532:129;7005:663;;;;;:::o;7674:179::-;7743:10;7764:46;7806:3;7798:6;7764:46;:::i;:::-;7842:4;7837:3;7833:14;7819:28;;7674:179;;;;:::o;7859:108::-;7936:24;7954:5;7936:24;:::i;:::-;7931:3;7924:37;7859:108;;:::o;7973:118::-;8060:24;8078:5;8060:24;:::i;:::-;8055:3;8048:37;7973:118;;:::o;8127:732::-;8246:3;8275:54;8323:5;8275:54;:::i;:::-;8345:86;8424:6;8419:3;8345:86;:::i;:::-;8338:93;;8455:56;8505:5;8455:56;:::i;:::-;8534:7;8565:1;8550:284;8575:6;8572:1;8569:13;8550:284;;;8651:6;8645:13;8678:63;8737:3;8722:13;8678:63;:::i;:::-;8671:70;;8764:60;8817:6;8764:60;:::i;:::-;8754:70;;8610:224;8597:1;8594;8590:9;8585:14;;8550:284;;;8554:14;8850:3;8843:10;;8251:608;;;8127:732;;;;:::o;8865:109::-;8946:21;8961:5;8946:21;:::i;:::-;8941:3;8934:34;8865:109;;:::o;8980:191::-;9097:67;9158:5;9097:67;:::i;:::-;9092:3;9085:80;8980:191;;:::o;9177:147::-;9272:45;9311:5;9272:45;:::i;:::-;9267:3;9260:58;9177:147;;:::o;9330:364::-;9418:3;9446:39;9479:5;9446:39;:::i;:::-;9501:71;9565:6;9560:3;9501:71;:::i;:::-;9494:78;;9581:52;9626:6;9621:3;9614:4;9607:5;9603:16;9581:52;:::i;:::-;9658:29;9680:6;9658:29;:::i;:::-;9653:3;9649:39;9642:46;;9422:272;9330:364;;;;:::o;9700:366::-;9842:3;9863:67;9927:2;9922:3;9863:67;:::i;:::-;9856:74;;9939:93;10028:3;9939:93;:::i;:::-;10057:2;10052:3;10048:12;10041:19;;9700:366;;;:::o;10072:::-;10214:3;10235:67;10299:2;10294:3;10235:67;:::i;:::-;10228:74;;10311:93;10400:3;10311:93;:::i;:::-;10429:2;10424:3;10420:12;10413:19;;10072:366;;;:::o;10444:::-;10586:3;10607:67;10671:2;10666:3;10607:67;:::i;:::-;10600:74;;10683:93;10772:3;10683:93;:::i;:::-;10801:2;10796:3;10792:12;10785:19;;10444:366;;;:::o;10816:::-;10958:3;10979:67;11043:2;11038:3;10979:67;:::i;:::-;10972:74;;11055:93;11144:3;11055:93;:::i;:::-;11173:2;11168:3;11164:12;11157:19;;10816:366;;;:::o;11188:::-;11330:3;11351:67;11415:2;11410:3;11351:67;:::i;:::-;11344:74;;11427:93;11516:3;11427:93;:::i;:::-;11545:2;11540:3;11536:12;11529:19;;11188:366;;;:::o;11560:::-;11702:3;11723:67;11787:2;11782:3;11723:67;:::i;:::-;11716:74;;11799:93;11888:3;11799:93;:::i;:::-;11917:2;11912:3;11908:12;11901:19;;11560:366;;;:::o;11932:::-;12074:3;12095:67;12159:2;12154:3;12095:67;:::i;:::-;12088:74;;12171:93;12260:3;12171:93;:::i;:::-;12289:2;12284:3;12280:12;12273:19;;11932:366;;;:::o;12304:::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:::-;12818:3;12839:67;12903:2;12898:3;12839:67;:::i;:::-;12832:74;;12915:93;13004:3;12915:93;:::i;:::-;13033:2;13028:3;13024:12;13017:19;;12676:366;;;:::o;13048:::-;13190:3;13211:67;13275:2;13270:3;13211:67;:::i;:::-;13204:74;;13287:93;13376:3;13287:93;:::i;:::-;13405:2;13400:3;13396:12;13389:19;;13048:366;;;:::o;13420:::-;13562:3;13583:67;13647:2;13642:3;13583:67;:::i;:::-;13576:74;;13659:93;13748:3;13659:93;:::i;:::-;13777:2;13772:3;13768:12;13761:19;;13420:366;;;:::o;13792:::-;13934:3;13955:67;14019:2;14014:3;13955:67;:::i;:::-;13948:74;;14031:93;14120:3;14031:93;:::i;:::-;14149:2;14144:3;14140:12;14133:19;;13792:366;;;:::o;14164:::-;14306:3;14327:67;14391:2;14386:3;14327:67;:::i;:::-;14320:74;;14403:93;14492:3;14403:93;:::i;:::-;14521:2;14516:3;14512:12;14505:19;;14164:366;;;:::o;14536:::-;14678:3;14699:67;14763:2;14758:3;14699:67;:::i;:::-;14692:74;;14775:93;14864:3;14775:93;:::i;:::-;14893:2;14888:3;14884:12;14877:19;;14536:366;;;:::o;14908:118::-;14995:24;15013:5;14995:24;:::i;:::-;14990:3;14983:37;14908:118;;:::o;15032:112::-;15115:22;15131:5;15115:22;:::i;:::-;15110:3;15103:35;15032:112;;:::o;15150:222::-;15243:4;15281:2;15270:9;15266:18;15258:26;;15294:71;15362:1;15351:9;15347:17;15338:6;15294:71;:::i;:::-;15150:222;;;;:::o;15378:332::-;15499:4;15537:2;15526:9;15522:18;15514:26;;15550:71;15618:1;15607:9;15603:17;15594:6;15550:71;:::i;:::-;15631:72;15699:2;15688:9;15684:18;15675:6;15631:72;:::i;:::-;15378:332;;;;;:::o;15716:::-;15837:4;15875:2;15864:9;15860:18;15852:26;;15888:71;15956:1;15945:9;15941:17;15932:6;15888:71;:::i;:::-;15969:72;16037:2;16026:9;16022:18;16013:6;15969:72;:::i;:::-;15716:332;;;;;:::o;16054:807::-;16303:4;16341:3;16330:9;16326:19;16318:27;;16355:71;16423:1;16412:9;16408:17;16399:6;16355:71;:::i;:::-;16436:72;16504:2;16493:9;16489:18;16480:6;16436:72;:::i;:::-;16518:80;16594:2;16583:9;16579:18;16570:6;16518:80;:::i;:::-;16608;16684:2;16673:9;16669:18;16660:6;16608:80;:::i;:::-;16698:73;16766:3;16755:9;16751:19;16742:6;16698:73;:::i;:::-;16781;16849:3;16838:9;16834:19;16825:6;16781:73;:::i;:::-;16054:807;;;;;;;;;:::o;16867:471::-;17032:4;17070:2;17059:9;17055:18;17047:26;;17119:9;17113:4;17109:20;17105:1;17094:9;17090:17;17083:47;17147:108;17250:4;17241:6;17147:108;:::i;:::-;17139:116;;17265:66;17327:2;17316:9;17312:18;17303:6;17265:66;:::i;:::-;16867:471;;;;;:::o;17344:210::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17482:65;17544:1;17533:9;17529:17;17520:6;17482:65;:::i;:::-;17344:210;;;;:::o;17560:282::-;17683:4;17721:2;17710:9;17706:18;17698:26;;17734:101;17832:1;17821:9;17817:17;17808:6;17734:101;:::i;:::-;17560:282;;;;:::o;17848:313::-;17961:4;17999:2;17988:9;17984:18;17976:26;;18048:9;18042:4;18038:20;18034:1;18023:9;18019:17;18012:47;18076:78;18149:4;18140:6;18076:78;:::i;:::-;18068:86;;17848:313;;;;:::o;18167:419::-;18333:4;18371:2;18360:9;18356:18;18348:26;;18420:9;18414:4;18410:20;18406:1;18395:9;18391:17;18384:47;18448:131;18574:4;18448:131;:::i;:::-;18440:139;;18167:419;;;:::o;18592:::-;18758:4;18796:2;18785:9;18781:18;18773:26;;18845:9;18839:4;18835:20;18831:1;18820:9;18816:17;18809:47;18873:131;18999:4;18873:131;:::i;:::-;18865:139;;18592:419;;;:::o;19017:::-;19183:4;19221:2;19210:9;19206:18;19198:26;;19270:9;19264:4;19260:20;19256:1;19245:9;19241:17;19234:47;19298:131;19424:4;19298:131;:::i;:::-;19290:139;;19017:419;;;:::o;19442:::-;19608:4;19646:2;19635:9;19631:18;19623:26;;19695:9;19689:4;19685:20;19681:1;19670:9;19666:17;19659:47;19723:131;19849:4;19723:131;:::i;:::-;19715:139;;19442:419;;;:::o;19867:::-;20033:4;20071:2;20060:9;20056:18;20048:26;;20120:9;20114:4;20110:20;20106:1;20095:9;20091:17;20084:47;20148:131;20274:4;20148:131;:::i;:::-;20140:139;;19867:419;;;:::o;20292:::-;20458:4;20496:2;20485:9;20481:18;20473:26;;20545:9;20539:4;20535:20;20531:1;20520:9;20516:17;20509:47;20573:131;20699:4;20573:131;:::i;:::-;20565:139;;20292:419;;;:::o;20717:::-;20883:4;20921:2;20910:9;20906:18;20898:26;;20970:9;20964:4;20960:20;20956:1;20945:9;20941:17;20934:47;20998:131;21124:4;20998:131;:::i;:::-;20990:139;;20717:419;;;:::o;21142:::-;21308:4;21346:2;21335:9;21331:18;21323:26;;21395:9;21389:4;21385:20;21381:1;21370:9;21366:17;21359:47;21423:131;21549:4;21423:131;:::i;:::-;21415:139;;21142:419;;;:::o;21567:::-;21733:4;21771:2;21760:9;21756:18;21748:26;;21820:9;21814:4;21810:20;21806:1;21795:9;21791:17;21784:47;21848:131;21974:4;21848:131;:::i;:::-;21840:139;;21567:419;;;:::o;21992:::-;22158:4;22196:2;22185:9;22181:18;22173:26;;22245:9;22239:4;22235:20;22231:1;22220:9;22216:17;22209:47;22273:131;22399:4;22273:131;:::i;:::-;22265:139;;21992:419;;;:::o;22417:::-;22583:4;22621:2;22610:9;22606:18;22598:26;;22670:9;22664:4;22660:20;22656:1;22645:9;22641:17;22634:47;22698:131;22824:4;22698:131;:::i;:::-;22690:139;;22417:419;;;:::o;22842:::-;23008:4;23046:2;23035:9;23031:18;23023:26;;23095:9;23089:4;23085:20;23081:1;23070:9;23066:17;23059:47;23123:131;23249:4;23123:131;:::i;:::-;23115:139;;22842:419;;;:::o;23267:::-;23433:4;23471:2;23460:9;23456:18;23448:26;;23520:9;23514:4;23510:20;23506:1;23495:9;23491:17;23484:47;23548:131;23674:4;23548:131;:::i;:::-;23540:139;;23267:419;;;:::o;23692:::-;23858:4;23896:2;23885:9;23881:18;23873:26;;23945:9;23939:4;23935:20;23931:1;23920:9;23916:17;23909:47;23973:131;24099:4;23973:131;:::i;:::-;23965:139;;23692:419;;;:::o;24117:222::-;24210:4;24248:2;24237:9;24233:18;24225:26;;24261:71;24329:1;24318:9;24314:17;24305:6;24261:71;:::i;:::-;24117:222;;;;:::o;24345:831::-;24608:4;24646:3;24635:9;24631:19;24623:27;;24660:71;24728:1;24717:9;24713:17;24704:6;24660:71;:::i;:::-;24741:80;24817:2;24806:9;24802:18;24793:6;24741:80;:::i;:::-;24868:9;24862:4;24858:20;24853:2;24842:9;24838:18;24831:48;24896:108;24999:4;24990:6;24896:108;:::i;:::-;24888:116;;25014:72;25082:2;25071:9;25067:18;25058:6;25014:72;:::i;:::-;25096:73;25164:3;25153:9;25149:19;25140:6;25096:73;:::i;:::-;24345:831;;;;;;;;:::o;25182:442::-;25331:4;25369:2;25358:9;25354:18;25346:26;;25382:71;25450:1;25439:9;25435:17;25426:6;25382:71;:::i;:::-;25463:72;25531:2;25520:9;25516:18;25507:6;25463:72;:::i;:::-;25545;25613:2;25602:9;25598:18;25589:6;25545:72;:::i;:::-;25182:442;;;;;;:::o;25630:214::-;25719:4;25757:2;25746:9;25742:18;25734:26;;25770:67;25834:1;25823:9;25819:17;25810:6;25770:67;:::i;:::-;25630:214;;;;:::o;25850:129::-;25884:6;25911:20;;:::i;:::-;25901:30;;25940:33;25968:4;25960:6;25940:33;:::i;:::-;25850:129;;;:::o;25985:75::-;26018:6;26051:2;26045:9;26035:19;;25985:75;:::o;26066:311::-;26143:4;26233:18;26225:6;26222:30;26219:56;;;26255:18;;:::i;:::-;26219:56;26305:4;26297:6;26293:17;26285:25;;26365:4;26359;26355:15;26347:23;;26066:311;;;:::o;26383:132::-;26450:4;26473:3;26465:11;;26503:4;26498:3;26494:14;26486:22;;26383:132;;;:::o;26521:114::-;26588:6;26622:5;26616:12;26606:22;;26521:114;;;:::o;26641:99::-;26693:6;26727:5;26721:12;26711:22;;26641:99;;;:::o;26746:113::-;26816:4;26848;26843:3;26839:14;26831:22;;26746:113;;;:::o;26865:184::-;26964:11;26998:6;26993:3;26986:19;27038:4;27033:3;27029:14;27014:29;;26865:184;;;;:::o;27055:169::-;27139:11;27173:6;27168:3;27161:19;27213:4;27208:3;27204:14;27189:29;;27055:169;;;;:::o;27230:305::-;27270:3;27289:20;27307:1;27289:20;:::i;:::-;27284:25;;27323:20;27341:1;27323:20;:::i;:::-;27318:25;;27477:1;27409:66;27405:74;27402:1;27399:81;27396:107;;;27483:18;;:::i;:::-;27396:107;27527:1;27524;27520:9;27513:16;;27230:305;;;;:::o;27541:185::-;27581:1;27598:20;27616:1;27598:20;:::i;:::-;27593:25;;27632:20;27650:1;27632:20;:::i;:::-;27627:25;;27671:1;27661:35;;27676:18;;:::i;:::-;27661:35;27718:1;27715;27711:9;27706:14;;27541:185;;;;:::o;27732:348::-;27772:7;27795:20;27813:1;27795:20;:::i;:::-;27790:25;;27829:20;27847:1;27829:20;:::i;:::-;27824:25;;28017:1;27949:66;27945:74;27942:1;27939:81;27934:1;27927:9;27920:17;27916:105;27913:131;;;28024:18;;:::i;:::-;27913:131;28072:1;28069;28065:9;28054:20;;27732:348;;;;:::o;28086:191::-;28126:4;28146:20;28164:1;28146:20;:::i;:::-;28141:25;;28180:20;28198:1;28180:20;:::i;:::-;28175:25;;28219:1;28216;28213:8;28210:34;;;28224:18;;:::i;:::-;28210:34;28269:1;28266;28262:9;28254:17;;28086:191;;;;:::o;28283:96::-;28320:7;28349:24;28367:5;28349:24;:::i;:::-;28338:35;;28283:96;;;:::o;28385:104::-;28430:7;28459:24;28477:5;28459:24;:::i;:::-;28448:35;;28385:104;;;:::o;28495:90::-;28529:7;28572:5;28565:13;28558:21;28547:32;;28495:90;;;:::o;28591:126::-;28628:7;28668:42;28661:5;28657:54;28646:65;;28591:126;;;:::o;28723:77::-;28760:7;28789:5;28778:16;;28723:77;;;:::o;28806:86::-;28841:7;28881:4;28874:5;28870:16;28859:27;;28806:86;;;:::o;28898:156::-;28978:9;29011:37;29042:5;29011:37;:::i;:::-;28998:50;;28898:156;;;:::o;29060:121::-;29118:9;29151:24;29169:5;29151:24;:::i;:::-;29138:37;;29060:121;;;:::o;29187:126::-;29237:9;29270:37;29301:5;29270:37;:::i;:::-;29257:50;;29187:126;;;:::o;29319:113::-;29369:9;29402:24;29420:5;29402:24;:::i;:::-;29389:37;;29319:113;;;:::o;29438:307::-;29506:1;29516:113;29530:6;29527:1;29524:13;29516:113;;;29615:1;29610:3;29606:11;29600:18;29596:1;29591:3;29587:11;29580:39;29552:2;29549:1;29545:10;29540:15;;29516:113;;;29647:6;29644:1;29641:13;29638:101;;;29727:1;29718:6;29713:3;29709:16;29702:27;29638:101;29487:258;29438:307;;;:::o;29751:320::-;29795:6;29832:1;29826:4;29822:12;29812:22;;29879:1;29873:4;29869:12;29900:18;29890:81;;29956:4;29948:6;29944:17;29934:27;;29890:81;30018:2;30010:6;30007:14;29987:18;29984:38;29981:84;;;30037:18;;:::i;:::-;29981:84;29802:269;29751:320;;;:::o;30077:281::-;30160:27;30182:4;30160:27;:::i;:::-;30152:6;30148:40;30290:6;30278:10;30275:22;30254:18;30242:10;30239:34;30236:62;30233:88;;;30301:18;;:::i;:::-;30233:88;30341:10;30337:2;30330:22;30120:238;30077:281;;:::o;30364:233::-;30403:3;30426:24;30444:5;30426:24;:::i;:::-;30417:33;;30472:66;30465:5;30462:77;30459:103;;;30542:18;;:::i;:::-;30459:103;30589:1;30582:5;30578:13;30571:20;;30364:233;;;:::o;30603:180::-;30651:77;30648:1;30641:88;30748:4;30745:1;30738:15;30772:4;30769:1;30762:15;30789:180;30837:77;30834:1;30827:88;30934:4;30931:1;30924:15;30958:4;30955:1;30948:15;30975:180;31023:77;31020:1;31013:88;31120:4;31117:1;31110:15;31144:4;31141:1;31134:15;31161:180;31209:77;31206:1;31199:88;31306:4;31303:1;31296:15;31330:4;31327:1;31320:15;31347:180;31395:77;31392:1;31385:88;31492:4;31489:1;31482:15;31516:4;31513:1;31506:15;31533:117;31642:1;31639;31632:12;31656:117;31765:1;31762;31755:12;31779:117;31888:1;31885;31878:12;31902:117;32011:1;32008;32001:12;32025:102;32066:6;32117:2;32113:7;32108:2;32101:5;32097:14;32093:28;32083:38;;32025:102;;;:::o;32133:222::-;32273:34;32269:1;32261:6;32257:14;32250:58;32342:5;32337:2;32329:6;32325:15;32318:30;32133:222;:::o;32361:231::-;32501:34;32497:1;32489:6;32485:14;32478:58;32570:14;32565:2;32557:6;32553:15;32546:39;32361:231;:::o;32598:237::-;32738:34;32734:1;32726:6;32722:14;32715:58;32807:20;32802:2;32794:6;32790:15;32783:45;32598:237;:::o;32841:223::-;32981:34;32977:1;32969:6;32965:14;32958:58;33050:6;33045:2;33037:6;33033:15;33026:31;32841:223;:::o;33070:225::-;33210:34;33206:1;33198:6;33194:14;33187:58;33279:8;33274:2;33266:6;33262:15;33255:33;33070:225;:::o;33301:221::-;33441:34;33437:1;33429:6;33425:14;33418:58;33510:4;33505:2;33497:6;33493:15;33486:29;33301:221;:::o;33528:177::-;33668:29;33664:1;33656:6;33652:14;33645:53;33528:177;:::o;33711:301::-;33851:34;33847:1;33839:6;33835:14;33828:58;33920:34;33915:2;33907:6;33903:15;33896:59;33989:15;33984:2;33976:6;33972:15;33965:40;33711:301;:::o;34018:220::-;34158:34;34154:1;34146:6;34142:14;34135:58;34227:3;34222:2;34214:6;34210:15;34203:28;34018:220;:::o;34244:182::-;34384:34;34380:1;34372:6;34368:14;34361:58;34244:182;:::o;34432:230::-;34572:34;34568:1;34560:6;34556:14;34549:58;34641:13;34636:2;34628:6;34624:15;34617:38;34432:230;:::o;34668:224::-;34808:34;34804:1;34796:6;34792:14;34785:58;34877:7;34872:2;34864:6;34860:15;34853:32;34668:224;:::o;34898:223::-;35038:34;35034:1;35026:6;35022:14;35015:58;35107:6;35102:2;35094:6;35090:15;35083:31;34898:223;:::o;35127:251::-;35267:34;35263:1;35255:6;35251:14;35244:58;35336:34;35331:2;35323:6;35319:15;35312:59;35127:251;:::o;35384:122::-;35457:24;35475:5;35457:24;:::i;:::-;35450:5;35447:35;35437:63;;35496:1;35493;35486:12;35437:63;35384:122;:::o;35512:138::-;35593:32;35619:5;35593:32;:::i;:::-;35586:5;35583:43;35573:71;;35640:1;35637;35630:12;35573:71;35512:138;:::o;35656:116::-;35726:21;35741:5;35726:21;:::i;:::-;35719:5;35716:32;35706:60;;35762:1;35759;35752:12;35706:60;35656:116;:::o;35778:122::-;35851:24;35869:5;35851:24;:::i;:::-;35844:5;35841:35;35831:63;;35890:1;35887;35880:12;35831:63;35778:122;:::o

Swarm Source

ipfs://7bd7fca3360e60be6eec2d41dc7ebfef4a0727b66dbca53770e9b3efb652d0e3
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.