ETH Price: $2,632.05 (+0.78%)

Token

Lain Coin ($LAIN)
 

Overview

Max Total Supply

7,777,777 $LAIN

Holders

124

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 $LAIN

Value
$0.00
0x6f4f6d54e5abcadcc79ff6a2763970bef1749f59
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:
LainCoin

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-08-11
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

/*
THIS IS THE OFFICIAL LAIN COIN CONTRACT
https://laincoin.neocities.org/
https://x.com/Lainfanart
t.me/enterthewired
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠋⠉⠉⠁⠀⠀⠀⠀⠀⠈⠉⠉⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⣠⣤⣴⣶⣶⣾⣿⣿⣿⣿⣿⣷⣶⣶⣦⣤⣤⣀⡀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⢠⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⢀⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠁⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢸⡿⣿⣿⢸⡿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠾⣿⣿⠆⠀⠀⠀⠀⠀⠀⢉⡉⠉⠉⠉⠛⣿⣿⣿⣿⣿⣿⣿⣿⠂⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡿⠋⣁⣤⣼⣿⣭⠃⠀⠀⠀⠀⠀⠀⠋⢹⣿⣿⣿⣶⣄⠿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⢿⡞⣿⣿⣿⠿⠆⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⠛⠛⠀⠀⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⢻⣿⣿⡿⣿⣿⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠘⣿⣿⣧⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⢹⣿⣿⣦⣌⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣀⡀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠙⠛⠋⠉⠁⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠘⠿⠻⣿⣿⣿⣿⣿⣧⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⠠⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣷⣤⣄⡀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠹⢿⣿⣿⣿⣿⣿⣿⣿⠉⠛⠳⠦⣤⡤⠶⠛⠉⢹⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠉⠉⠉⠛⠛⠿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠏⠉⠀⣿⣿⡿⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⢀⣠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡀⠀⢀⣿⣿⠃⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⣻⠖⠒⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣦⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢹⡇⠀⠀⠀⢸⡆⠀⠀⣀⣠⡴⠦⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⢹⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⢸⡧⠀⠀⠀⠸⣏⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠛⠓⠀⣿⡟⠀⠀⠈⡟⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⢸⡇⠀⠀⠀⠀⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡿⠀⠀⠀⠀⡷⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⢠⡇⠀⠀⠀⠀⠀⠈⠛⢶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡾⠛⠟⠀⠀⠀⠀⠀⣧⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢶⣤⣀⠀⣀⣤⡴⠖⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⢰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢧⡄⠀⣴⢗⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⢸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡄⠀⠀⠀⣾⣿⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⡠⢀⣤⠀⣼⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⠀⠀⢠⣿⣿⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣴⣶⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢿⡄⠀⢸⣿⣿⡄⣿⠂⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⢀⠀⠰⡶⠀⠀⢶⡆⠀⠀⠀⠀⠐⢶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⡧⠾⡇⠀⠀⠘⣿⣿⣿⣿⣿⣿⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢷⡸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⡇⠀⠀⢸⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣆⣴⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡋⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⡏⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⡇⠀⠀⢸⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⣀⣀⣤⣀⠀⠀⣀⣠⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⡿⢫⣴⣤⡌⢿⣿⣷⡄⢰⣦⣿⣿⣿⣿⡿⢡⣤⣤⣿⣿⣿⣿⣿⣿⣤⣴⠄⢀⠀⠀⠀⡇⠀⠀⢸⡇⠀⠀⠀⠀⠀⢸⠀⢀⡾⠋⠀⠀⠙⣧⠀⠉⢸⣿⣿⡏⣼⣿⡿⢡⣴⣦⡈⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣯⣤⣶⡌⢿⣿⣿⠃⣿⣿⣿⢈⣹⣤⡄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⡇⢺⠿⠿⠟⢸⣿⣿⡇⣾⣿⣿⣿⣿⣿⣷⡘⠿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠀⢸⡇⠀⠀⣧⠀⠀⠸⡇⠀⠀⠀⠀⠀⢸⣇⡿⠁⡇⠀⠀⠀⢸⣦⡄⠘⣿⣿⢠⣿⣿⠁⠿⠿⠿⠇⢸⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⠿⠻⠿⢿⣿⣿⠀⣿⣿⣿⠈⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⡇⢸⣿⣾⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣯⣿⣶⡌⣿⣿⣿⣿⣿⠁⣾⣿⡆⢸⣇⣼⡀⢹⣄⡀⠀⣿⠀⠀⠀⠀⠀⠐⣿⣷⠀⣷⣀⣠⡄⢸⣿⡖⣦⢹⡇⣾⣿⣿⡀⣿⣾⣷⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⡿⢡⣾⣿⡇⢸⣿⣿⠀⣿⣿⣿⠀⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠘⠛⠛⣻⣿⣿⣌⠻⠿⠛⣹⣿⣿⣇⠘⢻⣿⣿⣿⣿⣟⠛⠛⢃⣿⣿⣿⣿⣿⡄⠛⠛⣁⠀⢻⣟⠇⣼⡋⠉⠀⣿⠀⠀⠀⠀⠀⢸⣿⣞⣧⡈⠛⠛⢁⣾⠋⣿⣿⡄⣸⣿⣿⣿⣷⡈⠛⠛⢛⣿⣿⣿⣿⣿⣿⠀⠙⠛⠛⣿⣷⡈⠛⢛⣅⠘⢿⣿⡀⣿⣿⣿⢀⣿⣿⣿⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣷⣿⣏⣰⣿⣏⣸⣟⣷⣀⣿⠋⠀⠀⠀⣀⣠⣿⣋⠻⣮⣙⣳⣶⣿⣧⣀⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣧⣿⣿⣯⣿⣿⣦⣯⣿⣴⣾⣿⣿⣽⣧⣼⣾⣧⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
*/

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

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

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}


interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapV2Pair {
    function sync() external;
}

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
    function balanceOf(address) external returns (uint);
}


contract LainCoin is ERC20 {
    address payable public operations;
    address public uniswapV2LainPair;
    uint public liquidityAdded;
    bool antisnipe = true;
    bool depth = false;
    uint supplyDivisor = 1000;
    uint sellFee = 30;
    uint buyFee = 30;
    mapping(address => bool) public isUniswapPair;

    IUniswapV2Router uniswapV2Router;
    IWETH WETH;
    error OnlyOps();
    error AntiSnipe();
    error NoBalance();
    error NotZero();
    error NotGreaterThanFive();

    receive() external payable {}

    constructor() ERC20("Lain Coin", "$LAIN", 18) {
        operations = payable(msg.sender);
        uniswapV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap V2 Router
        WETH = IWETH(uniswapV2Router.WETH()); // WETH address from the Uniswap router
        uniswapV2LainPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), address(WETH));
        isUniswapPair[uniswapV2LainPair] = true;
        _mint(msg.sender, 7_777_777 * 10 ** 18); // Mint the total supply to the deployer
    }

    function addUniswapPair(address pair) external {
        if(msg.sender != operations) revert OnlyOps();
        isUniswapPair[pair] = true;
    }

    function forceSwap(uint256 slippage) external {
        if(msg.sender != operations) revert OnlyOps();
        if(balanceOf[address(this)] == 0) revert NoBalance();
        swapTokens(balanceOf[address(this)], slippage);
    }

    function changeOperations(address payable operations_) external {
        if(msg.sender != operations) revert OnlyOps();
        if(operations_ == address(0)) revert NotZero();
        operations = operations_;
    }

    function changeSupplyDivisor(uint supplyDivisor_) external {
        if(msg.sender != operations) revert OnlyOps();
        if(supplyDivisor_ == 0) revert NotZero();
        supplyDivisor = supplyDivisor_;
    }

    function changeFee(uint buyFee_, uint sellFee_) external {
        if(msg.sender != operations) revert OnlyOps();
        if(buyFee_ > 30 || sellFee_ > 30) revert NotGreaterThanFive();
        buyFee = buyFee_;
        sellFee = sellFee_;
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        if(isUniswapPair[msg.sender] && to != operations && to != address(this)) {
            uint256 fee = (amount * buyFee) / 100;
            if(antisnipe && liquidityAdded > 0 && block.number - liquidityAdded < 11)
                fee = (amount * 30) / 100;
            else if(antisnipe && liquidityAdded > 0 && block.number - liquidityAdded < 21)
                fee = (amount * 20) / 100;
            else if(antisnipe && liquidityAdded > 0 && block.number - liquidityAdded < 31)
                fee = (amount * 10) / 100;
            else {
                antisnipe = false;
            }
            
            super.transfer(address(this), fee);
            return super.transfer(to, amount - fee);
        }    
        return super.transfer(to, amount);
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        if(isUniswapPair[to]) {
            if(liquidityAdded == 0) 
                liquidityAdded = block.number;
            if(from != operations && from != address(this)) {
                uint256 fee = (amount * sellFee) / 100;
                super.transferFrom(from, address(this), fee);
                uint256 balance = balanceOf[address(this)];
                if(balance > totalSupply / supplyDivisor && !depth)  {
                    depth = true;
                    swapTokens(balance, 0);
                    depth = false;
                }     
                return super.transferFrom(from, to, amount - fee);
            }
        }
        return super.transferFrom(from, to, amount);
    }

    function swapTokens(uint256 tokenAmount, uint256 slippage) private returns (bool) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = address(uniswapV2Router.WETH());
        ERC20(address(this)).approve(address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            slippage,
            path,
            address(this),
            block.timestamp
        );
        
        (bool success, ) = operations.call{value: address(this).balance}("");
        return success;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AntiSnipe","type":"error"},{"inputs":[],"name":"NoBalance","type":"error"},{"inputs":[],"name":"NotGreaterThanFive","type":"error"},{"inputs":[],"name":"NotZero","type":"error"},{"inputs":[],"name":"OnlyOps","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee_","type":"uint256"},{"internalType":"uint256","name":"sellFee_","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"operations_","type":"address"}],"name":"changeOperations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"supplyDivisor_","type":"uint256"}],"name":"changeSupplyDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"slippage","type":"uint256"}],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isUniswapPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operations","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2LainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600160095f6101000a81548160ff0219169083151502179055505f600960016101000a81548160ff0219169083151502179055506103e8600a55601e600b55601e600c55348015610053575f80fd5b506040518060400160405280600981526020017f4c61696e20436f696e00000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f244c41494e0000000000000000000000000000000000000000000000000000008152506012825f90816100d091906107fd565b5081600190816100e091906107fd565b508060ff1660808160ff16815250504660a0818152505061010561046e60201b60201c565b60c081815250505050503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610231919061092a565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102fe919061092a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610359929190610964565b6020604051808303815f875af1158015610375573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610399919061092a565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610469336a066f0222d28f57292400006104f860201b60201c565b610b2e565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161049e9190610a27565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016104dd959493929190610a64565b60405160208183030381529060405280519060200120905090565b8060025f8282546105099190610ae2565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b79190610b15565b60405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061063e57607f821691505b602082108103610651576106506105fa565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610678565b6106bd8683610678565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6107016106fc6106f7846106d5565b6106de565b6106d5565b9050919050565b5f819050919050565b61071a836106e7565b61072e61072682610708565b848454610684565b825550505050565b5f90565b610742610736565b61074d818484610711565b505050565b5b81811015610770576107655f8261073a565b600181019050610753565b5050565b601f8211156107b55761078681610657565b61078f84610669565b8101602085101561079e578190505b6107b26107aa85610669565b830182610752565b50505b505050565b5f82821c905092915050565b5f6107d55f19846008026107ba565b1980831691505092915050565b5f6107ed83836107c6565b9150826002028217905092915050565b610806826105c3565b67ffffffffffffffff81111561081f5761081e6105cd565b5b6108298254610627565b610834828285610774565b5f60209050601f831160018114610865575f8415610853578287015190505b61085d85826107e2565b8655506108c4565b601f19841661087386610657565b5f5b8281101561089a57848901518255600182019150602085019450602081019050610875565b868310156108b757848901516108b3601f8916826107c6565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108f9826108d0565b9050919050565b610909816108ef565b8114610913575f80fd5b50565b5f8151905061092481610900565b92915050565b5f6020828403121561093f5761093e6108cc565b5b5f61094c84828501610916565b91505092915050565b61095e816108ef565b82525050565b5f6040820190506109775f830185610955565b6109846020830184610955565b9392505050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f81546109b381610627565b6109bd818661098b565b9450600182165f81146109d757600181146109ec57610a1e565b60ff1983168652811515820286019350610a1e565b6109f585610995565b5f5b83811015610a16578154818901526001820191506020810190506109f7565b838801955050505b50505092915050565b5f610a3282846109a7565b915081905092915050565b5f819050919050565b610a4f81610a3d565b82525050565b610a5e816106d5565b82525050565b5f60a082019050610a775f830188610a46565b610a846020830187610a46565b610a916040830186610a46565b610a9e6060830185610a55565b610aab6080830184610955565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610aec826106d5565b9150610af7836106d5565b9250828201905080821115610b0f57610b0e610ab5565b5b92915050565b5f602082019050610b285f830184610a55565b92915050565b60805160a05160c0516127a3610b585f395f610a2201525f6109ee01525f6109c901526127a35ff3fe60806040526004361061012d575f3560e01c806395d89b41116100aa578063d505accf1161006e578063d505accf14610416578063d7d2265e1461043e578063d944392314610466578063dd62ed3e14610490578063e3ca2d65146104cc578063ea65bad9146104f457610134565b806395d89b41146103225780639cece12e1461034c578063a6dd135d14610388578063a7f404e2146103b2578063a9059cbb146103da57610134565b8063313ce567116100f1578063313ce5671461022c5780633644e5151461025657806370a08231146102805780637ecebe00146102bc5780638b33b4b2146102f857610134565b806306fdde0314610138578063095ea7b31461016257806318160ddd1461019e57806323b872dd146101c8578063311bf1e61461020457610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c61051c565b6040516101599190611c20565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190611cd1565b6105a7565b6040516101959190611d29565b60405180910390f35b3480156101a9575f80fd5b506101b2610694565b6040516101bf9190611d51565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e99190611d6a565b61069a565b6040516101fb9190611d29565b60405180910390f35b34801561020f575f80fd5b5061022a60048036038101906102259190611df5565b610899565b005b348015610237575f80fd5b506102406109c7565b60405161024d9190611e3b565b60405180910390f35b348015610261575f80fd5b5061026a6109eb565b6040516102779190611e6c565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190611e85565b610a47565b6040516102b39190611d51565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190611e85565b610a5c565b6040516102ef9190611d51565b60405180910390f35b348015610303575f80fd5b5061030c610a71565b6040516103199190611ebf565b60405180910390f35b34801561032d575f80fd5b50610336610a96565b6040516103439190611c20565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d9190611e85565b610b22565b60405161037f9190611d29565b60405180910390f35b348015610393575f80fd5b5061039c610b3f565b6040516103a99190611ee7565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190611e85565b610b64565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190611cd1565b610c42565b60405161040d9190611d29565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190611f54565b610ea5565b005b348015610449575f80fd5b50610464600480360381019061045f9190611ff1565b611192565b005b348015610471575f80fd5b5061047a61125b565b6040516104879190611d51565b60405180910390f35b34801561049b575f80fd5b506104b660048036038101906104b1919061201c565b611261565b6040516104c39190611d51565b60405180910390f35b3480156104d7575f80fd5b506104f260048036038101906104ed919061205a565b611281565b005b3480156104ff575f80fd5b5061051a60048036038101906105159190611ff1565b61135f565b005b5f8054610528906120c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610554906120c5565b801561059f5780601f106105765761010080835404028352916020019161059f565b820191905f5260205f20905b81548152906001019060200180831161058257829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106829190611d51565b60405180910390a36001905092915050565b60025481565b5f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610884575f600854036106fb57436008819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561078457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610883575f6064600b548461079a9190612122565b6107a49190612190565b90506107b18530836114a6565b505f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600a546002546108039190612190565b8111801561081e5750600960019054906101000a900460ff16155b15610864576001600960016101000a81548160ff021916908315150217905550610848815f6116e1565b505f600960016101000a81548160ff0219169083151502179055505b61087a8686848761087591906121c0565b6114a6565b92505050610892565b5b61088f8484846114a6565b90505b9392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091f576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610984576040517f0295aa9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610a2057610a1b611a19565b610a42565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b6003602052805f5260405f205f915090505481565b6005602052805f5260405f205f915090505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054610aa3906120c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610acf906120c5565b8015610b1a5780601f10610af157610100808354040283529160200191610b1a565b820191905f5260205f20905b815481529060010190602001808311610afd57829003601f168201915b505050505081565b600d602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bea576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015610ce6575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610d1e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610e92575f6064600c5484610d349190612122565b610d3e9190612190565b905060095f9054906101000a900460ff168015610d5c57505f600854115b8015610d755750600b60085443610d7391906121c0565b105b15610d9a576064601e84610d899190612122565b610d939190612190565b9050610e6a565b60095f9054906101000a900460ff168015610db657505f600854115b8015610dcf5750601560085443610dcd91906121c0565b105b15610df4576064601484610de39190612122565b610ded9190612190565b9050610e69565b60095f9054906101000a900460ff168015610e1057505f600854115b8015610e295750601f60085443610e2791906121c0565b105b15610e4e576064600a84610e3d9190612122565b610e479190612190565b9050610e68565b5f60095f6101000a81548160ff0219169083151502179055505b5b5b610e743082611aa3565b50610e8a848285610e8591906121c0565b611aa3565b915050610e9f565b610e9c8383611aa3565b90505b92915050565b42841015610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf9061223d565b60405180910390fd5b5f6001610ef36109eb565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001610f789695949392919061225b565b60405160208183030381529060405280519060200120604051602001610f9f92919061232e565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051610fd49493929190612364565b6020604051602081039080840390855afa158015610ff4573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561106757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d906123f1565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516111819190611d51565b60405180910390a350505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611218576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611251576040517f0295aa9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a8190555050565b60085481565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611307576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e8211806113165750601e81115b1561134d576040517fa758ad5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600c8190555080600b819055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113e5576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361145b576040517fc2caa2a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114a260035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826116e1565b5050565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115d357828161155691906121c0565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161f91906121c0565b925050819055508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116cd9190611d51565b60405180910390a360019150509392505050565b5f80600267ffffffffffffffff8111156116fe576116fd61240f565b5b60405190808252806020026020018201604052801561172c5781602001602082028036833780820191505090505b50905030815f815181106117435761174261243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180b919061247d565b8160018151811061181f5761181e61243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b81526004016118b59291906124a8565b6020604051808303815f875af11580156118d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f591906124f9565b50600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94785858430426040518663ffffffff1660e01b81526004016119589594939291906125db565b5f604051808303815f87803b15801561196f575f80fd5b505af1158015611981573d5f803e3d5ffd5b505050505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516119cb90612660565b5f6040518083038185875af1925050503d805f8114611a05576040519150601f19603f3d011682016040523d82523d5f602084013e611a0a565b606091505b50509050809250505092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051611a499190612706565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611a8895949392919061271c565b60405160208183030381529060405280519060200120905090565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611af091906121c0565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b9e9190611d51565b60405180910390a36001905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611bf282611bb0565b611bfc8185611bba565b9350611c0c818560208601611bca565b611c1581611bd8565b840191505092915050565b5f6020820190508181035f830152611c388184611be8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c6d82611c44565b9050919050565b611c7d81611c63565b8114611c87575f80fd5b50565b5f81359050611c9881611c74565b92915050565b5f819050919050565b611cb081611c9e565b8114611cba575f80fd5b50565b5f81359050611ccb81611ca7565b92915050565b5f8060408385031215611ce757611ce6611c40565b5b5f611cf485828601611c8a565b9250506020611d0585828601611cbd565b9150509250929050565b5f8115159050919050565b611d2381611d0f565b82525050565b5f602082019050611d3c5f830184611d1a565b92915050565b611d4b81611c9e565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f805f60608486031215611d8157611d80611c40565b5b5f611d8e86828701611c8a565b9350506020611d9f86828701611c8a565b9250506040611db086828701611cbd565b9150509250925092565b5f611dc482611c44565b9050919050565b611dd481611dba565b8114611dde575f80fd5b50565b5f81359050611def81611dcb565b92915050565b5f60208284031215611e0a57611e09611c40565b5b5f611e1784828501611de1565b91505092915050565b5f60ff82169050919050565b611e3581611e20565b82525050565b5f602082019050611e4e5f830184611e2c565b92915050565b5f819050919050565b611e6681611e54565b82525050565b5f602082019050611e7f5f830184611e5d565b92915050565b5f60208284031215611e9a57611e99611c40565b5b5f611ea784828501611c8a565b91505092915050565b611eb981611dba565b82525050565b5f602082019050611ed25f830184611eb0565b92915050565b611ee181611c63565b82525050565b5f602082019050611efa5f830184611ed8565b92915050565b611f0981611e20565b8114611f13575f80fd5b50565b5f81359050611f2481611f00565b92915050565b611f3381611e54565b8114611f3d575f80fd5b50565b5f81359050611f4e81611f2a565b92915050565b5f805f805f805f60e0888a031215611f6f57611f6e611c40565b5b5f611f7c8a828b01611c8a565b9750506020611f8d8a828b01611c8a565b9650506040611f9e8a828b01611cbd565b9550506060611faf8a828b01611cbd565b9450506080611fc08a828b01611f16565b93505060a0611fd18a828b01611f40565b92505060c0611fe28a828b01611f40565b91505092959891949750929550565b5f6020828403121561200657612005611c40565b5b5f61201384828501611cbd565b91505092915050565b5f806040838503121561203257612031611c40565b5b5f61203f85828601611c8a565b925050602061205085828601611c8a565b9150509250929050565b5f80604083850312156120705761206f611c40565b5b5f61207d85828601611cbd565b925050602061208e85828601611cbd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806120dc57607f821691505b6020821081036120ef576120ee612098565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61212c82611c9e565b915061213783611c9e565b925082820261214581611c9e565b9150828204841483151761215c5761215b6120f5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61219a82611c9e565b91506121a583611c9e565b9250826121b5576121b4612163565b5b828204905092915050565b5f6121ca82611c9e565b91506121d583611c9e565b92508282039050818111156121ed576121ec6120f5565b5b92915050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f612227601783611bba565b9150612232826121f3565b602082019050919050565b5f6020820190508181035f8301526122548161221b565b9050919050565b5f60c08201905061226e5f830189611e5d565b61227b6020830188611ed8565b6122886040830187611ed8565b6122956060830186611d42565b6122a26080830185611d42565b6122af60a0830184611d42565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6122f86002836122ba565b9150612303826122c4565b600282019050919050565b5f819050919050565b61232861232382611e54565b61230e565b82525050565b5f612338826122ec565b91506123448285612317565b6020820191506123548284612317565b6020820191508190509392505050565b5f6080820190506123775f830187611e5d565b6123846020830186611e2c565b6123916040830185611e5d565b61239e6060830184611e5d565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6123db600e83611bba565b91506123e6826123a7565b602082019050919050565b5f6020820190508181035f830152612408816123cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061247781611c74565b92915050565b5f6020828403121561249257612491611c40565b5b5f61249f84828501612469565b91505092915050565b5f6040820190506124bb5f830185611ed8565b6124c86020830184611d42565b9392505050565b6124d881611d0f565b81146124e2575f80fd5b50565b5f815190506124f3816124cf565b92915050565b5f6020828403121561250e5761250d611c40565b5b5f61251b848285016124e5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61255681611c63565b82525050565b5f612567838361254d565b60208301905092915050565b5f602082019050919050565b5f61258982612524565b612593818561252e565b935061259e8361253e565b805f5b838110156125ce5781516125b5888261255c565b97506125c083612573565b9250506001810190506125a1565b5085935050505092915050565b5f60a0820190506125ee5f830188611d42565b6125fb6020830187611d42565b818103604083015261260d818661257f565b905061261c6060830185611ed8565b6126296080830184611d42565b9695505050505050565b5f81905092915050565b50565b5f61264b5f83612633565b91506126568261263d565b5f82019050919050565b5f61266a82612640565b9150819050919050565b5f819050815f5260205f209050919050565b5f8154612692816120c5565b61269c8186612633565b9450600182165f81146126b657600181146126cb576126fd565b60ff19831686528115158202860193506126fd565b6126d485612674565b5f5b838110156126f5578154818901526001820191506020810190506126d6565b838801955050505b50505092915050565b5f6127118284612686565b915081905092915050565b5f60a08201905061272f5f830188611e5d565b61273c6020830187611e5d565b6127496040830186611e5d565b6127566060830185611d42565b6127636080830184611ed8565b969550505050505056fea26469706673582212200512d2881bbefe43df6158f62091d2cc604643fd2acbab828cb5b0d0b21552be64736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c806395d89b41116100aa578063d505accf1161006e578063d505accf14610416578063d7d2265e1461043e578063d944392314610466578063dd62ed3e14610490578063e3ca2d65146104cc578063ea65bad9146104f457610134565b806395d89b41146103225780639cece12e1461034c578063a6dd135d14610388578063a7f404e2146103b2578063a9059cbb146103da57610134565b8063313ce567116100f1578063313ce5671461022c5780633644e5151461025657806370a08231146102805780637ecebe00146102bc5780638b33b4b2146102f857610134565b806306fdde0314610138578063095ea7b31461016257806318160ddd1461019e57806323b872dd146101c8578063311bf1e61461020457610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c61051c565b6040516101599190611c20565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190611cd1565b6105a7565b6040516101959190611d29565b60405180910390f35b3480156101a9575f80fd5b506101b2610694565b6040516101bf9190611d51565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e99190611d6a565b61069a565b6040516101fb9190611d29565b60405180910390f35b34801561020f575f80fd5b5061022a60048036038101906102259190611df5565b610899565b005b348015610237575f80fd5b506102406109c7565b60405161024d9190611e3b565b60405180910390f35b348015610261575f80fd5b5061026a6109eb565b6040516102779190611e6c565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190611e85565b610a47565b6040516102b39190611d51565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190611e85565b610a5c565b6040516102ef9190611d51565b60405180910390f35b348015610303575f80fd5b5061030c610a71565b6040516103199190611ebf565b60405180910390f35b34801561032d575f80fd5b50610336610a96565b6040516103439190611c20565b60405180910390f35b348015610357575f80fd5b50610372600480360381019061036d9190611e85565b610b22565b60405161037f9190611d29565b60405180910390f35b348015610393575f80fd5b5061039c610b3f565b6040516103a99190611ee7565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190611e85565b610b64565b005b3480156103e5575f80fd5b5061040060048036038101906103fb9190611cd1565b610c42565b60405161040d9190611d29565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190611f54565b610ea5565b005b348015610449575f80fd5b50610464600480360381019061045f9190611ff1565b611192565b005b348015610471575f80fd5b5061047a61125b565b6040516104879190611d51565b60405180910390f35b34801561049b575f80fd5b506104b660048036038101906104b1919061201c565b611261565b6040516104c39190611d51565b60405180910390f35b3480156104d7575f80fd5b506104f260048036038101906104ed919061205a565b611281565b005b3480156104ff575f80fd5b5061051a60048036038101906105159190611ff1565b61135f565b005b5f8054610528906120c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610554906120c5565b801561059f5780601f106105765761010080835404028352916020019161059f565b820191905f5260205f20905b81548152906001019060200180831161058257829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106829190611d51565b60405180910390a36001905092915050565b60025481565b5f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610884575f600854036106fb57436008819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561078457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610883575f6064600b548461079a9190612122565b6107a49190612190565b90506107b18530836114a6565b505f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600a546002546108039190612190565b8111801561081e5750600960019054906101000a900460ff16155b15610864576001600960016101000a81548160ff021916908315150217905550610848815f6116e1565b505f600960016101000a81548160ff0219169083151502179055505b61087a8686848761087591906121c0565b6114a6565b92505050610892565b5b61088f8484846114a6565b90505b9392505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091f576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610984576040517f0295aa9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000001281565b5f7f00000000000000000000000000000000000000000000000000000000000000014614610a2057610a1b611a19565b610a42565b7fdb51eeb61d16812ea874880a891097c2bc42ace53c23114ab4390396ccec4d6c5b905090565b6003602052805f5260405f205f915090505481565b6005602052805f5260405f205f915090505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054610aa3906120c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610acf906120c5565b8015610b1a5780601f10610af157610100808354040283529160200191610b1a565b820191905f5260205f20905b815481529060010190602001808311610afd57829003601f168201915b505050505081565b600d602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bea576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015610ce6575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610d1e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610e92575f6064600c5484610d349190612122565b610d3e9190612190565b905060095f9054906101000a900460ff168015610d5c57505f600854115b8015610d755750600b60085443610d7391906121c0565b105b15610d9a576064601e84610d899190612122565b610d939190612190565b9050610e6a565b60095f9054906101000a900460ff168015610db657505f600854115b8015610dcf5750601560085443610dcd91906121c0565b105b15610df4576064601484610de39190612122565b610ded9190612190565b9050610e69565b60095f9054906101000a900460ff168015610e1057505f600854115b8015610e295750601f60085443610e2791906121c0565b105b15610e4e576064600a84610e3d9190612122565b610e479190612190565b9050610e68565b5f60095f6101000a81548160ff0219169083151502179055505b5b5b610e743082611aa3565b50610e8a848285610e8591906121c0565b611aa3565b915050610e9f565b610e9c8383611aa3565b90505b92915050565b42841015610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf9061223d565b60405180910390fd5b5f6001610ef36109eb565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001610f789695949392919061225b565b60405160208183030381529060405280519060200120604051602001610f9f92919061232e565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051610fd49493929190612364565b6020604051602081039080840390855afa158015610ff4573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561106757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d906123f1565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516111819190611d51565b60405180910390a350505050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611218576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611251576040517f0295aa9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a8190555050565b60085481565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611307576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e8211806113165750601e81115b1561134d576040517fa758ad5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600c8190555080600b819055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113e5576040517f0d8c99b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361145b576040517fc2caa2a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114a260035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826116e1565b5050565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115d357828161155691906121c0565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161f91906121c0565b925050819055508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116cd9190611d51565b60405180910390a360019150509392505050565b5f80600267ffffffffffffffff8111156116fe576116fd61240f565b5b60405190808252806020026020018201604052801561172c5781602001602082028036833780820191505090505b50905030815f815181106117435761174261243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180b919061247d565b8160018151811061181f5761181e61243c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b81526004016118b59291906124a8565b6020604051808303815f875af11580156118d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f591906124f9565b50600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94785858430426040518663ffffffff1660e01b81526004016119589594939291906125db565b5f604051808303815f87803b15801561196f575f80fd5b505af1158015611981573d5f803e3d5ffd5b505050505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516119cb90612660565b5f6040518083038185875af1925050503d805f8114611a05576040519150601f19603f3d011682016040523d82523d5f602084013e611a0a565b606091505b50509050809250505092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051611a499190612706565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611a8895949392919061271c565b60405160208183030381529060405280519060200120905090565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611af091906121c0565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b9e9190611d51565b60405180910390a36001905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611bf282611bb0565b611bfc8185611bba565b9350611c0c818560208601611bca565b611c1581611bd8565b840191505092915050565b5f6020820190508181035f830152611c388184611be8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c6d82611c44565b9050919050565b611c7d81611c63565b8114611c87575f80fd5b50565b5f81359050611c9881611c74565b92915050565b5f819050919050565b611cb081611c9e565b8114611cba575f80fd5b50565b5f81359050611ccb81611ca7565b92915050565b5f8060408385031215611ce757611ce6611c40565b5b5f611cf485828601611c8a565b9250506020611d0585828601611cbd565b9150509250929050565b5f8115159050919050565b611d2381611d0f565b82525050565b5f602082019050611d3c5f830184611d1a565b92915050565b611d4b81611c9e565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f805f60608486031215611d8157611d80611c40565b5b5f611d8e86828701611c8a565b9350506020611d9f86828701611c8a565b9250506040611db086828701611cbd565b9150509250925092565b5f611dc482611c44565b9050919050565b611dd481611dba565b8114611dde575f80fd5b50565b5f81359050611def81611dcb565b92915050565b5f60208284031215611e0a57611e09611c40565b5b5f611e1784828501611de1565b91505092915050565b5f60ff82169050919050565b611e3581611e20565b82525050565b5f602082019050611e4e5f830184611e2c565b92915050565b5f819050919050565b611e6681611e54565b82525050565b5f602082019050611e7f5f830184611e5d565b92915050565b5f60208284031215611e9a57611e99611c40565b5b5f611ea784828501611c8a565b91505092915050565b611eb981611dba565b82525050565b5f602082019050611ed25f830184611eb0565b92915050565b611ee181611c63565b82525050565b5f602082019050611efa5f830184611ed8565b92915050565b611f0981611e20565b8114611f13575f80fd5b50565b5f81359050611f2481611f00565b92915050565b611f3381611e54565b8114611f3d575f80fd5b50565b5f81359050611f4e81611f2a565b92915050565b5f805f805f805f60e0888a031215611f6f57611f6e611c40565b5b5f611f7c8a828b01611c8a565b9750506020611f8d8a828b01611c8a565b9650506040611f9e8a828b01611cbd565b9550506060611faf8a828b01611cbd565b9450506080611fc08a828b01611f16565b93505060a0611fd18a828b01611f40565b92505060c0611fe28a828b01611f40565b91505092959891949750929550565b5f6020828403121561200657612005611c40565b5b5f61201384828501611cbd565b91505092915050565b5f806040838503121561203257612031611c40565b5b5f61203f85828601611c8a565b925050602061205085828601611c8a565b9150509250929050565b5f80604083850312156120705761206f611c40565b5b5f61207d85828601611cbd565b925050602061208e85828601611cbd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806120dc57607f821691505b6020821081036120ef576120ee612098565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61212c82611c9e565b915061213783611c9e565b925082820261214581611c9e565b9150828204841483151761215c5761215b6120f5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61219a82611c9e565b91506121a583611c9e565b9250826121b5576121b4612163565b5b828204905092915050565b5f6121ca82611c9e565b91506121d583611c9e565b92508282039050818111156121ed576121ec6120f5565b5b92915050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f612227601783611bba565b9150612232826121f3565b602082019050919050565b5f6020820190508181035f8301526122548161221b565b9050919050565b5f60c08201905061226e5f830189611e5d565b61227b6020830188611ed8565b6122886040830187611ed8565b6122956060830186611d42565b6122a26080830185611d42565b6122af60a0830184611d42565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6122f86002836122ba565b9150612303826122c4565b600282019050919050565b5f819050919050565b61232861232382611e54565b61230e565b82525050565b5f612338826122ec565b91506123448285612317565b6020820191506123548284612317565b6020820191508190509392505050565b5f6080820190506123775f830187611e5d565b6123846020830186611e2c565b6123916040830185611e5d565b61239e6060830184611e5d565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6123db600e83611bba565b91506123e6826123a7565b602082019050919050565b5f6020820190508181035f830152612408816123cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061247781611c74565b92915050565b5f6020828403121561249257612491611c40565b5b5f61249f84828501612469565b91505092915050565b5f6040820190506124bb5f830185611ed8565b6124c86020830184611d42565b9392505050565b6124d881611d0f565b81146124e2575f80fd5b50565b5f815190506124f3816124cf565b92915050565b5f6020828403121561250e5761250d611c40565b5b5f61251b848285016124e5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61255681611c63565b82525050565b5f612567838361254d565b60208301905092915050565b5f602082019050919050565b5f61258982612524565b612593818561252e565b935061259e8361253e565b805f5b838110156125ce5781516125b5888261255c565b97506125c083612573565b9250506001810190506125a1565b5085935050505092915050565b5f60a0820190506125ee5f830188611d42565b6125fb6020830187611d42565b818103604083015261260d818661257f565b905061261c6060830185611ed8565b6126296080830184611d42565b9695505050505050565b5f81905092915050565b50565b5f61264b5f83612633565b91506126568261263d565b5f82019050919050565b5f61266a82612640565b9150819050919050565b5f819050815f5260205f209050919050565b5f8154612692816120c5565b61269c8186612633565b9450600182165f81146126b657600181146126cb576126fd565b60ff19831686528115158202860193506126fd565b6126d485612674565b5f5b838110156126f5578154818901526001820191506020810190506126d6565b838801955050505b50505092915050565b5f6127118284612686565b915081905092915050565b5f60a08201905061272f5f830188611e5d565b61273c6020830187611e5d565b6127496040830186611e5d565b6127566060830185611d42565b6127636080830184611ed8565b969550505050505056fea26469706673582212200512d2881bbefe43df6158f62091d2cc604643fd2acbab828cb5b0d0b21552be64736f6c634300081a0033

Deployed Bytecode Sourcemap

30441:4612:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23436:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24913:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23719:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33541:868;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31946:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23492:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27873:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23754:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24180:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30475:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23463:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30719:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30515:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31552:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32654:879;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26338:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32174:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30554:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23807:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32397:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31708:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23436:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24913:217::-;24987:4;25037:6;25004:9;:21;25014:10;25004:21;;;;;;;;;;;;;;;:30;25026:7;25004:30;;;;;;;;;;;;;;;:39;;;;25082:7;25061:37;;25070:10;25061:37;;;25091:6;25061:37;;;;;;:::i;:::-;;;;;;;;25118:4;25111:11;;24913:217;;;;:::o;23719:26::-;;;;:::o;33541:868::-;33672:4;33692:13;:17;33706:2;33692:17;;;;;;;;;;;;;;;;;;;;;;;;;33689:659;;;33747:1;33729:14;;:19;33726:71;;33785:12;33768:14;:29;;;;33726:71;33823:10;;;;;;;;;;;33815:18;;:4;:18;;;;:43;;;;;33853:4;33837:21;;:4;:21;;;;33815:43;33812:525;;;33879:11;33914:3;33903:7;;33894:6;:16;;;;:::i;:::-;33893:24;;;;:::i;:::-;33879:38;;33936:44;33955:4;33969;33976:3;33936:18;:44::i;:::-;;33999:15;34017:9;:24;34035:4;34017:24;;;;;;;;;;;;;;;;33999:42;;34087:13;;34073:11;;:27;;;;:::i;:::-;34063:7;:37;:47;;;;;34105:5;;;;;;;;;;;34104:6;34063:47;34060:189;;;34144:4;34136:5;;:12;;;;;;;;;;;;;;;;;;34171:22;34182:7;34191:1;34171:10;:22::i;:::-;;34224:5;34216;;:13;;;;;;;;;;;;;;;;;;34060:189;34279:42;34298:4;34304:2;34317:3;34308:6;:12;;;;:::i;:::-;34279:18;:42::i;:::-;34272:49;;;;;;33812:525;33689:659;34365:36;34384:4;34390:2;34394:6;34365:18;:36::i;:::-;34358:43;;33541:868;;;;;;:::o;31946:220::-;32038:10;;;;;;;;;;;32024:24;;:10;:24;;;32021:45;;32057:9;;;;;;;;;;;;;;32021:45;32103:1;32080:25;;:11;:25;;;32077:46;;32114:9;;;;;;;;;;;;;;32077:46;32147:11;32134:10;;:24;;;;;;;;;;;;;;;;;;31946:220;:::o;23492:31::-;;;:::o;27873:179::-;27930:7;27974:16;27957:13;:33;:87;;28020:24;:22;:24::i;:::-;27957:87;;;27993:24;27957:87;27950:94;;27873:179;:::o;23754:44::-;;;;;;;;;;;;;;;;;:::o;24180:41::-;;;;;;;;;;;;;;;;;:::o;30475:33::-;;;;;;;;;;;;;:::o;23463:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30719:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;30515:32::-;;;;;;;;;;;;;:::o;31552:148::-;31627:10;;;;;;;;;;;31613:24;;:10;:24;;;31610:45;;31646:9;;;;;;;;;;;;;;31610:45;31688:4;31666:13;:19;31680:4;31666:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;31552:148;:::o;32654:879::-;32733:4;32753:13;:25;32767:10;32753:25;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;32788:10;;;;;;;;;;;32782:16;;:2;:16;;;;32753:45;:68;;;;;32816:4;32802:19;;:2;:19;;;;32753:68;32750:728;;;32838:11;32872:3;32862:6;;32853;:15;;;;:::i;:::-;32852:23;;;;:::i;:::-;32838:37;;32893:9;;;;;;;;;;;:31;;;;;32923:1;32906:14;;:18;32893:31;:69;;;;;32960:2;32943:14;;32928:12;:29;;;;:::i;:::-;:34;32893:69;32890:460;;;33003:3;32997:2;32988:6;:11;;;;:::i;:::-;32987:19;;;;:::i;:::-;32981:25;;32890:460;;;33029:9;;;;;;;;;;;:31;;;;;33059:1;33042:14;;:18;33029:31;:69;;;;;33096:2;33079:14;;33064:12;:29;;;;:::i;:::-;:34;33029:69;33026:324;;;33139:3;33133:2;33124:6;:11;;;;:::i;:::-;33123:19;;;;:::i;:::-;33117:25;;33026:324;;;33165:9;;;;;;;;;;;:31;;;;;33195:1;33178:14;;:18;33165:31;:69;;;;;33232:2;33215:14;;33200:12;:29;;;;:::i;:::-;:34;33165:69;33162:188;;;33275:3;33269:2;33260:6;:11;;;;:::i;:::-;33259:19;;;;:::i;:::-;33253:25;;33162:188;;;33329:5;33317:9;;:17;;;;;;;;;;;;;;;;;;33162:188;33026:324;32890:460;33378:34;33401:4;33408:3;33378:14;:34::i;:::-;;33434:32;33449:2;33462:3;33453:6;:12;;;;:::i;:::-;33434:14;:32::i;:::-;33427:39;;;;;32750:728;33499:26;33514:2;33518:6;33499:14;:26::i;:::-;33492:33;;32654:879;;;;;:::o;26338:1527::-;26566:15;26554:8;:27;;26546:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26779:24;26806:827;26946:18;:16;:18::i;:::-;27076:167;27278:5;27318:7;27360:5;27400:6;:13;27407:5;27400:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;27450:8;27031:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26991:525;;;;;;26866:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26834:724;;;;;;27577:1;27597;27617;26806:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26779:854;;27686:1;27658:30;;:16;:30;;;;:59;;;;;27712:5;27692:25;;:16;:25;;;27658:59;27650:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;27792:5;27753:9;:27;27763:16;27753:27;;;;;;;;;;;;;;;:36;27781:7;27753:36;;;;;;;;;;;;;;;:44;;;;26754:1055;27842:7;27826:31;;27835:5;27826:31;;;27851:5;27826:31;;;;;;:::i;:::-;;;;;;;;26338:1527;;;;;;;:::o;32174:215::-;32261:10;;;;;;;;;;;32247:24;;:10;:24;;;32244:45;;32280:9;;;;;;;;;;;;;;32244:45;32321:1;32303:14;:19;32300:40;;32331:9;;;;;;;;;;;;;;32300:40;32367:14;32351:13;:30;;;;32174:215;:::o;30554:26::-;;;;:::o;23807:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32397:249::-;32482:10;;;;;;;;;;;32468:24;;:10;:24;;;32465:45;;32501:9;;;;;;;;;;;;;;32465:45;32534:2;32524:7;:12;:29;;;;32551:2;32540:8;:13;32524:29;32521:61;;;32562:20;;;;;;;;;;;;;;32521:61;32602:7;32593:6;:16;;;;32630:8;32620:7;:18;;;;32397:249;;:::o;31708:230::-;31782:10;;;;;;;;;;;31768:24;;:10;:24;;;31765:45;;31801:9;;;;;;;;;;;;;;31765:45;31852:1;31824:9;:24;31842:4;31824:24;;;;;;;;;;;;;;;;:29;31821:52;;31862:11;;;;;;;;;;;;;;31821:52;31884:46;31895:9;:24;31913:4;31895:24;;;;;;;;;;;;;;;;31921:8;31884:10;:46::i;:::-;;31708:230;:::o;25531:612::-;25653:4;25670:15;25688:9;:15;25698:4;25688:15;;;;;;;;;;;;;;;:27;25704:10;25688:27;;;;;;;;;;;;;;;;25670:45;;25779:17;25768:7;:28;25764:80;;25838:6;25828:7;:16;;;;:::i;:::-;25798:9;:15;25808:4;25798:15;;;;;;;;;;;;;;;:27;25814:10;25798:27;;;;;;;;;;;;;;;:46;;;;25764:80;25876:6;25857:9;:15;25867:4;25857:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;26050:6;26033:9;:13;26043:2;26033:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26100:2;26085:26;;26094:4;26085:26;;;26104:6;26085:26;;;;;;:::i;:::-;;;;;;;;26131:4;26124:11;;;25531:612;;;;;:::o;34417:633::-;34493:4;34510:21;34548:1;34534:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34510:40;;34579:4;34561;34566:1;34561:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34613:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34595:4;34600:1;34595:7;;;;;;;;:::i;:::-;;;;;;;:41;;;;;;;;;;;34661:4;34647:28;;;34684:15;;;;;;;;;;;34702:11;34647:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34725:15;;;;;;;;;;;:66;;;34806:11;34832:8;34855:4;34882;34902:15;34725:203;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34950:12;34968:10;;;;;;;;;;;:15;;34991:21;34968:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34949:68;;;35035:7;35028:14;;;;34417:633;;;;:::o;28060:457::-;28125:7;28226:95;28360:4;28344:22;;;;;;:::i;:::-;;;;;;;;28389:14;28426:13;28470:4;28193:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28165:344;;;;;;28145:364;;28060:457;:::o;25138:385::-;25208:4;25250:6;25225:9;:21;25235:10;25225:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;25424:6;25407:9;:13;25417:2;25407:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25480:2;25459:32;;25468:10;25459:32;;;25484:6;25459:32;;;;;;:::i;:::-;;;;;;;;25511:4;25504:11;;25138:385;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:104::-;4361:7;4390:24;4408:5;4390:24;:::i;:::-;4379:35;;4316:104;;;:::o;4426:138::-;4507:32;4533:5;4507:32;:::i;:::-;4500:5;4497:43;4487:71;;4554:1;4551;4544:12;4487:71;4426:138;:::o;4570:155::-;4624:5;4662:6;4649:20;4640:29;;4678:41;4713:5;4678:41;:::i;:::-;4570:155;;;;:::o;4731:345::-;4798:6;4847:2;4835:9;4826:7;4822:23;4818:32;4815:119;;;4853:79;;:::i;:::-;4815:119;4973:1;4998:61;5051:7;5042:6;5031:9;5027:22;4998:61;:::i;:::-;4988:71;;4944:125;4731:345;;;;:::o;5082:86::-;5117:7;5157:4;5150:5;5146:16;5135:27;;5082:86;;;:::o;5174:112::-;5257:22;5273:5;5257:22;:::i;:::-;5252:3;5245:35;5174:112;;:::o;5292:214::-;5381:4;5419:2;5408:9;5404:18;5396:26;;5432:67;5496:1;5485:9;5481:17;5472:6;5432:67;:::i;:::-;5292:214;;;;:::o;5512:77::-;5549:7;5578:5;5567:16;;5512:77;;;:::o;5595:118::-;5682:24;5700:5;5682:24;:::i;:::-;5677:3;5670:37;5595:118;;:::o;5719:222::-;5812:4;5850:2;5839:9;5835:18;5827:26;;5863:71;5931:1;5920:9;5916:17;5907:6;5863:71;:::i;:::-;5719:222;;;;:::o;5947:329::-;6006:6;6055:2;6043:9;6034:7;6030:23;6026:32;6023:119;;;6061:79;;:::i;:::-;6023:119;6181:1;6206:53;6251:7;6242:6;6231:9;6227:22;6206:53;:::i;:::-;6196:63;;6152:117;5947:329;;;;:::o;6282:142::-;6385:32;6411:5;6385:32;:::i;:::-;6380:3;6373:45;6282:142;;:::o;6430:254::-;6539:4;6577:2;6566:9;6562:18;6554:26;;6590:87;6674:1;6663:9;6659:17;6650:6;6590:87;:::i;:::-;6430:254;;;;:::o;6690:118::-;6777:24;6795:5;6777:24;:::i;:::-;6772:3;6765:37;6690:118;;:::o;6814:222::-;6907:4;6945:2;6934:9;6930:18;6922:26;;6958:71;7026:1;7015:9;7011:17;7002:6;6958:71;:::i;:::-;6814:222;;;;:::o;7042:118::-;7113:22;7129:5;7113:22;:::i;:::-;7106:5;7103:33;7093:61;;7150:1;7147;7140:12;7093:61;7042:118;:::o;7166:135::-;7210:5;7248:6;7235:20;7226:29;;7264:31;7289:5;7264:31;:::i;:::-;7166:135;;;;:::o;7307:122::-;7380:24;7398:5;7380:24;:::i;:::-;7373:5;7370:35;7360:63;;7419:1;7416;7409:12;7360:63;7307:122;:::o;7435:139::-;7481:5;7519:6;7506:20;7497:29;;7535:33;7562:5;7535:33;:::i;:::-;7435:139;;;;:::o;7580:1199::-;7691:6;7699;7707;7715;7723;7731;7739;7788:3;7776:9;7767:7;7763:23;7759:33;7756:120;;;7795:79;;:::i;:::-;7756:120;7915:1;7940:53;7985:7;7976:6;7965:9;7961:22;7940:53;:::i;:::-;7930:63;;7886:117;8042:2;8068:53;8113:7;8104:6;8093:9;8089:22;8068:53;:::i;:::-;8058:63;;8013:118;8170:2;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8141:118;8298:2;8324:53;8369:7;8360:6;8349:9;8345:22;8324:53;:::i;:::-;8314:63;;8269:118;8426:3;8453:51;8496:7;8487:6;8476:9;8472:22;8453:51;:::i;:::-;8443:61;;8397:117;8553:3;8580:53;8625:7;8616:6;8605:9;8601:22;8580:53;:::i;:::-;8570:63;;8524:119;8682:3;8709:53;8754:7;8745:6;8734:9;8730:22;8709:53;:::i;:::-;8699:63;;8653:119;7580:1199;;;;;;;;;;:::o;8785:329::-;8844:6;8893:2;8881:9;8872:7;8868:23;8864:32;8861:119;;;8899:79;;:::i;:::-;8861:119;9019:1;9044:53;9089:7;9080:6;9069:9;9065:22;9044:53;:::i;:::-;9034:63;;8990:117;8785:329;;;;:::o;9120:474::-;9188:6;9196;9245:2;9233:9;9224:7;9220:23;9216:32;9213:119;;;9251:79;;:::i;:::-;9213:119;9371:1;9396:53;9441:7;9432:6;9421:9;9417:22;9396:53;:::i;:::-;9386:63;;9342:117;9498:2;9524:53;9569:7;9560:6;9549:9;9545:22;9524:53;:::i;:::-;9514:63;;9469:118;9120:474;;;;;:::o;9600:::-;9668:6;9676;9725:2;9713:9;9704:7;9700:23;9696:32;9693:119;;;9731:79;;:::i;:::-;9693:119;9851:1;9876:53;9921:7;9912:6;9901:9;9897:22;9876:53;:::i;:::-;9866:63;;9822:117;9978:2;10004:53;10049:7;10040:6;10029:9;10025:22;10004:53;:::i;:::-;9994:63;;9949:118;9600:474;;;;;:::o;10080:180::-;10128:77;10125:1;10118:88;10225:4;10222:1;10215:15;10249:4;10246:1;10239:15;10266:320;10310:6;10347:1;10341:4;10337:12;10327:22;;10394:1;10388:4;10384:12;10415:18;10405:81;;10471:4;10463:6;10459:17;10449:27;;10405:81;10533:2;10525:6;10522:14;10502:18;10499:38;10496:84;;10552:18;;:::i;:::-;10496:84;10317:269;10266:320;;;:::o;10592:180::-;10640:77;10637:1;10630:88;10737:4;10734:1;10727:15;10761:4;10758:1;10751:15;10778:410;10818:7;10841:20;10859:1;10841:20;:::i;:::-;10836:25;;10875:20;10893:1;10875:20;:::i;:::-;10870:25;;10930:1;10927;10923:9;10952:30;10970:11;10952:30;:::i;:::-;10941:41;;11131:1;11122:7;11118:15;11115:1;11112:22;11092:1;11085:9;11065:83;11042:139;;11161:18;;:::i;:::-;11042:139;10826:362;10778:410;;;;:::o;11194:180::-;11242:77;11239:1;11232:88;11339:4;11336:1;11329:15;11363:4;11360:1;11353:15;11380:185;11420:1;11437:20;11455:1;11437:20;:::i;:::-;11432:25;;11471:20;11489:1;11471:20;:::i;:::-;11466:25;;11510:1;11500:35;;11515:18;;:::i;:::-;11500:35;11557:1;11554;11550:9;11545:14;;11380:185;;;;:::o;11571:194::-;11611:4;11631:20;11649:1;11631:20;:::i;:::-;11626:25;;11665:20;11683:1;11665:20;:::i;:::-;11660:25;;11709:1;11706;11702:9;11694:17;;11733:1;11727:4;11724:11;11721:37;;;11738:18;;:::i;:::-;11721:37;11571:194;;;;:::o;11771:173::-;11911:25;11907:1;11899:6;11895:14;11888:49;11771:173;:::o;11950:366::-;12092:3;12113:67;12177:2;12172:3;12113:67;:::i;:::-;12106:74;;12189:93;12278:3;12189:93;:::i;:::-;12307:2;12302:3;12298:12;12291:19;;11950:366;;;:::o;12322:419::-;12488:4;12526:2;12515:9;12511:18;12503:26;;12575:9;12569:4;12565:20;12561:1;12550:9;12546:17;12539:47;12603:131;12729:4;12603:131;:::i;:::-;12595:139;;12322:419;;;:::o;12747:775::-;12980:4;13018:3;13007:9;13003:19;12995:27;;13032:71;13100:1;13089:9;13085:17;13076:6;13032:71;:::i;:::-;13113:72;13181:2;13170:9;13166:18;13157:6;13113:72;:::i;:::-;13195;13263:2;13252:9;13248:18;13239:6;13195:72;:::i;:::-;13277;13345:2;13334:9;13330:18;13321:6;13277:72;:::i;:::-;13359:73;13427:3;13416:9;13412:19;13403:6;13359:73;:::i;:::-;13442;13510:3;13499:9;13495:19;13486:6;13442:73;:::i;:::-;12747:775;;;;;;;;;:::o;13528:148::-;13630:11;13667:3;13652:18;;13528:148;;;;:::o;13682:214::-;13822:66;13818:1;13810:6;13806:14;13799:90;13682:214;:::o;13902:400::-;14062:3;14083:84;14165:1;14160:3;14083:84;:::i;:::-;14076:91;;14176:93;14265:3;14176:93;:::i;:::-;14294:1;14289:3;14285:11;14278:18;;13902:400;;;:::o;14308:79::-;14347:7;14376:5;14365:16;;14308:79;;;:::o;14393:157::-;14498:45;14518:24;14536:5;14518:24;:::i;:::-;14498:45;:::i;:::-;14493:3;14486:58;14393:157;;:::o;14556:663::-;14797:3;14819:148;14963:3;14819:148;:::i;:::-;14812:155;;14977:75;15048:3;15039:6;14977:75;:::i;:::-;15077:2;15072:3;15068:12;15061:19;;15090:75;15161:3;15152:6;15090:75;:::i;:::-;15190:2;15185:3;15181:12;15174:19;;15210:3;15203:10;;14556:663;;;;;:::o;15225:545::-;15398:4;15436:3;15425:9;15421:19;15413:27;;15450:71;15518:1;15507:9;15503:17;15494:6;15450:71;:::i;:::-;15531:68;15595:2;15584:9;15580:18;15571:6;15531:68;:::i;:::-;15609:72;15677:2;15666:9;15662:18;15653:6;15609:72;:::i;:::-;15691;15759:2;15748:9;15744:18;15735:6;15691:72;:::i;:::-;15225:545;;;;;;;:::o;15776:164::-;15916:16;15912:1;15904:6;15900:14;15893:40;15776:164;:::o;15946:366::-;16088:3;16109:67;16173:2;16168:3;16109:67;:::i;:::-;16102:74;;16185:93;16274:3;16185:93;:::i;:::-;16303:2;16298:3;16294:12;16287:19;;15946:366;;;:::o;16318:419::-;16484:4;16522:2;16511:9;16507:18;16499:26;;16571:9;16565:4;16561:20;16557:1;16546:9;16542:17;16535:47;16599:131;16725:4;16599:131;:::i;:::-;16591:139;;16318:419;;;:::o;16743:180::-;16791:77;16788:1;16781:88;16888:4;16885:1;16878:15;16912:4;16909:1;16902:15;16929:180;16977:77;16974:1;16967:88;17074:4;17071:1;17064:15;17098:4;17095:1;17088:15;17115:143;17172:5;17203:6;17197:13;17188:22;;17219:33;17246:5;17219:33;:::i;:::-;17115:143;;;;:::o;17264:351::-;17334:6;17383:2;17371:9;17362:7;17358:23;17354:32;17351:119;;;17389:79;;:::i;:::-;17351:119;17509:1;17534:64;17590:7;17581:6;17570:9;17566:22;17534:64;:::i;:::-;17524:74;;17480:128;17264:351;;;;:::o;17621:332::-;17742:4;17780:2;17769:9;17765:18;17757:26;;17793:71;17861:1;17850:9;17846:17;17837:6;17793:71;:::i;:::-;17874:72;17942:2;17931:9;17927:18;17918:6;17874:72;:::i;:::-;17621:332;;;;;:::o;17959:116::-;18029:21;18044:5;18029:21;:::i;:::-;18022:5;18019:32;18009:60;;18065:1;18062;18055:12;18009:60;17959:116;:::o;18081:137::-;18135:5;18166:6;18160:13;18151:22;;18182:30;18206:5;18182:30;:::i;:::-;18081:137;;;;:::o;18224:345::-;18291:6;18340:2;18328:9;18319:7;18315:23;18311:32;18308:119;;;18346:79;;:::i;:::-;18308:119;18466:1;18491:61;18544:7;18535:6;18524:9;18520:22;18491:61;:::i;:::-;18481:71;;18437:125;18224:345;;;;:::o;18575:114::-;18642:6;18676:5;18670:12;18660:22;;18575:114;;;:::o;18695:184::-;18794:11;18828:6;18823:3;18816:19;18868:4;18863:3;18859:14;18844:29;;18695:184;;;;:::o;18885:132::-;18952:4;18975:3;18967:11;;19005:4;19000:3;18996:14;18988:22;;18885:132;;;:::o;19023:108::-;19100:24;19118:5;19100:24;:::i;:::-;19095:3;19088:37;19023:108;;:::o;19137:179::-;19206:10;19227:46;19269:3;19261:6;19227:46;:::i;:::-;19305:4;19300:3;19296:14;19282:28;;19137:179;;;;:::o;19322:113::-;19392:4;19424;19419:3;19415:14;19407:22;;19322:113;;;:::o;19471:732::-;19590:3;19619:54;19667:5;19619:54;:::i;:::-;19689:86;19768:6;19763:3;19689:86;:::i;:::-;19682:93;;19799:56;19849:5;19799:56;:::i;:::-;19878:7;19909:1;19894:284;19919:6;19916:1;19913:13;19894:284;;;19995:6;19989:13;20022:63;20081:3;20066:13;20022:63;:::i;:::-;20015:70;;20108:60;20161:6;20108:60;:::i;:::-;20098:70;;19954:224;19941:1;19938;19934:9;19929:14;;19894:284;;;19898:14;20194:3;20187:10;;19595:608;;;19471:732;;;;:::o;20209:815::-;20464:4;20502:3;20491:9;20487:19;20479:27;;20516:71;20584:1;20573:9;20569:17;20560:6;20516:71;:::i;:::-;20597:72;20665:2;20654:9;20650:18;20641:6;20597:72;:::i;:::-;20716:9;20710:4;20706:20;20701:2;20690:9;20686:18;20679:48;20744:108;20847:4;20838:6;20744:108;:::i;:::-;20736:116;;20862:72;20930:2;20919:9;20915:18;20906:6;20862:72;:::i;:::-;20944:73;21012:3;21001:9;20997:19;20988:6;20944:73;:::i;:::-;20209:815;;;;;;;;:::o;21030:147::-;21131:11;21168:3;21153:18;;21030:147;;;;:::o;21183:114::-;;:::o;21303:398::-;21462:3;21483:83;21564:1;21559:3;21483:83;:::i;:::-;21476:90;;21575:93;21664:3;21575:93;:::i;:::-;21693:1;21688:3;21684:11;21677:18;;21303:398;;;:::o;21707:379::-;21891:3;21913:147;22056:3;21913:147;:::i;:::-;21906:154;;22077:3;22070:10;;21707:379;;;:::o;22092:144::-;22144:4;22167:3;22159:11;;22190:3;22187:1;22180:14;22224:4;22221:1;22211:18;22203:26;;22092:144;;;:::o;22264:878::-;22369:3;22406:5;22400:12;22435:36;22461:9;22435:36;:::i;:::-;22487:88;22568:6;22563:3;22487:88;:::i;:::-;22480:95;;22606:1;22595:9;22591:17;22622:1;22617:166;;;;22797:1;22792:344;;;;22584:552;;22617:166;22701:4;22697:9;22686;22682:25;22677:3;22670:38;22763:6;22756:14;22749:22;22741:6;22737:35;22732:3;22728:45;22721:52;;22617:166;;22792:344;22859:41;22894:5;22859:41;:::i;:::-;22922:1;22936:154;22950:6;22947:1;22944:13;22936:154;;;23024:7;23018:14;23014:1;23009:3;23005:11;22998:35;23074:1;23065:7;23061:15;23050:26;;22972:4;22969:1;22965:12;22960:17;;22936:154;;;23119:6;23114:3;23110:16;23103:23;;22799:337;;22584:552;;22373:769;;22264:878;;;;:::o;23148:273::-;23279:3;23301:94;23391:3;23382:6;23301:94;:::i;:::-;23294:101;;23412:3;23405:10;;23148:273;;;;:::o;23427:664::-;23632:4;23670:3;23659:9;23655:19;23647:27;;23684:71;23752:1;23741:9;23737:17;23728:6;23684:71;:::i;:::-;23765:72;23833:2;23822:9;23818:18;23809:6;23765:72;:::i;:::-;23847;23915:2;23904:9;23900:18;23891:6;23847:72;:::i;:::-;23929;23997:2;23986:9;23982:18;23973:6;23929:72;:::i;:::-;24011:73;24079:3;24068:9;24064:19;24055:6;24011:73;:::i;:::-;23427:664;;;;;;;;:::o

Swarm Source

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