ETH Price: $3,082.49 (-0.67%)
Gas: 2 Gwei

Token

ClownTown (CLOWNS)
 

Overview

Max Total Supply

965,095,911.485961146204393318 CLOWNS

Holders

116

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,495,091.338968852169057375 CLOWNS

Value
$0.00
0x041da1de8fc07c359aa66ea3ea33526ad2a514d5
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ClownTown

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-05
*/

/**
// SPDX-License-Identifier: MIT
    __  _       ___   __    __  ____       ______   ___   __    __  ____  
   /  ]| |     /   \ |  |__|  ||    \     |      | /   \ |  |__|  ||    \ 
  /  / | |    |     ||  |  |  ||  _  |    |      ||     ||  |  |  ||  _  |
 /  /  | |___ |  O  ||  |  |  ||  |  |    |_|  |_||  O  ||  |  |  ||  |  |
/   \_ |     ||     ||  `  '  ||  |  |      |  |  |     ||  `  '  ||  |  |
\     ||     ||     | \      / |  |  |      |  |  |     | \      / |  |  |
 \____||_____| \___/   \_/\_/  |__|__|      |__|   \___/   \_/\_/  |__|__|
                                                                          
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⠶⠖⠒⠛⠛⠛⠒⠶⢦⣤⣤⡶⠶⠶⠶⠶⠶⢶⣶⣦⣤⣴⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣤⣴⣤⣤⣴⡶⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡟⠉⠙⢿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠛⠉⠀⠀⢀⣴⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢿⡀⠀⠀⠀⠻⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠁⠀⠀⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡄⠀⠀⠀⠀⠙⠻⣷⣄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠀⠀⠈⢿⣦⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢠⣴⠟⠉⠀⠀⠀⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢠⣿⠇⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡿⣷⣄⠀
⠀⠀⠀⠀⠀⠀⢸⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⠀⠀⠀⠀⠀⠐⣼⡟⠋⠀⠈⢻⣇
⠀⠀⠀⠀⠀⢠⣾⠟⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⣸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡆⠀⠀⠀⠸⣿
⠀⠀⠀⠀⢠⣿⠇⠀⣾⡇⠀⠀⠀⠀⠀⠀⠀⠀⣽⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠁⠀⠀⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⢠⡞⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⣼⡏
⠀⠀⠀⠀⢸⣿⠀⠀⠹⣧⠀⠀⠀⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣿⣤⠶⠛⠛⠋⠉⠙⠛⠓⠶⣤⡀⠀⢸⡇⠀⠀⣠⣤⣴⠶⠶⠟⠛⠻⠶⢾⣿⣤⡀⠛⢹⣇
⠀⠀⠀⣰⡿⠋⠀⠀⠀⢹⡆⠀⠀⠀⠀⠀⠀⠀⠈⢷⣀⠀⠀⠀⠀⠀⢀⣤⡶⠟⠋⠁⠀⠀⠀⣀⣀⣀⣀⣀⠀⠀⠈⠻⣦⡘⣷⡾⠟⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣷⣼⡏
⠀⠀⢰⣿⠃⠀⠀⠀⠀⢾⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠶⣤⣠⣴⠟⠁⢀⣀⣤⡶⠾⠛⠋⠉⠁⠀⠉⠉⠛⢶⣄⠀⢹⣿⠋⣀⣠⣶⠾⠟⠛⠋⠉⠉⠛⠛⠷⣦⣀⠀⢹⣿⠃
⠀⠀⢸⣿⠀⠀⠀⠀⠀⠸⣧⡀⠀⠀⠀⠀⢀⣠⣤⣶⠾⠿⠟⢛⣉⣤⡴⠾⠛⠉⠀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⣼⣿⠿⠛⣹⠃⠀⠀⢀⣀⣀⡀⠀⠀⠀⠀⠙⢷⣆⣿⠀
⠀⠀⠘⣿⡆⠀⠀⠀⠀⠀⠙⠳⣤⣄⣀⣴⡿⠋⠉⠀⣠⡶⠛⠛⡫⠁⠀⠀⢀⡴⠛⢻⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠸⡿⠃⠀⢰⠁⠀⣤⠞⠛⢿⣿⣿⣶⡄⠀⠀⠀⠀⢹⣇⠀
⠀⠀⣠⣿⠃⠀⠀⠀⠀⠀⠀⢀⣠⣽⡿⠋⠀⠀⠀⣰⣿⠀⠀⠀⡇⠀⠀⠀⣿⡀⢀⣼⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⢀⣿⣀⣀⡀⠀⢰⣧⣀⣠⣾⣿⣿⣿⡇⠀⠀⠀⠀⢸⣿⠀
⠀⢸⣿⡇⠀⠀⠀⠀⠀⣀⣾⡿⠛⠁⠀⠀⠀⠀⣸⠟⢻⣆⠀⠀⢳⡀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⣀⣴⠾⠛⠉⢉⣿⢿⣿⣾⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⣾⠇⠀
⠀⠈⠻⣿⣦⣤⣀⣀⣴⡿⠋⠀⠀⠀⠀⠀⠀⠀⢿⡄⠀⠙⢷⣄⡀⠙⢤⡀⠈⠻⠿⣿⣿⡿⠿⠋⠀⠀⢀⣼⣟⣁⠀⠀⠰⣟⠀⠀⠈⠻⣿⣿⡿⠿⠟⠛⠁⠀⠀⠀⢀⣾⢷⡄⠀
⠀⠀⠀⠈⢙⣿⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣄⠀⠀⠉⠻⢶⣤⣄⣀⡀⠀⠠⠀⢀⣀⡀⠠⣤⣾⢿⣿⣿⡄⠀⠀⠙⢷⣄⣀⣠⣿⠻⣷⣀⣀⣀⣀⣠⣤⡾⠟⠁⣸⡏⠀
⠀⠀⠀⢠⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠷⠀⠀⠀⠀⠈⠉⠛⠛⠛⠒⠶⠶⠶⠶⠿⢻⣿⣾⣿⣿⣷⡄⠀⠀⠀⠈⣿⠋⠙⣶⣿⠋⠉⠉⠉⠉⠀⣀⣤⣾⡏⠀⠀
⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠉⠉⠉⠙⠳⢦⣄⡀⠀⠀⠀⠀⠀⠘⣿⡘⣿⣿⣿⣿⣷⣤⣀⠀⠘⠷⠾⢻⡿⠀⠀⠀⣀⠀⠀⠁⠀⠙⣿⡄⠀
⠀⢀⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠰⣦⣀⠀⠀⠀⠈⠙⠛⠶⢶⣤⣄⣀⣹⣷⣜⠻⣿⣿⣿⣿⣿⣿⠀⢀⣴⣿⠶⠞⠛⠉⠉⠙⣷⠀⠀⠀⢹⣿⠀
⠀⣸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡀⠀⢿⣄⠀⠉⠻⢿⣦⣄⣀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠛⠿⣶⣤⣭⣭⣤⡴⠾⠟⠋⠀⠀⠀⠀⠀⣀⣴⡿⠀⠀⠀⢸⣿⠀
⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⡀⠀⠛⢦⣄⡀⠀⠈⠉⠛⠛⠶⠶⣤⣤⣤⣄⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣤⣤⣤⡴⠶⠾⢿⡟⠉⠀⠀⠀⠀⣸⡿⠀
⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢦⣄⠀⠉⠻⢶⣤⣄⣀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠙⠛⠛⠛⠛⠛⠛⠋⠉⠉⠉⠀⠀⠀⢀⣼⠇⠀⠀⠀⠀⢀⣿⠃⠀
⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠻⠶⠶⠶⠶⣦⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣶⠶⠶⠶⠿⠛⠁⠀⠀⠀⠀⢀⣿⠇⠀⠀
⠀⢸⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⠏⠀⠀⠀
⠀⣿⣿⣿⣿⣦⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠏⢠⡟⠀⠈⢻⡛⠻⢦⣄⡀⢀⣀⣀⡀⠀⣀⡴⠞⢻⡏⠀⠀⣿⣿⣧⠀⠀⠀⠀⠀⣀⣤⣾⣿⣇⠀⠀⠀⠀
⢠⣿⣿⣿⣿⣿⣿⣿⣶⣦⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡿⠙⣎⢷⣄⣀⣼⣇⣀⠀⢨⣿⣿⡉⠉⢹⣿⠛⠁⣀⣤⡷⢤⠴⢻⠀⣿⣀⣤⣴⣶⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀
⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣶⣶⣾⣇⣠⡏⣠⡭⢭⡀⢻⣍⢉⣻⣇⣈⣙⣾⡿⣿⣟⡉⣹⢁⡤⠒⢦⡀⠓⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀
⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢰⡏⠀⠀⣹⠄⢙⡯⠉⣿⣭⣍⣀⣴⣟⠉⠉⠉⢸⡄⠀⢀⣷⡴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀
⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡈⢷⠟⢦⢶⣋⣀⣭⣴⣿⣿⣿⣿⣿⣿⣿⣷⣤⣛⡀⠙⠛⠋⡯⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇
⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇

clowntown.bet
t.me/clowntown_bsc

*/
pragma solidity ^0.8.0;


interface IERC165 {

 function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

pragma solidity ^0.8.0;


contract ERC165 is IERC165 {
 
 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 return interfaceId == type(IERC165).interfaceId;
 }
}




pragma solidity ^0.8.0;

library SignedMath {

 function max(int256 a, int256 b) internal pure returns (int256) {
 return a > b ? a : b;
 }


 function min(int256 a, int256 b) internal pure returns (int256) {
 return a < b ? a : b;
 }




 function average(int256 a, int256 b) internal pure returns (int256) {
 int256 x = (a & b) + ((a ^ b) >> 1);
 return x + (int256(uint256(x) >> 255) & (a ^ b));
 }

 function abs(int256 n) internal pure returns (uint256) {
 unchecked {
 // must be unchecked in order to support `n = type(int256).min`
 return uint256(n >= 0 ? n : -n);
 }
 }
 
}

pragma solidity ^0.8.0;


library Math {
 enum Rounding {
 Down, 
 Up, 
 Zero 
 }

 function max(uint256 a, uint256 b) internal pure returns (uint256) {
 return a > b ? a : b;
 }

 function min(uint256 a, uint256 b) internal pure returns (uint256) {
 return a < b ? a : b;
 }

 function average(uint256 a, uint256 b) internal pure returns (uint256) {
 // (a + b) / 2 can overflow.
 return (a & b) + (a ^ b) / 2;
 }


 function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
 return a == 0 ? 0 : (a - 1) / b + 1;
 }


 function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
 unchecked {
 uint256 prod0; // Least significant 256 bits of the product
 uint256 prod1; // Most significant 256 bits of the product
 assembly {
 let mm := mulmod(x, y, not(0))
 prod0 := mul(x, y)
 prod1 := sub(sub(mm, prod0), lt(mm, prod0))
 }

 if (prod1 == 0) {
 return prod0 / denominator;
 }

 require(denominator > prod1, "Math: mulDiv overflow");


 uint256 remainder;
 assembly {
 remainder := mulmod(x, y, denominator)

 prod1 := sub(prod1, gt(remainder, prod0))
 prod0 := sub(prod0, remainder)
 }


 uint256 twos = denominator & (~denominator + 1);
 assembly {
 
 denominator := div(denominator, twos)

 prod0 := div(prod0, twos)

 twos := add(div(sub(0, twos), twos), 1)
 }

 prod0 |= prod1 * twos;

 uint256 inverse = (3 * denominator) ^ 2;

 inverse *= 2 - denominator * inverse; // inverse mod 2^8
 inverse *= 2 - denominator * inverse; // inverse mod 2^16
 inverse *= 2 - denominator * inverse; // inverse mod 2^32
 inverse *= 2 - denominator * inverse; // inverse mod 2^64
 inverse *= 2 - denominator * inverse; // inverse mod 2^128
 inverse *= 2 - denominator * inverse; // inverse mod 2^256

 result = prod0 * inverse;
 return result;
 }
 }

 function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
 uint256 result = mulDiv(x, y, denominator);
 if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
 result += 1;
 }
 return result;
 }


 function sqrt(uint256 a) internal pure returns (uint256) {
 if (a == 0) {
 return 0;
 }

 uint256 result = 1 << (log2(a) >> 1);

 
 unchecked {
 result = (result + a / result) >> 1;
 result = (result + a / result) >> 1;
 result = (result + a / result) >> 1;
 result = (result + a / result) >> 1;
 result = (result + a / result) >> 1;
 result = (result + a / result) >> 1;
 result = (result + a / result) >> 1;
 return min(result, a / result);
 }
 }

 function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
 unchecked {
 uint256 result = sqrt(a);
 return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
 }
 }


 function log2(uint256 value) internal pure returns (uint256) {
 uint256 result = 0;
 unchecked {
 if (value >> 128 > 0) {
 value >>= 128;
 result += 128;
 }
 if (value >> 64 > 0) {
 value >>= 64;
 result += 64;
 }
 if (value >> 32 > 0) {
 value >>= 32;
 result += 32;
 }
 if (value >> 16 > 0) {
 value >>= 16;
 result += 16;
 }
 if (value >> 8 > 0) {
 value >>= 8;
 result += 8;
 }
 if (value >> 4 > 0) {
 value >>= 4;
 result += 4;
 }
 if (value >> 2 > 0) {
 value >>= 2;
 result += 2;
 }
 if (value >> 1 > 0) {
 result += 1;
 }
 }
 return result;
 }


 function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
 unchecked {
 uint256 result = log2(value);
 return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
 }
 }

 
 function log10(uint256 value) internal pure returns (uint256) {
 uint256 result = 0;
 unchecked {
 if (value >= 10 ** 64) {
 value /= 10 ** 64;
 result += 64;
 }
 if (value >= 10 ** 32) {
 value /= 10 ** 32;
 result += 32;
 }
 if (value >= 10 ** 16) {
 value /= 10 ** 16;
 result += 16;
 }
 if (value >= 10 ** 8) {
 value /= 10 ** 8;
 result += 8;
 }
 if (value >= 10 ** 4) {
 value /= 10 ** 4;
 result += 4;
 }
 if (value >= 10 ** 2) {
 value /= 10 ** 2;
 result += 2;
 }
 if (value >= 10 ** 1) {
 result += 1;
 }
 }
 return result;
 }


 function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
 unchecked {
 uint256 result = log10(value);
 return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);
 }
 }

 
 function log256(uint256 value) internal pure returns (uint256) {
 uint256 result = 0;
 unchecked {
 if (value >> 128 > 0) {
 value >>= 128;
 result += 16;
 }
 if (value >> 64 > 0) {
 value >>= 64;
 result += 8;
 }
 if (value >> 32 > 0) {
 value >>= 32;
 result += 4;
 }
 if (value >> 16 > 0) {
 value >>= 16;
 result += 2;
 }
 if (value >> 8 > 0) {
 result += 1;
 }
 }
 return result;
 }

 
 function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
 unchecked {
 uint256 result = log256(value);
 return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
 }
 }
}

pragma solidity ^0.8.0;



library Strings {
 bytes16 private constant _SYMBOLS = "0123456789abcdef";
 uint8 private constant _ADDRESS_LENGTH = 20;

 function toString(uint256 value) internal pure returns (string memory) {
 unchecked {
 uint256 length = Math.log10(value) + 1;
 string memory buffer = new string(length);
 uint256 ptr;
 /// @solidity memory-safe-assembly
 assembly {
 ptr := add(buffer, add(32, length))
 }
 while (true) {
 ptr--;
 /// @solidity memory-safe-assembly
 assembly {
 mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
 }
 value /= 10;
 if (value == 0) break;
 }
 return buffer;
 }
 }


 function toString(int256 value) internal pure returns (string memory) {
 return string(abi.encodePacked(value < 0 ? "-" : "", toString(SignedMath.abs(value))));
 }

 function toHexString(uint256 value) internal pure returns (string memory) {
 unchecked {
 return toHexString(value, Math.log256(value) + 1);
 }
 }

 
 function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
 bytes memory buffer = new bytes(2 * length + 2);
 buffer[0] = "0";
 buffer[1] = "x";
 for (uint256 i = 2 * length + 1; i > 1; --i) {
 buffer[i] = _SYMBOLS[value & 0xf];
 value >>= 4;
 }
 require(value == 0, "Strings: hex length insufficient");
 return string(buffer);
 }


 function toHexString(address addr) internal pure returns (string memory) {
 return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
 }


 function equal(string memory a, string memory b) internal pure returns (bool) {
 return keccak256(bytes(a)) == keccak256(bytes(b));
 }
}

pragma solidity ^0.8.0;

contract Context {
 function _msgSender() internal view virtual returns (address) {
 return msg.sender;
 }

 function _msgData() internal view virtual returns (bytes calldata) {
 return msg.data;
 }
}
pragma solidity ^0.8.0;

interface IAccessControl {

 event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

 
 event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

 
 event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

 
 function hasRole(bytes32 role, address account) external view returns (bool);

 
 function getRoleAdmin(bytes32 role) external view returns (bytes32);

 
 function grantRole(bytes32 role, address account) external;

 function revokeRole(bytes32 role, address account) external;

 
 function renounceRole(bytes32 role, address account) external;
}


pragma solidity ^0.8.0;



contract AccessControl is Context, IAccessControl, ERC165 {
 struct RoleData {
 mapping(address => bool) members;
 bytes32 adminRole;
 }

 mapping(bytes32 => RoleData) private _roles;

 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

 modifier onlyRole(bytes32 role) {
 _checkRole(role);
 _;
 }

 
 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
 }

 
 function hasRole(bytes32 role, address account) public view virtual override returns (bool) {
 return _roles[role].members[account];
 }


 function _checkRole(bytes32 role) internal view virtual {
 _checkRole(role, _msgSender());
 }

 
 function _checkRole(bytes32 role, address account) internal view virtual {
 if (!hasRole(role, account)) {
 revert(
 string(
 abi.encodePacked(
 "AccessControl: account ",
 Strings.toHexString(account),
 " is missing role ",
 Strings.toHexString(uint256(role), 32)
 )
 )
 );
 }
 }


 function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {
 return _roles[role].adminRole;
 }

 function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
 _grantRole(role, account);
 }


 function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
 _revokeRole(role, account);
 }

 
 function renounceRole(bytes32 role, address account) public virtual override {
 require(account == _msgSender(), "AccessControl: can only renounce roles for self");

 _revokeRole(role, account);
 }

 
 function _setupRole(bytes32 role, address account) internal virtual {
 _grantRole(role, account);
 }

 function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
 bytes32 previousAdminRole = getRoleAdmin(role);
 _roles[role].adminRole = adminRole;
 emit RoleAdminChanged(role, previousAdminRole, adminRole);
 }

 
 function _grantRole(bytes32 role, address account) internal virtual {
 if (!hasRole(role, account)) {
 _roles[role].members[account] = true;
 emit RoleGranted(role, account, _msgSender());
 }
 }

 
 function _revokeRole(bytes32 role, address account) internal virtual {
 if (hasRole(role, account)) {
 _roles[role].members[account] = false;
 emit RoleRevoked(role, account, _msgSender());
 }
 }
}


pragma solidity ^0.8.0;


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

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

 
 function totalSupply() external view returns (uint256);

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

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

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

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

 
 function transferFrom(address from, address to, uint256 amount) external returns (bool);
}




pragma solidity ^0.8.0;



interface IERC20Metadata is IERC20 {
 
 function name() external view returns (string memory);

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


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



pragma solidity ^0.8.0;




contract ClownTown is IERC20, IERC20Metadata, AccessControl {
 // Role-based access control
 bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");
 bytes32 public constant OWNER_ROLE = keccak256("OWNER_ROLE");

 // Token details
 string private _name;
 string private _symbol;
 uint8 private _decimals;
 uint256 private _totalSupply;

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

 // Custom variables
 uint256 private constant _threshold1 = 69; // Threshold for transferring pot to the house address
 uint256 private constant _threshold2 = 420; // Threshold for transferring pot to the swapping wallet
 uint256 private constant _threshold3 = 1337; // Threshold for burning the pot balance
 uint256 private _pot; // Internal balance of the pot
 address private _house; // Address of the house wallet
 uint256 private _burnedTokens; // Total burned tokens

 uint256 private _fibonacciSequence;
 uint256 private _fibonacciIndex;

 // Events
 event HouseAddressChanged(address indexed previousHouse, address indexed newHouse);
 event PotTransferredToHouse(address indexed houseAddress, uint256 amount);
 event PotTransferredToSender(address indexed sender, uint256 amount);
 event PotBurned(uint256 amount);

 bool private _locked; // Variable to track reentrancy

 modifier nonReentrant() {
 require(!_locked, "Reentrant call");
 _locked = true;
 _;
 _locked = false;
 }

 constructor() {
 _name = "ClownTown";
 _symbol = "CLOWNS";
 _decimals = 18;
 _totalSupply = 1000000000 * 10**uint256(_decimals);

 _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
 _setupRole(ADMIN_ROLE, msg.sender);
 _setupRole(OWNER_ROLE, msg.sender);

 _balances[msg.sender] = _totalSupply;

 _house = address(0);
 _fibonacciSequence = 1;
 _fibonacciIndex = 1;
 }

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

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

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

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

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

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

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

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

 function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
 _transfer(sender, recipient, amount);
 uint256 currentAllowance = _allowances[sender][msg.sender];
 require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
 _approve(sender, msg.sender, currentAllowance - amount);
 return true;
 }

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

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

 function _transfer(address sender, address recipient, uint256 amount) internal virtual nonReentrant {
 require(sender != address(0), "ERC20: transfer from the zero address");
 require(recipient != address(0), "ERC20: transfer to the zero address");
 require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");

 uint256 taxAmount = amount / 100; // 1% tax
 uint256 potAmount = taxAmount / 2; // 50% of taxAmount to the pot
 uint256 burnAmount = taxAmount - potAmount; // Remaining 50% to be burned

 uint256 transferAmount = amount - taxAmount;

 _balances[sender] = _balances[sender] - amount;

 _balances[recipient] += transferAmount;

 _pot += potAmount;

 _totalSupply -= burnAmount;
 _burnedTokens += burnAmount;
 emit Transfer(sender, address(0), burnAmount);

 emit Transfer(sender, recipient, transferAmount);
 emit Transfer(sender, address(this), potAmount); // Emit separate event for the pot transfer

 _calculateNextFibonacciNumber();

 if (_pot > 0) {
 uint256 num = block.timestamp + potAmount + _fibonacciSequence;

 num = num % 10**9;

 if (num % _threshold1 == 0) {
 _transferPotToHouse();
 } else if (num % _threshold2 == 0) {
 _transferPotToSender(msg.sender);
 } else if (num % _threshold3 == 0) {
 _burnPot();
 }
 }
 }

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

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

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


 function getPot() public view virtual returns (uint256) {
 return _pot;
 }

 function getBurnedTokens() public view virtual returns (uint256) {
 return _burnedTokens;
 }

 function setHouse(address account) public onlyRole(ADMIN_ROLE) {
 require(account != address(0), "ClownTown: Invalid house address");

 require(!hasRole(ADMIN_ROLE, account), "ClownTown: House address already has ADMIN_ROLE");

 grantRole(ADMIN_ROLE, account);

 if (_house != address(0)) {
 revokeRole(ADMIN_ROLE, _house);
 }

 _house = account;
 emit HouseAddressChanged(_house, account);
 }

 function _transferPotToHouse() internal {
 require(_house != address(0), "ClownTown: House address not set");
 require(_pot > 0, "ClownTown: Pot balance is zero");

 uint256 potAmount = _pot;
 _pot = 0;

 _balances[_house] += potAmount;
 emit PotTransferredToHouse(_house, potAmount);
 }

 function _transferPotToSender(address sender) internal {
 require(sender != address(0), "ClownTown: Sender address is zero");
 require(_pot > 0, "ClownTown: Pot balance is zero");

 uint256 potAmount = _pot;
 _pot = 0;

 // Transfer the pot balance to the wallet that initiated the transfer
 _balances[sender] += potAmount;
 emit PotTransferredToSender(sender, potAmount);
 }

 function _burnPot() internal {
 require(_pot > 0, "ClownTown: Pot balance is zero");

 uint256 potAmount = _pot;
 _pot = 0;

 // Burn the pot balance
 _totalSupply -= potAmount;
 _burnedTokens += potAmount;
 emit PotBurned(potAmount);
 }

 function _calculateNextFibonacciNumber() internal {
 _fibonacciIndex++;
 if (_fibonacciIndex > 42) {
 _fibonacciSequence = 1;
 _fibonacciIndex = 1;
 } else if (_fibonacciIndex <= 2) {
 _fibonacciSequence = 1;
 } else {
 uint256 a = 1;
 uint256 b = 1;
 for (uint256 i = 3; i <= _fibonacciIndex; i++) {
 uint256 c = a + b;
 a = b;
 b = c;
 }
 _fibonacciSequence = b;
 }
 }
}

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":"previousHouse","type":"address"},{"indexed":true,"internalType":"address","name":"newHouse","type":"address"}],"name":"HouseAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PotBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"houseAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PotTransferredToHouse","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PotTransferredToSender","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setHouse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f436c6f776e546f776e000000000000000000000000000000000000000000000081525060019081620000589190620005fe565b506040518060400160405280600681526020017f434c4f574e530000000000000000000000000000000000000000000000000000815250600290816200009f9190620005fe565b506012600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff1660ff16600a620000dd919062000868565b633b9aca00620000ee9190620008b9565b600481905550620001096000801b336200020b60201b60201c565b6200013b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336200020b60201b60201c565b6200016d7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e336200020b60201b60201c565b600454600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a819055506001600b8190555062000904565b6200021d82826200022160201b60201c565b5050565b6200023382826200031260201b60201c565b6200030e57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002b36200037c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040657607f821691505b6020821081036200041c576200041b620003be565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000447565b62000492868362000447565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004df620004d9620004d384620004aa565b620004b4565b620004aa565b9050919050565b6000819050919050565b620004fb83620004be565b620005136200050a82620004e6565b84845462000454565b825550505050565b600090565b6200052a6200051b565b62000537818484620004f0565b505050565b5b818110156200055f576200055360008262000520565b6001810190506200053d565b5050565b601f821115620005ae57620005788162000422565b620005838462000437565b8101602085101562000593578190505b620005ab620005a28562000437565b8301826200053c565b50505b505050565b600082821c905092915050565b6000620005d360001984600802620005b3565b1980831691505092915050565b6000620005ee8383620005c0565b9150826002028217905092915050565b620006098262000384565b67ffffffffffffffff8111156200062557620006246200038f565b5b620006318254620003ed565b6200063e82828562000563565b600060209050601f83116001811462000676576000841562000661578287015190505b6200066d8582620005e0565b865550620006dd565b601f198416620006868662000422565b60005b82811015620006b05784890151825560018201915060208501945060208101905062000689565b86831015620006d05784890151620006cc601f891682620005c0565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000773578086048111156200074b576200074a620006e5565b5b60018516156200075b5780820291505b80810290506200076b8562000714565b94506200072b565b94509492505050565b6000826200078e576001905062000861565b816200079e576000905062000861565b8160018114620007b75760028114620007c257620007f8565b600191505062000861565b60ff841115620007d757620007d6620006e5565b5b8360020a915084821115620007f157620007f0620006e5565b5b5062000861565b5060208310610133831016604e8410600b8410161715620008325782820a9050838111156200082c576200082b620006e5565b5b62000861565b62000841848484600162000721565b925090508184048111156200085b576200085a620006e5565b5b81810290505b9392505050565b60006200087582620004aa565b91506200088283620004aa565b9250620008b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200077c565b905092915050565b6000620008c682620004aa565b9150620008d383620004aa565b9250828202620008e381620004aa565b91508282048414831517620008fd57620008fc620006e5565b5b5092915050565b612edb80620009146000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d7146103c8578063a9059cbb146103f8578063c3f4f54f14610428578063d547741f14610446578063dd62ed3e14610462578063e58378bb146104925761014d565b806370a08231146102f257806375b238fc146103225780637f2a8a801461034057806391d148541461035c57806395d89b411461038c578063a217fddf146103aa5761014d565b8063248a9ca311610115578063248a9ca31461021e5780632f2ff15d1461024e578063313ce5671461026a57806336568abe1461028857806339509351146102a4578063403c9fa8146102d45761014d565b806301ffc9a71461015257806306fdde0314610182578063095ea7b3146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61016c60048036038101906101679190611f57565b6104b0565b6040516101799190611f9f565b60405180910390f35b61018a61052a565b604051610197919061204a565b60405180910390f35b6101ba60048036038101906101b59190612100565b6105bc565b6040516101c79190611f9f565b60405180910390f35b6101d86105d3565b6040516101e5919061214f565b60405180910390f35b6102086004803603810190610203919061216a565b6105dd565b6040516102159190611f9f565b60405180910390f35b610238600480360381019061023391906121f3565b6106d0565b604051610245919061222f565b60405180910390f35b6102686004803603810190610263919061224a565b6106ef565b005b610272610710565b60405161027f91906122a6565b60405180910390f35b6102a2600480360381019061029d919061224a565b610727565b005b6102be60048036038101906102b99190612100565b6107aa565b6040516102cb9190611f9f565b60405180910390f35b6102dc610848565b6040516102e9919061214f565b60405180910390f35b61030c600480360381019061030791906122c1565b610852565b604051610319919061214f565b60405180910390f35b61032a61089b565b604051610337919061222f565b60405180910390f35b61035a600480360381019061035591906122c1565b6108bf565b005b6103766004803603810190610371919061224a565b610b50565b6040516103839190611f9f565b60405180910390f35b610394610bba565b6040516103a1919061204a565b60405180910390f35b6103b2610c4c565b6040516103bf919061222f565b60405180910390f35b6103e260048036038101906103dd9190612100565b610c53565b6040516103ef9190611f9f565b60405180910390f35b610412600480360381019061040d9190612100565b610d39565b60405161041f9190611f9f565b60405180910390f35b610430610d50565b60405161043d919061214f565b60405180910390f35b610460600480360381019061045b919061224a565b610d5a565b005b61047c600480360381019061047791906122ee565b610d7b565b604051610489919061214f565b60405180910390f35b61049a610e02565b6040516104a7919061222f565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610523575061052282610e26565b5b9050919050565b6060600180546105399061235d565b80601f01602080910402602001604051908101604052809291908181526020018280546105659061235d565b80156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b60006105c9338484610e90565b6001905092915050565b6000600454905090565b60006105ea848484611059565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a590612400565b60405180910390fd5b6106c4853385846106bf919061244f565b610e90565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6106f8826106d0565b61070181611591565b61070b83836115a5565b505050565b6000600360009054906101000a900460ff16905090565b61072f611685565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906124f5565b60405180910390fd5b6107a6828261168d565b5050565b600061083e338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108399190612515565b610e90565b6001905092915050565b6000600754905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756108e981611591565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90612595565b60405180910390fd5b6109827fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610b50565b156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990612627565b60405180910390fd5b6109ec7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775836106ef565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f57610a8e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d5a565b5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe8344c136ea69cb1a71d69e6393078e3f183889be224dcef59edafc7d32d917760405160405180910390a35050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060028054610bc99061235d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf59061235d565b8015610c425780601f10610c1757610100808354040283529160200191610c42565b820191906000526020600020905b815481529060010190602001808311610c2557829003601f168201915b5050505050905090565b6000801b81565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f906126b9565b60405180910390fd5b610d2e33858584610d29919061244f565b610e90565b600191505092915050565b6000610d46338484611059565b6001905092915050565b6000600954905090565b610d63826106d0565b610d6c81611591565b610d76838361168d565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef69061274b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f65906127dd565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161104c919061214f565b60405180910390a3505050565b600c60009054906101000a900460ff16156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090612849565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a906128db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111999061296d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b906129ff565b60405180910390fd5b60006064826112339190612a4e565b905060006002826112449190612a4e565b905060008183611254919061244f565b905060008385611264919061244f565b905084600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112b1919061244f565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113439190612515565b92505081905550826007600082825461135c9190612515565b925050819055508160046000828254611375919061244f565b92505081905550816009600082825461138e9190612515565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f3919061214f565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611458919061214f565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114bd919061214f565b60405180910390a36114cd61176e565b6000600754111561156d576000600a5484426114e99190612515565b6114f39190612515565b9050633b9aca00816115059190612a7f565b905060006045826115169190612a7f565b0361152857611523611811565b61156b565b60006101a4826115389190612a7f565b0361154b57611546336119e1565b61156a565b60006105398261155b9190612a7f565b0361156957611568611b4c565b5b5b5b505b505050506000600c60006101000a81548160ff021916908315150217905550505050565b6115a28161159d611685565b611c0c565b50565b6115af8282610b50565b61168157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611626611685565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6116978282610b50565b1561176a57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061170f611685565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600b600081548092919061178190612ab0565b9190505550602a600b5411156117a6576001600a819055506001600b8190555061180f565b6002600b54116117bd576001600a8190555061180e565b6000600190506000600190506000600390505b600b54811161180357600082846117e79190612515565b90508293508092505080806117fb90612ab0565b9150506117d0565b5080600a8190555050505b5b565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990612b44565b60405180910390fd5b6000600754116118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90612bb0565b60405180910390fd5b6000600754905060006007819055508060056000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119679190612515565b92505081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7c501ab2a5fadb4e199cf39b6f0e2737de3142ea33bd67e788397e1deab01552826040516119d6919061214f565b60405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790612c42565b60405180910390fd5b600060075411611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90612bb0565b60405180910390fd5b60006007549050600060078190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611af39190612515565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f4ecd1429b23fed85267ae69909f495ad79bbccfb60b4263a29db9d36201d856d82604051611b40919061214f565b60405180910390a25050565b600060075411611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890612bb0565b60405180910390fd5b6000600754905060006007819055508060046000828254611bb2919061244f565b925050819055508060096000828254611bcb9190612515565b925050819055507f967209b0d71500a405da13d7695bb47b725d200797e9097864ce31117c4023c781604051611c01919061214f565b60405180910390a150565b611c168282610b50565b611c8d57611c2381611c91565b611c318360001c6020611cbe565b604051602001611c42929190612d36565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84919061204a565b60405180910390fd5b5050565b6060611cb78273ffffffffffffffffffffffffffffffffffffffff16601460ff16611cbe565b9050919050565b606060006002836002611cd19190612d70565b611cdb9190612515565b67ffffffffffffffff811115611cf457611cf3612db2565b5b6040519080825280601f01601f191660200182016040528015611d265781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d5e57611d5d612de1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611dc257611dc1612de1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611e029190612d70565b611e0c9190612515565b90505b6001811115611eac577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611e4e57611e4d612de1565b5b1a60f81b828281518110611e6557611e64612de1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611ea590612e10565b9050611e0f565b5060008414611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee790612e85565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f3481611eff565b8114611f3f57600080fd5b50565b600081359050611f5181611f2b565b92915050565b600060208284031215611f6d57611f6c611efa565b5b6000611f7b84828501611f42565b91505092915050565b60008115159050919050565b611f9981611f84565b82525050565b6000602082019050611fb46000830184611f90565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ff4578082015181840152602081019050611fd9565b60008484015250505050565b6000601f19601f8301169050919050565b600061201c82611fba565b6120268185611fc5565b9350612036818560208601611fd6565b61203f81612000565b840191505092915050565b600060208201905081810360008301526120648184612011565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120978261206c565b9050919050565b6120a78161208c565b81146120b257600080fd5b50565b6000813590506120c48161209e565b92915050565b6000819050919050565b6120dd816120ca565b81146120e857600080fd5b50565b6000813590506120fa816120d4565b92915050565b6000806040838503121561211757612116611efa565b5b6000612125858286016120b5565b9250506020612136858286016120eb565b9150509250929050565b612149816120ca565b82525050565b60006020820190506121646000830184612140565b92915050565b60008060006060848603121561218357612182611efa565b5b6000612191868287016120b5565b93505060206121a2868287016120b5565b92505060406121b3868287016120eb565b9150509250925092565b6000819050919050565b6121d0816121bd565b81146121db57600080fd5b50565b6000813590506121ed816121c7565b92915050565b60006020828403121561220957612208611efa565b5b6000612217848285016121de565b91505092915050565b612229816121bd565b82525050565b60006020820190506122446000830184612220565b92915050565b6000806040838503121561226157612260611efa565b5b600061226f858286016121de565b9250506020612280858286016120b5565b9150509250929050565b600060ff82169050919050565b6122a08161228a565b82525050565b60006020820190506122bb6000830184612297565b92915050565b6000602082840312156122d7576122d6611efa565b5b60006122e5848285016120b5565b91505092915050565b6000806040838503121561230557612304611efa565b5b6000612313858286016120b5565b9250506020612324858286016120b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061237557607f821691505b6020821081036123885761238761232e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006123ea602883611fc5565b91506123f58261238e565b604082019050919050565b60006020820190508181036000830152612419816123dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061245a826120ca565b9150612465836120ca565b925082820390508181111561247d5761247c612420565b5b92915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006124df602f83611fc5565b91506124ea82612483565b604082019050919050565b6000602082019050818103600083015261250e816124d2565b9050919050565b6000612520826120ca565b915061252b836120ca565b925082820190508082111561254357612542612420565b5b92915050565b7f436c6f776e546f776e3a20496e76616c696420686f7573652061646472657373600082015250565b600061257f602083611fc5565b915061258a82612549565b602082019050919050565b600060208201905081810360008301526125ae81612572565b9050919050565b7f436c6f776e546f776e3a20486f757365206164647265737320616c726561647960008201527f206861732041444d494e5f524f4c450000000000000000000000000000000000602082015250565b6000612611602f83611fc5565b915061261c826125b5565b604082019050919050565b6000602082019050818103600083015261264081612604565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006126a3602583611fc5565b91506126ae82612647565b604082019050919050565b600060208201905081810360008301526126d281612696565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612735602483611fc5565b9150612740826126d9565b604082019050919050565b6000602082019050818103600083015261276481612728565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006127c7602283611fc5565b91506127d28261276b565b604082019050919050565b600060208201905081810360008301526127f6816127ba565b9050919050565b7f5265656e7472616e742063616c6c000000000000000000000000000000000000600082015250565b6000612833600e83611fc5565b915061283e826127fd565b602082019050919050565b6000602082019050818103600083015261286281612826565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006128c5602583611fc5565b91506128d082612869565b604082019050919050565b600060208201905081810360008301526128f4816128b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612957602383611fc5565b9150612962826128fb565b604082019050919050565b600060208201905081810360008301526129868161294a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006129e9602683611fc5565b91506129f48261298d565b604082019050919050565b60006020820190508181036000830152612a18816129dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a59826120ca565b9150612a64836120ca565b925082612a7457612a73612a1f565b5b828204905092915050565b6000612a8a826120ca565b9150612a95836120ca565b925082612aa557612aa4612a1f565b5b828206905092915050565b6000612abb826120ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612aed57612aec612420565b5b600182019050919050565b7f436c6f776e546f776e3a20486f7573652061646472657373206e6f7420736574600082015250565b6000612b2e602083611fc5565b9150612b3982612af8565b602082019050919050565b60006020820190508181036000830152612b5d81612b21565b9050919050565b7f436c6f776e546f776e3a20506f742062616c616e6365206973207a65726f0000600082015250565b6000612b9a601e83611fc5565b9150612ba582612b64565b602082019050919050565b60006020820190508181036000830152612bc981612b8d565b9050919050565b7f436c6f776e546f776e3a2053656e6465722061646472657373206973207a657260008201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c2c602183611fc5565b9150612c3782612bd0565b604082019050919050565b60006020820190508181036000830152612c5b81612c1f565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612ca3601783612c62565b9150612cae82612c6d565b601782019050919050565b6000612cc482611fba565b612cce8185612c62565b9350612cde818560208601611fd6565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612d20601183612c62565b9150612d2b82612cea565b601182019050919050565b6000612d4182612c96565b9150612d4d8285612cb9565b9150612d5882612d13565b9150612d648284612cb9565b91508190509392505050565b6000612d7b826120ca565b9150612d86836120ca565b9250828202612d94816120ca565b91508282048414831517612dab57612daa612420565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612e1b826120ca565b915060008203612e2e57612e2d612420565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612e6f602083611fc5565b9150612e7a82612e39565b602082019050919050565b60006020820190508181036000830152612e9e81612e62565b905091905056fea26469706673582212208f37942170821eb3bc9d2c71e7329cea6a8bcb793e39687aaa6a41fec198c45f64736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d7146103c8578063a9059cbb146103f8578063c3f4f54f14610428578063d547741f14610446578063dd62ed3e14610462578063e58378bb146104925761014d565b806370a08231146102f257806375b238fc146103225780637f2a8a801461034057806391d148541461035c57806395d89b411461038c578063a217fddf146103aa5761014d565b8063248a9ca311610115578063248a9ca31461021e5780632f2ff15d1461024e578063313ce5671461026a57806336568abe1461028857806339509351146102a4578063403c9fa8146102d45761014d565b806301ffc9a71461015257806306fdde0314610182578063095ea7b3146101a057806318160ddd146101d057806323b872dd146101ee575b600080fd5b61016c60048036038101906101679190611f57565b6104b0565b6040516101799190611f9f565b60405180910390f35b61018a61052a565b604051610197919061204a565b60405180910390f35b6101ba60048036038101906101b59190612100565b6105bc565b6040516101c79190611f9f565b60405180910390f35b6101d86105d3565b6040516101e5919061214f565b60405180910390f35b6102086004803603810190610203919061216a565b6105dd565b6040516102159190611f9f565b60405180910390f35b610238600480360381019061023391906121f3565b6106d0565b604051610245919061222f565b60405180910390f35b6102686004803603810190610263919061224a565b6106ef565b005b610272610710565b60405161027f91906122a6565b60405180910390f35b6102a2600480360381019061029d919061224a565b610727565b005b6102be60048036038101906102b99190612100565b6107aa565b6040516102cb9190611f9f565b60405180910390f35b6102dc610848565b6040516102e9919061214f565b60405180910390f35b61030c600480360381019061030791906122c1565b610852565b604051610319919061214f565b60405180910390f35b61032a61089b565b604051610337919061222f565b60405180910390f35b61035a600480360381019061035591906122c1565b6108bf565b005b6103766004803603810190610371919061224a565b610b50565b6040516103839190611f9f565b60405180910390f35b610394610bba565b6040516103a1919061204a565b60405180910390f35b6103b2610c4c565b6040516103bf919061222f565b60405180910390f35b6103e260048036038101906103dd9190612100565b610c53565b6040516103ef9190611f9f565b60405180910390f35b610412600480360381019061040d9190612100565b610d39565b60405161041f9190611f9f565b60405180910390f35b610430610d50565b60405161043d919061214f565b60405180910390f35b610460600480360381019061045b919061224a565b610d5a565b005b61047c600480360381019061047791906122ee565b610d7b565b604051610489919061214f565b60405180910390f35b61049a610e02565b6040516104a7919061222f565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610523575061052282610e26565b5b9050919050565b6060600180546105399061235d565b80601f01602080910402602001604051908101604052809291908181526020018280546105659061235d565b80156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b60006105c9338484610e90565b6001905092915050565b6000600454905090565b60006105ea848484611059565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a590612400565b60405180910390fd5b6106c4853385846106bf919061244f565b610e90565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6106f8826106d0565b61070181611591565b61070b83836115a5565b505050565b6000600360009054906101000a900460ff16905090565b61072f611685565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906124f5565b60405180910390fd5b6107a6828261168d565b5050565b600061083e338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108399190612515565b610e90565b6001905092915050565b6000600754905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756108e981611591565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90612595565b60405180910390fd5b6109827fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610b50565b156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990612627565b60405180910390fd5b6109ec7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775836106ef565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f57610a8e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d5a565b5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe8344c136ea69cb1a71d69e6393078e3f183889be224dcef59edafc7d32d917760405160405180910390a35050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060028054610bc99061235d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf59061235d565b8015610c425780601f10610c1757610100808354040283529160200191610c42565b820191906000526020600020905b815481529060010190602001808311610c2557829003601f168201915b5050505050905090565b6000801b81565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f906126b9565b60405180910390fd5b610d2e33858584610d29919061244f565b610e90565b600191505092915050565b6000610d46338484611059565b6001905092915050565b6000600954905090565b610d63826106d0565b610d6c81611591565b610d76838361168d565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef69061274b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f65906127dd565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161104c919061214f565b60405180910390a3505050565b600c60009054906101000a900460ff16156110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090612849565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a906128db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111999061296d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b906129ff565b60405180910390fd5b60006064826112339190612a4e565b905060006002826112449190612a4e565b905060008183611254919061244f565b905060008385611264919061244f565b905084600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112b1919061244f565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113439190612515565b92505081905550826007600082825461135c9190612515565b925050819055508160046000828254611375919061244f565b92505081905550816009600082825461138e9190612515565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f3919061214f565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611458919061214f565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114bd919061214f565b60405180910390a36114cd61176e565b6000600754111561156d576000600a5484426114e99190612515565b6114f39190612515565b9050633b9aca00816115059190612a7f565b905060006045826115169190612a7f565b0361152857611523611811565b61156b565b60006101a4826115389190612a7f565b0361154b57611546336119e1565b61156a565b60006105398261155b9190612a7f565b0361156957611568611b4c565b5b5b5b505b505050506000600c60006101000a81548160ff021916908315150217905550505050565b6115a28161159d611685565b611c0c565b50565b6115af8282610b50565b61168157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611626611685565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6116978282610b50565b1561176a57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061170f611685565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600b600081548092919061178190612ab0565b9190505550602a600b5411156117a6576001600a819055506001600b8190555061180f565b6002600b54116117bd576001600a8190555061180e565b6000600190506000600190506000600390505b600b54811161180357600082846117e79190612515565b90508293508092505080806117fb90612ab0565b9150506117d0565b5080600a8190555050505b5b565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189990612b44565b60405180910390fd5b6000600754116118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de90612bb0565b60405180910390fd5b6000600754905060006007819055508060056000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119679190612515565b92505081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7c501ab2a5fadb4e199cf39b6f0e2737de3142ea33bd67e788397e1deab01552826040516119d6919061214f565b60405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790612c42565b60405180910390fd5b600060075411611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90612bb0565b60405180910390fd5b60006007549050600060078190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611af39190612515565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f4ecd1429b23fed85267ae69909f495ad79bbccfb60b4263a29db9d36201d856d82604051611b40919061214f565b60405180910390a25050565b600060075411611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890612bb0565b60405180910390fd5b6000600754905060006007819055508060046000828254611bb2919061244f565b925050819055508060096000828254611bcb9190612515565b925050819055507f967209b0d71500a405da13d7695bb47b725d200797e9097864ce31117c4023c781604051611c01919061214f565b60405180910390a150565b611c168282610b50565b611c8d57611c2381611c91565b611c318360001c6020611cbe565b604051602001611c42929190612d36565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84919061204a565b60405180910390fd5b5050565b6060611cb78273ffffffffffffffffffffffffffffffffffffffff16601460ff16611cbe565b9050919050565b606060006002836002611cd19190612d70565b611cdb9190612515565b67ffffffffffffffff811115611cf457611cf3612db2565b5b6040519080825280601f01601f191660200182016040528015611d265781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d5e57611d5d612de1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611dc257611dc1612de1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611e029190612d70565b611e0c9190612515565b90505b6001811115611eac577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611e4e57611e4d612de1565b5b1a60f81b828281518110611e6557611e64612de1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611ea590612e10565b9050611e0f565b5060008414611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee790612e85565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f3481611eff565b8114611f3f57600080fd5b50565b600081359050611f5181611f2b565b92915050565b600060208284031215611f6d57611f6c611efa565b5b6000611f7b84828501611f42565b91505092915050565b60008115159050919050565b611f9981611f84565b82525050565b6000602082019050611fb46000830184611f90565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ff4578082015181840152602081019050611fd9565b60008484015250505050565b6000601f19601f8301169050919050565b600061201c82611fba565b6120268185611fc5565b9350612036818560208601611fd6565b61203f81612000565b840191505092915050565b600060208201905081810360008301526120648184612011565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120978261206c565b9050919050565b6120a78161208c565b81146120b257600080fd5b50565b6000813590506120c48161209e565b92915050565b6000819050919050565b6120dd816120ca565b81146120e857600080fd5b50565b6000813590506120fa816120d4565b92915050565b6000806040838503121561211757612116611efa565b5b6000612125858286016120b5565b9250506020612136858286016120eb565b9150509250929050565b612149816120ca565b82525050565b60006020820190506121646000830184612140565b92915050565b60008060006060848603121561218357612182611efa565b5b6000612191868287016120b5565b93505060206121a2868287016120b5565b92505060406121b3868287016120eb565b9150509250925092565b6000819050919050565b6121d0816121bd565b81146121db57600080fd5b50565b6000813590506121ed816121c7565b92915050565b60006020828403121561220957612208611efa565b5b6000612217848285016121de565b91505092915050565b612229816121bd565b82525050565b60006020820190506122446000830184612220565b92915050565b6000806040838503121561226157612260611efa565b5b600061226f858286016121de565b9250506020612280858286016120b5565b9150509250929050565b600060ff82169050919050565b6122a08161228a565b82525050565b60006020820190506122bb6000830184612297565b92915050565b6000602082840312156122d7576122d6611efa565b5b60006122e5848285016120b5565b91505092915050565b6000806040838503121561230557612304611efa565b5b6000612313858286016120b5565b9250506020612324858286016120b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061237557607f821691505b6020821081036123885761238761232e565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006123ea602883611fc5565b91506123f58261238e565b604082019050919050565b60006020820190508181036000830152612419816123dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061245a826120ca565b9150612465836120ca565b925082820390508181111561247d5761247c612420565b5b92915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006124df602f83611fc5565b91506124ea82612483565b604082019050919050565b6000602082019050818103600083015261250e816124d2565b9050919050565b6000612520826120ca565b915061252b836120ca565b925082820190508082111561254357612542612420565b5b92915050565b7f436c6f776e546f776e3a20496e76616c696420686f7573652061646472657373600082015250565b600061257f602083611fc5565b915061258a82612549565b602082019050919050565b600060208201905081810360008301526125ae81612572565b9050919050565b7f436c6f776e546f776e3a20486f757365206164647265737320616c726561647960008201527f206861732041444d494e5f524f4c450000000000000000000000000000000000602082015250565b6000612611602f83611fc5565b915061261c826125b5565b604082019050919050565b6000602082019050818103600083015261264081612604565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006126a3602583611fc5565b91506126ae82612647565b604082019050919050565b600060208201905081810360008301526126d281612696565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612735602483611fc5565b9150612740826126d9565b604082019050919050565b6000602082019050818103600083015261276481612728565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006127c7602283611fc5565b91506127d28261276b565b604082019050919050565b600060208201905081810360008301526127f6816127ba565b9050919050565b7f5265656e7472616e742063616c6c000000000000000000000000000000000000600082015250565b6000612833600e83611fc5565b915061283e826127fd565b602082019050919050565b6000602082019050818103600083015261286281612826565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006128c5602583611fc5565b91506128d082612869565b604082019050919050565b600060208201905081810360008301526128f4816128b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612957602383611fc5565b9150612962826128fb565b604082019050919050565b600060208201905081810360008301526129868161294a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006129e9602683611fc5565b91506129f48261298d565b604082019050919050565b60006020820190508181036000830152612a18816129dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a59826120ca565b9150612a64836120ca565b925082612a7457612a73612a1f565b5b828204905092915050565b6000612a8a826120ca565b9150612a95836120ca565b925082612aa557612aa4612a1f565b5b828206905092915050565b6000612abb826120ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612aed57612aec612420565b5b600182019050919050565b7f436c6f776e546f776e3a20486f7573652061646472657373206e6f7420736574600082015250565b6000612b2e602083611fc5565b9150612b3982612af8565b602082019050919050565b60006020820190508181036000830152612b5d81612b21565b9050919050565b7f436c6f776e546f776e3a20506f742062616c616e6365206973207a65726f0000600082015250565b6000612b9a601e83611fc5565b9150612ba582612b64565b602082019050919050565b60006020820190508181036000830152612bc981612b8d565b9050919050565b7f436c6f776e546f776e3a2053656e6465722061646472657373206973207a657260008201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c2c602183611fc5565b9150612c3782612bd0565b604082019050919050565b60006020820190508181036000830152612c5b81612c1f565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612ca3601783612c62565b9150612cae82612c6d565b601782019050919050565b6000612cc482611fba565b612cce8185612c62565b9350612cde818560208601611fd6565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612d20601183612c62565b9150612d2b82612cea565b601182019050919050565b6000612d4182612c96565b9150612d4d8285612cb9565b9150612d5882612d13565b9150612d648284612cb9565b91508190509392505050565b6000612d7b826120ca565b9150612d86836120ca565b9250828202612d94816120ca565b91508282048414831517612dab57612daa612420565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612e1b826120ca565b915060008203612e2e57612e2d612420565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612e6f602083611fc5565b9150612e7a82612e39565b602082019050919050565b60006020820190508181036000830152612e9e81612e62565b905091905056fea26469706673582212208f37942170821eb3bc9d2c71e7329cea6a8bcb793e39687aaa6a41fec198c45f64736f6c63430008130033

Deployed Bytecode Sourcemap

19343:7422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16211:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21216:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22037:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21505:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22192:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16960:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17086:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21410:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17377:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22573:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24841:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21608:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19438:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25021:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16413:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21311:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16086:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22772:340;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21730:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24922:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17230:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21891:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19502:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16211:194;16296:4;16328:32;16313:47;;;:11;:47;;;;:87;;;;16364:36;16388:11;16364:23;:36::i;:::-;16313:87;16306:94;;16211:194;;;:::o;21216:90::-;21270:13;21296:5;21289:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21216:90;:::o;22037:150::-;22120:4;22130:37;22139:10;22151:7;22160:6;22130:8;:37::i;:::-;22178:4;22171:11;;22037:150;;;;:::o;21505:98::-;21566:7;21586:12;;21579:19;;21505:98;:::o;22192:376::-;22298:4;22308:36;22318:6;22326:9;22337:6;22308:9;:36::i;:::-;22348:24;22375:11;:19;22387:6;22375:19;;;;;;;;;;;;;;;:31;22395:10;22375:31;;;;;;;;;;;;;;;;22348:58;;22438:6;22418:16;:26;;22410:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22493:55;22502:6;22510:10;22541:6;22522:16;:25;;;;:::i;:::-;22493:8;:55::i;:::-;22559:4;22552:11;;;22192:376;;;;;:::o;16960:121::-;17034:7;17054:6;:12;17061:4;17054:12;;;;;;;;;;;:22;;;17047:29;;16960:121;;;:::o;17086:137::-;17169:18;17182:4;17169:12;:18::i;:::-;16177:16;16188:4;16177:10;:16::i;:::-;17193:25:::1;17204:4;17210:7;17193:10;:25::i;:::-;17086:137:::0;;;:::o;21410:90::-;21468:5;21486:9;;;;;;;;;;;21479:16;;21410:90;:::o;17377:201::-;17477:12;:10;:12::i;:::-;17466:23;;:7;:23;;;17458:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17547:26;17559:4;17565:7;17547:11;:26::i;:::-;17377:201;;:::o;22573:194::-;22661:4;22671:76;22680:10;22692:7;22736:10;22701:11;:23;22713:10;22701:23;;;;;;;;;;;;;;;:32;22725:7;22701:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;22671:8;:76::i;:::-;22758:4;22751:11;;22573:194;;;;:::o;24841:76::-;24888:7;24908:4;;24901:11;;24841:76;:::o;21608:117::-;21682:7;21702:9;:18;21712:7;21702:18;;;;;;;;;;;;;;;;21695:25;;21608:117;;;:::o;19438:60::-;19475:23;19438:60;:::o;25021:406::-;19475:23;16177:16;16188:4;16177:10;:16::i;:::-;25115:1:::1;25096:21;;:7;:21;;::::0;25088:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25169:28;19475:23;25189:7;25169;:28::i;:::-;25168:29;25160:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;25255:30;19475:23;25277:7;25255:9;:30::i;:::-;25313:1;25295:20;;:6;;;;;;;;;;;:20;;;25291:65;;25321:30;19475:23;25344:6;;;;;;;;;;;25321:10;:30::i;:::-;25291:65;25370:7;25361:6;;:16;;;;;;;;;;;;;;;;;;25414:7;25386:36;;25406:6;;;;;;;;;;;25386:36;;;;;;;;;;;;25021:406:::0;;:::o;16413:137::-;16499:4;16516:6;:12;16523:4;16516:12;;;;;;;;;;;:20;;:29;16537:7;16516:29;;;;;;;;;;;;;;;;;;;;;;;;;16509:36;;16413:137;;;;:::o;21311:94::-;21367:13;21393:7;21386:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21311:94;:::o;16086:49::-;16131:4;16086:49;;;:::o;22772:340::-;22865:4;22875:24;22902:11;:23;22914:10;22902:23;;;;;;;;;;;;;;;:32;22926:7;22902:32;;;;;;;;;;;;;;;;22875:59;;22966:15;22946:16;:35;;22938:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23027:65;23036:10;23048:7;23076:15;23057:16;:34;;;;:::i;:::-;23027:8;:65::i;:::-;23103:4;23096:11;;;22772:340;;;;:::o;21730:156::-;21816:4;21826:40;21836:10;21848:9;21859:6;21826:9;:40::i;:::-;21877:4;21870:11;;21730:156;;;;:::o;24922:94::-;24978:7;24998:13;;24991:20;;24922:94;:::o;17230:139::-;17314:18;17327:4;17314:12;:18::i;:::-;16177:16;16188:4;16177:10;:16::i;:::-;17338:26:::1;17350:4;17356:7;17338:11;:26::i;:::-;17230:139:::0;;;:::o;21891:141::-;21980:7;22000:11;:18;22012:5;22000:18;;;;;;;;;;;;;;;:27;22019:7;22000:27;;;;;;;;;;;;;;;;21993:34;;21891:141;;;;:::o;19502:60::-;19539:23;19502:60;:::o;7389:147::-;7474:4;7506:25;7491:40;;;:11;:40;;;;7484:47;;7389:147;;;:::o;24420:315::-;24532:1;24515:19;;:5;:19;;;24507:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24606:1;24587:21;;:7;:21;;;24579:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24683:6;24653:11;:18;24665:5;24653:18;;;;;;;;;;;;;;;:27;24672:7;24653:27;;;;;;;;;;;;;;;:36;;;;24714:7;24698:32;;24707:5;24698:32;;;24723:6;24698:32;;;;;;:::i;:::-;;;;;;;;24420:315;;;:::o;23117:1298::-;20757:7;;;;;;;;;;;20756:8;20748:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;20797:4;20787:7;;:14;;;;;;;;;;;;;;;;;;23247:1:::1;23229:20;;:6;:20;;::::0;23221:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23324:1;23303:23;;:9;:23;;::::0;23295:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23399:6;23378:9;:17;23388:6;23378:17;;;;;;;;;;;;;;;;:27;;23370:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;23454:17;23483:3;23474:6;:12;;;;:::i;:::-;23454:32;;23500:17;23532:1;23520:9;:13;;;;:::i;:::-;23500:33;;23568:18;23601:9;23589;:21;;;;:::i;:::-;23568:42;;23646:22;23680:9;23671:6;:18;;;;:::i;:::-;23646:43;;23735:6;23715:9;:17;23725:6;23715:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;23695:9;:17;23705:6;23695:17;;;;;;;;;;;;;;;:46;;;;23771:14;23747:9;:20;23757:9;23747:20;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;23799:9;23791:4;;:17;;;;;;;:::i;:::-;;;;;;;;23830:10;23814:12;;:26;;;;;;;:::i;:::-;;;;;;;;23861:10;23844:13;;:27;;;;;;;:::i;:::-;;;;;;;;23905:1;23880:40;;23889:6;23880:40;;;23909:10;23880:40;;;;;;:::i;:::-;;;;;;;;23948:9;23931:43;;23940:6;23931:43;;;23959:14;23931:43;;;;;;:::i;:::-;;;;;;;;24008:4;23983:42;;23992:6;23983:42;;;24015:9;23983:42;;;;;;:::i;:::-;;;;;;;;24075:31;:29;:31::i;:::-;24123:1;24116:4;;:8;24112:299;;;24130:11;24174:18;;24162:9;24144:15;:27;;;;:::i;:::-;:48;;;;:::i;:::-;24130:62;;24210:5;24204:3;:11;;;;:::i;:::-;24198:17;;24246:1;19881:2;24225:3;:17;;;;:::i;:::-;:22:::0;24221:186:::1;;24253:21;:19;:21::i;:::-;24221:186;;;24310:1;19981:3;24289;:17;;;;:::i;:::-;:22:::0;24285:122:::1;;24317:32;24338:10;24317:20;:32::i;:::-;24285:122;;;24385:1;20084:4;24364:3;:17;;;;:::i;:::-;:22:::0;24360:47:::1;;24392:10;:8;:10::i;:::-;24360:47;24285:122;24221:186;24126:285;24112:299;23217:1198;;;;20820:5:::0;20810:7;;:15;;;;;;;;;;;;;;;;;;23117:1298;;;:::o;16557:95::-;16617:30;16628:4;16634:12;:10;:12::i;:::-;16617:10;:30::i;:::-;16557:95;:::o;17928:199::-;18005:22;18013:4;18019:7;18005;:22::i;:::-;18000:123;;18065:4;18033:6;:12;18040:4;18033:12;;;;;;;;;;;:20;;:29;18054:7;18033:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18105:12;:10;:12::i;:::-;18078:40;;18096:7;18078:40;;18090:4;18078:40;;;;;;;;;;18000:123;17928:199;;:::o;14938:88::-;14991:7;15011:10;15004:17;;14938:88;:::o;18135:200::-;18212:22;18220:4;18226:7;18212;:22::i;:::-;18208:123;;;18272:5;18240:6;:12;18247:4;18240:12;;;;;;;;;;;:20;;:29;18261:7;18240:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18313:12;:10;:12::i;:::-;18286:40;;18304:7;18286:40;;18298:4;18286:40;;;;;;;;;;18208:123;18135:200;;:::o;26375:387::-;26429:15;;:17;;;;;;;;;:::i;:::-;;;;;;26472:2;26454:15;;:20;26450:308;;;26501:1;26480:18;:22;;;;26524:1;26506:15;:19;;;;26450:308;;;26559:1;26540:15;;:20;26536:222;;26587:1;26566:18;:22;;;;26536:222;;;26603:9;26615:1;26603:13;;26620:9;26632:1;26620:13;;26642:9;26654:1;26642:13;;26637:91;26662:15;;26657:1;:20;26637:91;;26688:9;26704:1;26700;:5;;;;:::i;:::-;26688:17;;26713:1;26709:5;;26722:1;26718:5;;26684:44;26679:3;;;;;:::i;:::-;;;;26637:91;;;;26752:1;26731:18;:22;;;;26599:159;;26536:222;26450:308;26375:387::o;25432:296::-;25502:1;25484:20;;:6;;;;;;;;;;;:20;;;25476:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;25560:1;25553:4;;:8;25545:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25602:17;25622:4;;25602:24;;25637:1;25630:4;:8;;;;25665:9;25644;:17;25654:6;;;;;;;;;;;25644:17;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;25705:6;;;;;;;;;;;25683:40;;;25713:9;25683:40;;;;;;:::i;:::-;;;;;;;;25472:256;25432:296::o;25733:385::-;25818:1;25800:20;;:6;:20;;;25792:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25877:1;25870:4;;:8;25862:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25919:17;25939:4;;25919:24;;25954:1;25947:4;:8;;;;26054:9;26033;:17;26043:6;26033:17;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;26095:6;26072:41;;;26103:9;26072:41;;;;;;:::i;:::-;;;;;;;;25788:330;25733:385;:::o;26123:247::-;26171:1;26164:4;;:8;26156:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26213:17;26233:4;;26213:24;;26248:1;26241:4;:8;;;;26297:9;26281:12;;:25;;;;;;;:::i;:::-;;;;;;;;26327:9;26310:13;;:26;;;;;;;:::i;:::-;;;;;;;;26345:20;26355:9;26345:20;;;;;;:::i;:::-;;;;;;;;26152:218;26123:247::o;16660:293::-;16742:22;16750:4;16756:7;16742;:22::i;:::-;16737:212;;16839:28;16859:7;16839:19;:28::i;:::-;16894:38;16922:4;16914:13;;16929:2;16894:19;:38::i;:::-;16790:146;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16770:174;;;;;;;;;;;:::i;:::-;;;;;;;;16737:212;16660:293;;:::o;14599:141::-;14657:13;14683:52;14711:4;14695:22;;13400:2;14683:52;;:11;:52::i;:::-;14676:59;;14599:141;;;:::o;14219:373::-;14294:13;14313:19;14358:1;14349:6;14345:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;14335:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14313:47;;14364:15;:6;14371:1;14364:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;14383;:6;14390:1;14383:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;14407:9;14432:1;14423:6;14419:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;14407:26;;14402:102;14439:1;14435;:5;14402:102;;;14463:8;14480:3;14472:5;:11;14463:21;;;;;;;:::i;:::-;;;;;14451:6;14458:1;14451:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;14498:1;14488:11;;;;;14442:3;;;;:::i;:::-;;;14402:102;;;;14524:1;14515:5;:10;14507:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14580:6;14566:21;;;14219:373;;;;:::o;88:117:1:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:126::-;2897:7;2937:42;2930:5;2926:54;2915:65;;2860:126;;;:::o;2992:96::-;3029:7;3058:24;3076:5;3058:24;:::i;:::-;3047:35;;2992:96;;;:::o;3094:122::-;3167:24;3185:5;3167:24;:::i;:::-;3160:5;3157:35;3147:63;;3206:1;3203;3196:12;3147:63;3094:122;:::o;3222:139::-;3268:5;3306:6;3293:20;3284:29;;3322:33;3349:5;3322:33;:::i;:::-;3222:139;;;;:::o;3367:77::-;3404:7;3433:5;3422:16;;3367:77;;;:::o;3450:122::-;3523:24;3541:5;3523:24;:::i;:::-;3516:5;3513:35;3503:63;;3562:1;3559;3552:12;3503:63;3450:122;:::o;3578:139::-;3624:5;3662:6;3649:20;3640:29;;3678:33;3705:5;3678:33;:::i;:::-;3578:139;;;;:::o;3723:474::-;3791:6;3799;3848:2;3836:9;3827:7;3823:23;3819:32;3816:119;;;3854:79;;:::i;:::-;3816:119;3974:1;3999:53;4044:7;4035:6;4024:9;4020:22;3999:53;:::i;:::-;3989:63;;3945:117;4101:2;4127:53;4172:7;4163:6;4152:9;4148:22;4127:53;:::i;:::-;4117:63;;4072:118;3723:474;;;;;:::o;4203:118::-;4290:24;4308:5;4290:24;:::i;:::-;4285:3;4278:37;4203:118;;:::o;4327:222::-;4420:4;4458:2;4447:9;4443:18;4435:26;;4471:71;4539:1;4528:9;4524:17;4515:6;4471:71;:::i;:::-;4327:222;;;;:::o;4555:619::-;4632:6;4640;4648;4697:2;4685:9;4676:7;4672:23;4668:32;4665:119;;;4703:79;;:::i;:::-;4665:119;4823:1;4848:53;4893:7;4884:6;4873:9;4869:22;4848:53;:::i;:::-;4838:63;;4794:117;4950:2;4976:53;5021:7;5012:6;5001:9;4997:22;4976:53;:::i;:::-;4966:63;;4921:118;5078:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;:::i;:::-;5094:63;;5049:118;4555:619;;;;;:::o;5180:77::-;5217:7;5246:5;5235:16;;5180:77;;;:::o;5263:122::-;5336:24;5354:5;5336:24;:::i;:::-;5329:5;5326:35;5316:63;;5375:1;5372;5365:12;5316:63;5263:122;:::o;5391:139::-;5437:5;5475:6;5462:20;5453:29;;5491:33;5518:5;5491:33;:::i;:::-;5391:139;;;;:::o;5536:329::-;5595:6;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:53;5840:7;5831:6;5820:9;5816:22;5795:53;:::i;:::-;5785:63;;5741:117;5536:329;;;;:::o;5871:118::-;5958:24;5976:5;5958:24;:::i;:::-;5953:3;5946:37;5871:118;;:::o;5995:222::-;6088:4;6126:2;6115:9;6111:18;6103:26;;6139:71;6207:1;6196:9;6192:17;6183:6;6139:71;:::i;:::-;5995:222;;;;:::o;6223:474::-;6291:6;6299;6348:2;6336:9;6327:7;6323:23;6319:32;6316:119;;;6354:79;;:::i;:::-;6316:119;6474:1;6499:53;6544:7;6535:6;6524:9;6520:22;6499:53;:::i;:::-;6489:63;;6445:117;6601:2;6627:53;6672:7;6663:6;6652:9;6648:22;6627:53;:::i;:::-;6617:63;;6572:118;6223:474;;;;;:::o;6703:86::-;6738:7;6778:4;6771:5;6767:16;6756:27;;6703:86;;;:::o;6795:112::-;6878:22;6894:5;6878:22;:::i;:::-;6873:3;6866:35;6795:112;;:::o;6913:214::-;7002:4;7040:2;7029:9;7025:18;7017:26;;7053:67;7117:1;7106:9;7102:17;7093:6;7053:67;:::i;:::-;6913:214;;;;:::o;7133:329::-;7192:6;7241:2;7229:9;7220:7;7216:23;7212:32;7209:119;;;7247:79;;:::i;:::-;7209:119;7367:1;7392:53;7437:7;7428:6;7417:9;7413:22;7392:53;:::i;:::-;7382:63;;7338:117;7133:329;;;;:::o;7468:474::-;7536:6;7544;7593:2;7581:9;7572:7;7568:23;7564:32;7561:119;;;7599:79;;:::i;:::-;7561:119;7719:1;7744:53;7789:7;7780:6;7769:9;7765:22;7744:53;:::i;:::-;7734:63;;7690:117;7846:2;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7817:118;7468:474;;;;;:::o;7948:180::-;7996:77;7993:1;7986:88;8093:4;8090:1;8083:15;8117:4;8114:1;8107:15;8134:320;8178:6;8215:1;8209:4;8205:12;8195:22;;8262:1;8256:4;8252:12;8283:18;8273:81;;8339:4;8331:6;8327:17;8317:27;;8273:81;8401:2;8393:6;8390:14;8370:18;8367:38;8364:84;;8420:18;;:::i;:::-;8364:84;8185:269;8134:320;;;:::o;8460:227::-;8600:34;8596:1;8588:6;8584:14;8577:58;8669:10;8664:2;8656:6;8652:15;8645:35;8460:227;:::o;8693:366::-;8835:3;8856:67;8920:2;8915:3;8856:67;:::i;:::-;8849:74;;8932:93;9021:3;8932:93;:::i;:::-;9050:2;9045:3;9041:12;9034:19;;8693:366;;;:::o;9065:419::-;9231:4;9269:2;9258:9;9254:18;9246:26;;9318:9;9312:4;9308:20;9304:1;9293:9;9289:17;9282:47;9346:131;9472:4;9346:131;:::i;:::-;9338:139;;9065:419;;;:::o;9490:180::-;9538:77;9535:1;9528:88;9635:4;9632:1;9625:15;9659:4;9656:1;9649:15;9676:194;9716:4;9736:20;9754:1;9736:20;:::i;:::-;9731:25;;9770:20;9788:1;9770:20;:::i;:::-;9765:25;;9814:1;9811;9807:9;9799:17;;9838:1;9832:4;9829:11;9826:37;;;9843:18;;:::i;:::-;9826:37;9676:194;;;;:::o;9876:234::-;10016:34;10012:1;10004:6;10000:14;9993:58;10085:17;10080:2;10072:6;10068:15;10061:42;9876:234;:::o;10116:366::-;10258:3;10279:67;10343:2;10338:3;10279:67;:::i;:::-;10272:74;;10355:93;10444:3;10355:93;:::i;:::-;10473:2;10468:3;10464:12;10457:19;;10116:366;;;:::o;10488:419::-;10654:4;10692:2;10681:9;10677:18;10669:26;;10741:9;10735:4;10731:20;10727:1;10716:9;10712:17;10705:47;10769:131;10895:4;10769:131;:::i;:::-;10761:139;;10488:419;;;:::o;10913:191::-;10953:3;10972:20;10990:1;10972:20;:::i;:::-;10967:25;;11006:20;11024:1;11006:20;:::i;:::-;11001:25;;11049:1;11046;11042:9;11035:16;;11070:3;11067:1;11064:10;11061:36;;;11077:18;;:::i;:::-;11061:36;10913:191;;;;:::o;11110:182::-;11250:34;11246:1;11238:6;11234:14;11227:58;11110:182;:::o;11298:366::-;11440:3;11461:67;11525:2;11520:3;11461:67;:::i;:::-;11454:74;;11537:93;11626:3;11537:93;:::i;:::-;11655:2;11650:3;11646:12;11639:19;;11298:366;;;:::o;11670:419::-;11836:4;11874:2;11863:9;11859:18;11851:26;;11923:9;11917:4;11913:20;11909:1;11898:9;11894:17;11887:47;11951:131;12077:4;11951:131;:::i;:::-;11943:139;;11670:419;;;:::o;12095:234::-;12235:34;12231:1;12223:6;12219:14;12212:58;12304:17;12299:2;12291:6;12287:15;12280:42;12095:234;:::o;12335:366::-;12477:3;12498:67;12562:2;12557:3;12498:67;:::i;:::-;12491:74;;12574:93;12663:3;12574:93;:::i;:::-;12692:2;12687:3;12683:12;12676:19;;12335:366;;;:::o;12707:419::-;12873:4;12911:2;12900:9;12896:18;12888:26;;12960:9;12954:4;12950:20;12946:1;12935:9;12931:17;12924:47;12988:131;13114:4;12988:131;:::i;:::-;12980:139;;12707:419;;;:::o;13132:224::-;13272:34;13268:1;13260:6;13256:14;13249:58;13341:7;13336:2;13328:6;13324:15;13317:32;13132:224;:::o;13362:366::-;13504:3;13525:67;13589:2;13584:3;13525:67;:::i;:::-;13518:74;;13601:93;13690:3;13601:93;:::i;:::-;13719:2;13714:3;13710:12;13703:19;;13362:366;;;:::o;13734:419::-;13900:4;13938:2;13927:9;13923:18;13915:26;;13987:9;13981:4;13977:20;13973:1;13962:9;13958:17;13951:47;14015:131;14141:4;14015:131;:::i;:::-;14007:139;;13734:419;;;:::o;14159:223::-;14299:34;14295:1;14287:6;14283:14;14276:58;14368:6;14363:2;14355:6;14351:15;14344:31;14159:223;:::o;14388:366::-;14530:3;14551:67;14615:2;14610:3;14551:67;:::i;:::-;14544:74;;14627:93;14716:3;14627:93;:::i;:::-;14745:2;14740:3;14736:12;14729:19;;14388:366;;;:::o;14760:419::-;14926:4;14964:2;14953:9;14949:18;14941:26;;15013:9;15007:4;15003:20;14999:1;14988:9;14984:17;14977:47;15041:131;15167:4;15041:131;:::i;:::-;15033:139;;14760:419;;;:::o;15185:221::-;15325:34;15321:1;15313:6;15309:14;15302:58;15394:4;15389:2;15381:6;15377:15;15370:29;15185:221;:::o;15412:366::-;15554:3;15575:67;15639:2;15634:3;15575:67;:::i;:::-;15568:74;;15651:93;15740:3;15651:93;:::i;:::-;15769:2;15764:3;15760:12;15753:19;;15412:366;;;:::o;15784:419::-;15950:4;15988:2;15977:9;15973:18;15965:26;;16037:9;16031:4;16027:20;16023:1;16012:9;16008:17;16001:47;16065:131;16191:4;16065:131;:::i;:::-;16057:139;;15784:419;;;:::o;16209:164::-;16349:16;16345:1;16337:6;16333:14;16326:40;16209:164;:::o;16379:366::-;16521:3;16542:67;16606:2;16601:3;16542:67;:::i;:::-;16535:74;;16618:93;16707:3;16618:93;:::i;:::-;16736:2;16731:3;16727:12;16720:19;;16379:366;;;:::o;16751:419::-;16917:4;16955:2;16944:9;16940:18;16932:26;;17004:9;16998:4;16994:20;16990:1;16979:9;16975:17;16968:47;17032:131;17158:4;17032:131;:::i;:::-;17024:139;;16751:419;;;:::o;17176:224::-;17316:34;17312:1;17304:6;17300:14;17293:58;17385:7;17380:2;17372:6;17368:15;17361:32;17176:224;:::o;17406:366::-;17548:3;17569:67;17633:2;17628:3;17569:67;:::i;:::-;17562:74;;17645:93;17734:3;17645:93;:::i;:::-;17763:2;17758:3;17754:12;17747:19;;17406:366;;;:::o;17778:419::-;17944:4;17982:2;17971:9;17967:18;17959:26;;18031:9;18025:4;18021:20;18017:1;18006:9;18002:17;17995:47;18059:131;18185:4;18059:131;:::i;:::-;18051:139;;17778:419;;;:::o;18203:222::-;18343:34;18339:1;18331:6;18327:14;18320:58;18412:5;18407:2;18399:6;18395:15;18388:30;18203:222;:::o;18431:366::-;18573:3;18594:67;18658:2;18653:3;18594:67;:::i;:::-;18587:74;;18670:93;18759:3;18670:93;:::i;:::-;18788:2;18783:3;18779:12;18772:19;;18431:366;;;:::o;18803:419::-;18969:4;19007:2;18996:9;18992:18;18984:26;;19056:9;19050:4;19046:20;19042:1;19031:9;19027:17;19020:47;19084:131;19210:4;19084:131;:::i;:::-;19076:139;;18803:419;;;:::o;19228:225::-;19368:34;19364:1;19356:6;19352:14;19345:58;19437:8;19432:2;19424:6;19420:15;19413:33;19228:225;:::o;19459:366::-;19601:3;19622:67;19686:2;19681:3;19622:67;:::i;:::-;19615:74;;19698:93;19787:3;19698:93;:::i;:::-;19816:2;19811:3;19807:12;19800:19;;19459:366;;;:::o;19831:419::-;19997:4;20035:2;20024:9;20020:18;20012:26;;20084:9;20078:4;20074:20;20070:1;20059:9;20055:17;20048:47;20112:131;20238:4;20112:131;:::i;:::-;20104:139;;19831:419;;;:::o;20256:180::-;20304:77;20301:1;20294:88;20401:4;20398:1;20391:15;20425:4;20422:1;20415:15;20442:185;20482:1;20499:20;20517:1;20499:20;:::i;:::-;20494:25;;20533:20;20551:1;20533:20;:::i;:::-;20528:25;;20572:1;20562:35;;20577:18;;:::i;:::-;20562:35;20619:1;20616;20612:9;20607:14;;20442:185;;;;:::o;20633:176::-;20665:1;20682:20;20700:1;20682:20;:::i;:::-;20677:25;;20716:20;20734:1;20716:20;:::i;:::-;20711:25;;20755:1;20745:35;;20760:18;;:::i;:::-;20745:35;20801:1;20798;20794:9;20789:14;;20633:176;;;;:::o;20815:233::-;20854:3;20877:24;20895:5;20877:24;:::i;:::-;20868:33;;20923:66;20916:5;20913:77;20910:103;;20993:18;;:::i;:::-;20910:103;21040:1;21033:5;21029:13;21022:20;;20815:233;;;:::o;21054:182::-;21194:34;21190:1;21182:6;21178:14;21171:58;21054:182;:::o;21242:366::-;21384:3;21405:67;21469:2;21464:3;21405:67;:::i;:::-;21398:74;;21481:93;21570:3;21481:93;:::i;:::-;21599:2;21594:3;21590:12;21583:19;;21242:366;;;:::o;21614:419::-;21780:4;21818:2;21807:9;21803:18;21795:26;;21867:9;21861:4;21857:20;21853:1;21842:9;21838:17;21831:47;21895:131;22021:4;21895:131;:::i;:::-;21887:139;;21614:419;;;:::o;22039:180::-;22179:32;22175:1;22167:6;22163:14;22156:56;22039:180;:::o;22225:366::-;22367:3;22388:67;22452:2;22447:3;22388:67;:::i;:::-;22381:74;;22464:93;22553:3;22464:93;:::i;:::-;22582:2;22577:3;22573:12;22566:19;;22225:366;;;:::o;22597:419::-;22763:4;22801:2;22790:9;22786:18;22778:26;;22850:9;22844:4;22840:20;22836:1;22825:9;22821:17;22814:47;22878:131;23004:4;22878:131;:::i;:::-;22870:139;;22597:419;;;:::o;23022:220::-;23162:34;23158:1;23150:6;23146:14;23139:58;23231:3;23226:2;23218:6;23214:15;23207:28;23022:220;:::o;23248:366::-;23390:3;23411:67;23475:2;23470:3;23411:67;:::i;:::-;23404:74;;23487:93;23576:3;23487:93;:::i;:::-;23605:2;23600:3;23596:12;23589:19;;23248:366;;;:::o;23620:419::-;23786:4;23824:2;23813:9;23809:18;23801:26;;23873:9;23867:4;23863:20;23859:1;23848:9;23844:17;23837:47;23901:131;24027:4;23901:131;:::i;:::-;23893:139;;23620:419;;;:::o;24045:148::-;24147:11;24184:3;24169:18;;24045:148;;;;:::o;24199:173::-;24339:25;24335:1;24327:6;24323:14;24316:49;24199:173;:::o;24378:402::-;24538:3;24559:85;24641:2;24636:3;24559:85;:::i;:::-;24552:92;;24653:93;24742:3;24653:93;:::i;:::-;24771:2;24766:3;24762:12;24755:19;;24378:402;;;:::o;24786:390::-;24892:3;24920:39;24953:5;24920:39;:::i;:::-;24975:89;25057:6;25052:3;24975:89;:::i;:::-;24968:96;;25073:65;25131:6;25126:3;25119:4;25112:5;25108:16;25073:65;:::i;:::-;25163:6;25158:3;25154:16;25147:23;;24896:280;24786:390;;;;:::o;25182:167::-;25322:19;25318:1;25310:6;25306:14;25299:43;25182:167;:::o;25355:402::-;25515:3;25536:85;25618:2;25613:3;25536:85;:::i;:::-;25529:92;;25630:93;25719:3;25630:93;:::i;:::-;25748:2;25743:3;25739:12;25732:19;;25355:402;;;:::o;25763:967::-;26145:3;26167:148;26311:3;26167:148;:::i;:::-;26160:155;;26332:95;26423:3;26414:6;26332:95;:::i;:::-;26325:102;;26444:148;26588:3;26444:148;:::i;:::-;26437:155;;26609:95;26700:3;26691:6;26609:95;:::i;:::-;26602:102;;26721:3;26714:10;;25763:967;;;;;:::o;26736:410::-;26776:7;26799:20;26817:1;26799:20;:::i;:::-;26794:25;;26833:20;26851:1;26833:20;:::i;:::-;26828:25;;26888:1;26885;26881:9;26910:30;26928:11;26910:30;:::i;:::-;26899:41;;27089:1;27080:7;27076:15;27073:1;27070:22;27050:1;27043:9;27023:83;27000:139;;27119:18;;:::i;:::-;27000:139;26784:362;26736:410;;;;:::o;27152:180::-;27200:77;27197:1;27190:88;27297:4;27294:1;27287:15;27321:4;27318:1;27311:15;27338:180;27386:77;27383:1;27376:88;27483:4;27480:1;27473:15;27507:4;27504:1;27497:15;27524:171;27563:3;27586:24;27604:5;27586:24;:::i;:::-;27577:33;;27632:4;27625:5;27622:15;27619:41;;27640:18;;:::i;:::-;27619:41;27687:1;27680:5;27676:13;27669:20;;27524:171;;;:::o;27701:182::-;27841:34;27837:1;27829:6;27825:14;27818:58;27701:182;:::o;27889:366::-;28031:3;28052:67;28116:2;28111:3;28052:67;:::i;:::-;28045:74;;28128:93;28217:3;28128:93;:::i;:::-;28246:2;28241:3;28237:12;28230:19;;27889:366;;;:::o;28261:419::-;28427:4;28465:2;28454:9;28450:18;28442:26;;28514:9;28508:4;28504:20;28500:1;28489:9;28485:17;28478:47;28542:131;28668:4;28542:131;:::i;:::-;28534:139;;28261:419;;;:::o

Swarm Source

ipfs://8f37942170821eb3bc9d2c71e7329cea6a8bcb793e39687aaa6a41fec198c45f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.