Spend less on fees, more on crypto. Buy crypto easily with MoonPay Balance. 20M+ users trust MoonPay worldwide.
Don’t invest unless you’re prepared to lose all the money you invest.
3000+ Slots, 20+ Cryptos, 75K Raffle, Sports Promos - World's largest Crypto Casino & Sportsbook - Provably Fair!
Play in crypto to make deposits and withdrawals easy! Register and get a free daily shot at a 100 000 $ jackpot.
Monthly Wagering Contest - $500,000+ rewards. Provably Fair, Low House Edge and best VIP Program!
Daily free Spin 50000 Matic ,760% Deposit Bonus, 20%Rakeback, And Get 1000000 Matic free bonus on BC.Game
Deposit BONUS 300% and Cashbacks. without verification!
Holidays are coming soon! Start betting on 1xBit and get a secret gift from Santa!
Overview
POL Balance
POL Value
$0.00Token Holdings
Could not find any matches!
- ERC-20 Tokens (13)7,303,272.38551961 AIMXAimedis (AIMX)$19,682.39@0.00271 https://t.ly/ethersERC-20: deBridge ... (https:...)29,367 SIMPSIMP Token1 Use just official link: Trust-earn.xyzERC-20: TRUST WAL... (Use ju...)1 TokenERC-20 TOKEN*[Suspicious]1 TokenERC-20 TOKEN*[Suspicious]10,000 TokenERC-20 TOKEN*[Suspicious]15,000 TokenERC-20 TOKEN*[Spam]4,350 TokenERC-20 TOKEN*[Spam]1 TokenERC-20 TOKEN*[Spam]1 TokenERC-20 TOKEN*[Spam]888,888 TokenERC-20 TOKEN*[Spam]3,794,998 TokenERC-20 TOKEN*[Spam]NFT Tokens (14)GIVEAWAY$100,000,000ERC-1155Vouchers5 stETH EventERC-1155NFTVoucher5000$ CYBERERC-1155Vouchers50M $SHIB VoucherERC-1155APE COINAPE NFT TICKETSERC-1155https://t.ly/ethersdeBridge Airdropx2ERC-721UNI-V3-PoSUniswap V3 Positions NFT-V1ERC-1155
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,990 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Force Withdraw F... | 64588120 | 2024-11-22 8:35:32 | 16 days ago | 1732264532 | IN | 0 POL$0.00 | 0.00934688 | 162.93992133 | ||||
Force Withdraw F... | 64588118 | 2024-11-22 8:35:28 | 16 days ago | 1732264528 | IN | 0 POL$0.00 | 0.02594571 | 162.34539832 | ||||
Emergency Reward... | 63635211 | 2024-10-29 13:55:46 | 39 days ago | 1730210146 | IN | 0 POL$0.00 | 0.01260639 | 132.36587204 | ||||
Emergency Reward... | 63634834 | 2024-10-29 13:42:26 | 39 days ago | 1730209346 | IN | 0 POL$0.00 | 0.01086711 | 114.11795612 | ||||
Transfer Ownersh... | 59237620 | 2024-07-11 17:12:51 | 149 days ago | 1720717971 | IN | 0 POL$0.00 | 0.000911 | 31.45297972 | ||||
Withdraw | 58768215 | 2024-06-30 0:11:36 | 161 days ago | 1719706296 | IN | 0 POL$0.00 | 0.00165896 | 30.09567536 | ||||
Force Withdraw F... | 58719804 | 2024-06-28 19:16:47 | 162 days ago | 1719602207 | IN | 0 POL$0.00 | 0.00172092 | 30.00000004 | ||||
Force Withdraw F... | 58425536 | 2024-06-21 10:10:49 | 170 days ago | 1718964649 | IN | 0 POL$0.00 | 0.02158618 | 52.00852287 | ||||
Force Withdraw F... | 54686371 | 2024-03-15 11:49:06 | 267 days ago | 1710503346 | IN | 0 POL$0.00 | 0.04621393 | 103.09672755 | ||||
Withdraw | 54069472 | 2024-02-28 19:21:09 | 283 days ago | 1709148069 | IN | 0 POL$0.00 | 0.01331675 | 85.97941992 | ||||
Force Withdraw F... | 53854462 | 2024-02-23 7:33:31 | 289 days ago | 1708673611 | IN | 0 POL$0.00 | 0.0229342 | 93.17960746 | ||||
Force Withdraw F... | 53356221 | 2024-02-10 15:20:39 | 301 days ago | 1707578439 | IN | 0 POL$0.00 | 0.00788308 | 55.23538272 | ||||
Force Withdraw F... | 53163346 | 2024-02-05 19:06:19 | 306 days ago | 1707159979 | IN | 0 POL$0.00 | 0.00642668 | 45.67068705 | ||||
Force Withdraw F... | 53162330 | 2024-02-05 18:29:52 | 306 days ago | 1707157792 | IN | 0 POL$0.00 | 0.00837372 | 59.50712559 | ||||
Force Withdraw F... | 53162330 | 2024-02-05 18:29:52 | 306 days ago | 1707157792 | IN | 0 POL$0.00 | 0.0179676 | 200 | ||||
Withdraw | 53012694 | 2024-02-01 20:48:40 | 310 days ago | 1706820520 | IN | 0 POL$0.00 | 0.00397567 | 32.4444349 | ||||
Deposit | 53012637 | 2024-02-01 20:46:06 | 310 days ago | 1706820366 | IN | 0 POL$0.00 | 0.00519181 | 32.01288301 | ||||
Withdraw | 52956337 | 2024-01-31 9:08:13 | 312 days ago | 1706692093 | IN | 0 POL$0.00 | 0.01224244 | 99.90735882 | ||||
Deposit | 52956295 | 2024-01-31 9:06:43 | 312 days ago | 1706692003 | IN | 0 POL$0.00 | 0.02054028 | 126.65192474 | ||||
Withdraw | 52768527 | 2024-01-26 10:47:15 | 316 days ago | 1706266035 | IN | 0 POL$0.00 | 0.0099751 | 81.40417147 | ||||
Withdraw | 52519388 | 2024-01-19 21:02:58 | 323 days ago | 1705698178 | IN | 0 POL$0.00 | 0.00380445 | 31.04716462 | ||||
Deposit | 52519374 | 2024-01-19 21:02:28 | 323 days ago | 1705698148 | IN | 0 POL$0.00 | 0.00452256 | 31.17310299 | ||||
Withdraw | 52460052 | 2024-01-18 7:15:02 | 325 days ago | 1705562102 | IN | 0 POL$0.00 | 0.00380013 | 31.01189164 | ||||
Deposit | 52429555 | 2024-01-17 12:15:13 | 325 days ago | 1705493713 | IN | 0 POL$0.00 | 0.01123259 | 87.7690785 | ||||
Withdraw | 52292375 | 2024-01-14 0:24:48 | 329 days ago | 1705191888 | IN | 0 POL$0.00 | 0.00367614 | 30.00000003 |
Contract Source Code (Solidity)
- contract Context
- - function _msgSender()
- - function _msgData()
- contract Ownable is Context
- - function owner()
- - function renounceOwnership()
- - function transferOwnership(address ne ...
- - function _transferOwnership(address n ...
- library SafeMath
- - function add(uint256 a, uint256 b)
- - function sub(uint256 a, uint256 b)
- - function sub(
- - function mul(uint256 a, uint256 b)
- - function div(uint256 a, uint256 b)
- - function div(
- - function mod(uint256 a, uint256 b)
- - function mod(
- - function min(uint256 x, uint256 y)
- - function sqrt(uint256 y)
- interface IBEP20
- - function totalSupply()
- - function decimals()
- - function symbol()
- - function name()
- - function getOwner()
- - function balanceOf(address account)
- - function transfer(address recipient, ...
- - function allowance(address _owner, ad ...
- - function approve(address spender, uin ...
- - function transferFrom(
- library SafeBEP20
- - function safeTransfer(
- - function safeTransferFrom(
- - function safeApprove(
- - function safeIncreaseAllowance(
- - function safeDecreaseAllowance(
- - function _callOptionalReturn(IBEP20 t ...
- library Address
- - function isContract(address account)
- - function sendValue(address payable re ...
- - function functionCall(address target, ...
- - function functionCall(
- - function functionCallWithValue(
- - function functionCallWithValue(
- - function _functionCallWithValue(
- contract AimedisStakingPoolPlatinu ... *
- - function stopReward()
- - function startReward()
- - function pendingReward(address _user)
- - function updatePool(uint256 _pid)
- - function massUpdatePools()
- - function deposit(uint256 _amount)
- - function depositForHolders(address[] ...
- - function forceWithdrawForHolders(addr ...
- - function withdraw()
- - function emergencyWithdraw()
- - function emergencyRewardWithdraw(uint ...
- - function calculateNewRewards()
- - function rewardsRemaining()
- - function updateApr(uint256 newApr)
- - function updateLockDuration(uint256 d ...
- - function updateExitPenalty(uint256 ne ...
/** *Submitted for verification at polygonscan.com on 2023-02-21 */ //SPDX-License-Identifier: MIT pragma solidity 0.8.16; //import "@nomiclabs/buidler/console.sol"; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() {} function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), 'Ownable: caller is not the owner'); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), 'Ownable: new owner is the zero address'); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, 'SafeMath: addition overflow'); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, 'SafeMath: subtraction overflow'); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, 'SafeMath: multiplication overflow'); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, 'SafeMath: division by zero'); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, 'SafeMath: modulo by zero'); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function min(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint256 y) internal pure returns (uint256 z) { if (y > 3) { z = y; uint256 x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } interface IBEP20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title SafeBEP20 * @dev Wrappers around BEP20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeBEP20 for IBEP20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeBEP20 { using SafeMath for uint256; using Address for address; function safeTransfer( IBEP20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IBEP20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IBEP20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IBEP20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require( (value == 0) || (token.allowance(address(this), spender) == 0), 'SafeBEP20: approve from non-zero to non-zero allowance' ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IBEP20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IBEP20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, 'SafeBEP20: decreased allowance below zero' ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IBEP20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, 'SafeBEP20: low-level call failed'); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), 'SafeBEP20: BEP20 operation did not succeed'); } } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, 'Address: insufficient balance'); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(''); require(success, 'Address: unable to send value, recipient may have reverted'); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, 'Address: low-level call failed'); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, 'Address: low-level call with value failed'); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, 'Address: insufficient balance for call'); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), 'Address: call to non-contract'); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract AimedisStakingPoolPlatinumOld is Ownable, ReentrancyGuard { using SafeMath for uint256; using SafeBEP20 for IBEP20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. } // Info of each pool. struct PoolInfo { IBEP20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. Tokens to distribute per block. uint256 lastRewardTimestamp; // Last block number that Tokens distribution occurs. uint256 accTokensPerShare; // Accumulated Tokens per share, times 1e12. See below. } IBEP20 public immutable stakingToken; IBEP20 public immutable rewardToken; mapping (address => uint256) public holderUnlockTime; uint256 public totalStaked; uint256 public apr; uint256 public lockDuration; uint256 public exitPenaltyPerc; // Info of each pool. PoolInfo[] public poolInfo; // Info of each user that stakes LP tokens. mapping (address => UserInfo) public userInfo; // Total allocation poitns. Must be the sum of all allocation points in all pools. uint256 private totalAllocPoint = 0; event Deposit(address indexed user, uint256 amount); event Withdraw(address indexed user, uint256 amount); event Compound(address indexed user); event EmergencyWithdraw(address indexed user, uint256 amount); constructor(address _tokenAddress, uint256 _apr, uint256 _lockDurationInDays, uint256 _exitPenaltyPerc) { stakingToken = IBEP20(_tokenAddress); rewardToken = IBEP20(_tokenAddress); apr = _apr; lockDuration = _lockDurationInDays * 1 days; exitPenaltyPerc = _exitPenaltyPerc; // staking pool poolInfo.push(PoolInfo({ lpToken: stakingToken, allocPoint: 1000, lastRewardTimestamp: 99999999999, accTokensPerShare: 0 })); totalAllocPoint = 1000; } function stopReward() external onlyOwner { updatePool(0); apr = 0; } function startReward() external onlyOwner { require(poolInfo[0].lastRewardTimestamp == 99999999999, "Can only start rewards once"); poolInfo[0].lastRewardTimestamp = block.timestamp; } // View function to see pending Reward on frontend. function pendingReward(address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[0]; UserInfo storage user = userInfo[_user]; if(pool.lastRewardTimestamp == 99999999999){ return 0; } uint256 accTokensPerShare = pool.accTokensPerShare; uint256 lpSupply = totalStaked; if (block.timestamp > pool.lastRewardTimestamp && lpSupply != 0) { uint256 tokenReward = calculateNewRewards().mul(pool.allocPoint).div(totalAllocPoint); accTokensPerShare = accTokensPerShare.add(tokenReward.mul(1e12).div(lpSupply)); } return user.amount.mul(accTokensPerShare).div(1e12).sub(user.rewardDebt); } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) internal { PoolInfo storage pool = poolInfo[_pid]; if (block.timestamp <= pool.lastRewardTimestamp) { return; } uint256 lpSupply = totalStaked; if (lpSupply == 0) { pool.lastRewardTimestamp = block.timestamp; return; } uint256 tokenReward = calculateNewRewards().mul(pool.allocPoint).div(totalAllocPoint); pool.accTokensPerShare = pool.accTokensPerShare.add(tokenReward.mul(1e12).div(lpSupply)); pool.lastRewardTimestamp = block.timestamp; } // Update reward variables for all pools. Be careful of gas spending! function massUpdatePools() public onlyOwner { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } // Stake primary tokens function deposit(uint256 _amount) external nonReentrant { require(_amount == 0, "Cannot deposit tokens unless owner"); if(holderUnlockTime[msg.sender] == 0){ holderUnlockTime[msg.sender] = block.timestamp + lockDuration; } PoolInfo storage pool = poolInfo[0]; UserInfo storage user = userInfo[msg.sender]; updatePool(0); if (user.amount > 0) { uint256 pending = user.amount.mul(pool.accTokensPerShare).div(1e12).sub(user.rewardDebt); if(pending > 0) { require(pending <= rewardsRemaining(), "Cannot withdraw other people's staked tokens. Contact an admin."); rewardToken.safeTransfer(address(msg.sender), pending); } } user.rewardDebt = user.amount.mul(pool.accTokensPerShare).div(1e12); emit Deposit(msg.sender, _amount); } // Stake primary tokens for holders function depositForHolders(address[] calldata accounts, uint256[] calldata amounts, uint256[] calldata expiryDates) external onlyOwner { require(accounts.length == amounts.length && amounts.length == expiryDates.length, "length mismatch"); updatePool(0); for(uint256 i = 0; i < accounts.length; i++){ holderUnlockTime[accounts[i]] = expiryDates[i]; PoolInfo storage pool = poolInfo[0]; UserInfo storage user = userInfo[accounts[i]]; if (user.amount > 0) { uint256 pending = user.amount.mul(pool.accTokensPerShare).div(1e12).sub(user.rewardDebt); if(pending > 0) { require(pending <= rewardsRemaining(), "Cannot withdraw other people's staked tokens. Contact an admin."); rewardToken.safeTransfer(address(accounts[i]), pending); } } if(amounts[i] > 0) { user.amount = user.amount.add(amounts[i]); totalStaked += amounts[i]; } user.rewardDebt = user.amount.mul(pool.accTokensPerShare).div(1e12); emit Deposit(accounts[i], amounts[i]); } require(stakingToken.balanceOf(address(this)) >= totalStaked, "Must send tokens to contract"); } // Withdraw primary tokens from STAKING. function forceWithdrawForHolders(address[] calldata accounts) external onlyOwner { updatePool(0); for(uint256 i = 0; i < accounts.length; i++){ require(holderUnlockTime[accounts[i]] <= block.timestamp, "May not do normal withdraw early"); PoolInfo storage pool = poolInfo[0]; UserInfo storage user = userInfo[accounts[i]]; uint256 _amount = user.amount; uint256 pending = user.amount.mul(pool.accTokensPerShare).div(1e12).sub(user.rewardDebt); if(pending > 0){ require(pending <= rewardsRemaining(), "Cannot withdraw other people's staked tokens. Contact an admin."); rewardToken.safeTransfer(address(accounts[i]), pending); } if(_amount > 0) { user.amount = 0; totalStaked -= _amount; pool.lpToken.safeTransfer(address(accounts[i]), _amount); } user.rewardDebt = user.amount.mul(pool.accTokensPerShare).div(1e12); holderUnlockTime[accounts[i]] = 0; emit Withdraw(accounts[i], _amount); } } // Withdraw primary tokens from STAKING. function withdraw() external nonReentrant { require(holderUnlockTime[msg.sender] <= block.timestamp, "May not do normal withdraw early"); PoolInfo storage pool = poolInfo[0]; UserInfo storage user = userInfo[msg.sender]; uint256 _amount = user.amount; updatePool(0); uint256 pending = user.amount.mul(pool.accTokensPerShare).div(1e12).sub(user.rewardDebt); if(pending > 0){ require(pending <= rewardsRemaining(), "Cannot withdraw other people's staked tokens. Contact an admin."); rewardToken.safeTransfer(address(msg.sender), pending); } if(_amount > 0) { user.amount = 0; totalStaked -= _amount; pool.lpToken.safeTransfer(address(msg.sender), _amount); } user.rewardDebt = user.amount.mul(pool.accTokensPerShare).div(1e12); if(user.amount > 0){ holderUnlockTime[msg.sender] = block.timestamp + lockDuration; } else { holderUnlockTime[msg.sender] = 0; } emit Withdraw(msg.sender, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw() external nonReentrant { PoolInfo storage pool = poolInfo[0]; UserInfo storage user = userInfo[msg.sender]; uint256 _amount = user.amount; totalStaked -= _amount; // exit penalty for early unstakers, penalty held on contract as rewards. if(holderUnlockTime[msg.sender] >= block.timestamp){ _amount -= _amount * exitPenaltyPerc / 100; } holderUnlockTime[msg.sender] = 0; pool.lpToken.safeTransfer(address(msg.sender), _amount); user.amount = 0; user.rewardDebt = 0; emit EmergencyWithdraw(msg.sender, _amount); } // Withdraw reward. EMERGENCY ONLY. This allows the owner to migrate rewards to a new staking pool since we are not minting new tokens. function emergencyRewardWithdraw(uint256 _amount) external onlyOwner { require(_amount <= rewardToken.balanceOf(address(this)) - totalStaked, 'not enough tokens to take out'); rewardToken.safeTransfer(address(msg.sender), _amount); } function calculateNewRewards() public view returns (uint256) { PoolInfo storage pool = poolInfo[0]; if(pool.lastRewardTimestamp > block.timestamp){ return 0; } return (((block.timestamp - pool.lastRewardTimestamp) * totalStaked) * apr / 100 / 365 days); } function rewardsRemaining() public view returns (uint256){ return rewardToken.balanceOf(address(this)) - totalStaked; } function updateApr(uint256 newApr) external onlyOwner { require(newApr <= 100, "APR must be below 100%"); updatePool(0); apr = newApr; } function updateLockDuration(uint256 daysForLock) external onlyOwner { require(daysForLock <= 365, "Lock must be 365 days or less."); lockDuration = daysForLock * 1 days; } function updateExitPenalty(uint256 newPenaltyPerc) external onlyOwner { require(newPenaltyPerc <= 25, "May not set higher than 25%"); exitPenaltyPerc = newPenaltyPerc; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_apr","type":"uint256"},{"internalType":"uint256","name":"_lockDurationInDays","type":"uint256"},{"internalType":"uint256","name":"_exitPenaltyPerc","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"apr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculateNewRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"expiryDates","type":"uint256[]"}],"name":"depositForHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyRewardWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exitPenaltyPerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"forceWithdrawForHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IBEP20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardTimestamp","type":"uint256"},{"internalType":"uint256","name":"accTokensPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newApr","type":"uint256"}],"name":"updateApr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPenaltyPerc","type":"uint256"}],"name":"updateExitPenalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"daysForLock","type":"uint256"}],"name":"updateLockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405260006009553480156200001657600080fd5b50604051620040a6380380620040a683398181016040528101906200003c919062000313565b60006200004e6200026660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050826004819055506201518082620001739190620003b4565b600581905550806006819055506007604051806080016040528060805173ffffffffffffffffffffffffffffffffffffffff1681526020016103e8815260200164174876e7ff81526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015550506103e86009819055505050505062000415565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002a08262000273565b9050919050565b620002b28162000293565b8114620002be57600080fd5b50565b600081519050620002d281620002a7565b92915050565b6000819050919050565b620002ed81620002d8565b8114620002f957600080fd5b50565b6000815190506200030d81620002e2565b92915050565b6000806000806080858703121562000330576200032f6200026e565b5b60006200034087828801620002c1565b94505060206200035387828801620002fc565b93505060406200036687828801620002fc565b92505060606200037987828801620002fc565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620003c182620002d8565b9150620003ce83620002d8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200040a576200040962000385565b5b828202905092915050565b60805160a051613c33620004736000396000818161081b01528181610b4d01528181610c3801528181610e71015281816113eb01528181611a3201528181611dca015261253c0152600081816109d201526112930152613c336000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806380dc0672116100f9578063b6b55f2511610097578063db2e21bc11610071578063db2e21bc14610428578063f2fde38b14610432578063f40f0f521461044e578063f7c618c11461047e576101a9565b8063b6b55f25146103d4578063bee6c1da146103f0578063d477edf41461040c576101a9565b80638da5cb5b116100d35780638da5cb5b1461034c5780638e0b01981461036a578063999e2f7514610386578063a913a5f7146103a4576101a9565b806380dc067214610308578063817b1cd2146103125780638552bf9014610330576101a9565b806357ded9c91161016657806372f702f31161014057806372f702f3146102a4578063746c8ae1146102c257806378c196f3146102cc5780637b280def146102ea576101a9565b806357ded9c914610272578063630b5ba114610290578063715018a61461029a576101a9565b806304554443146101ae5780631526fe27146101cc5780631959a002146101ff578063212a0780146102305780633279beab1461024c5780633ccfd60b14610268575b600080fd5b6101b661049c565b6040516101c39190612c94565b60405180910390f35b6101e660048036038101906101e19190612ce5565b6104a2565b6040516101f69493929190612d91565b60405180910390f35b61021960048036038101906102149190612e14565b610502565b604051610227929190612e41565b60405180910390f35b61024a60048036038101906102459190612f25565b610526565b005b61026660048036038101906102619190612ce5565b610ab3565b005b610270610c7f565b005b61027a611070565b6040516102879190612c94565b60405180910390f35b610298611076565b005b6102a261113e565b005b6102ac611291565b6040516102b99190612fd9565b60405180910390f35b6102ca6112b5565b005b6102d46113e4565b6040516102e19190612c94565b60405180910390f35b6102f2611492565b6040516102ff9190612c94565b60405180910390f35b610310611498565b005b61031a611541565b6040516103279190612c94565b60405180910390f35b61034a60048036038101906103459190612ce5565b611547565b005b610354611634565b6040516103619190613003565b60405180910390f35b610384600480360381019061037f9190612ce5565b61165d565b005b61038e611740565b60405161039b9190612c94565b60405180910390f35b6103be60048036038101906103b99190612e14565b6117ca565b6040516103cb9190612c94565b60405180910390f35b6103ee60048036038101906103e99190612ce5565b6117e2565b005b61040a6004803603810190610405919061301e565b611b0d565b005b61042660048036038101906104219190612ce5565b611fe9565b005b6104306120db565b005b61044c60048036038101906104479190612e14565b612324565b005b61046860048036038101906104639190612e14565b6123c5565b6040516104759190612c94565b60405180910390f35b61048661253a565b6040516104939190612fd9565b60405180910390f35b60055481565b600781815481106104b257600080fd5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60086020528060005260406000206000915090508060000154908060010154905082565b61052e61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b2906130c8565b60405180910390fd5b83839050868690501480156105d557508181905084849050145b610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b90613134565b60405180910390fd5b61061e6000612566565b60005b868690508110156109cc5782828281811061063f5761063e613154565b5b905060200201356002600089898581811061065d5761065c613154565b5b90506020020160208101906106729190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060076000815481106106c7576106c6613154565b5b906000526020600020906004020190506000600860008a8a868181106106f0576106ef613154565b5b90506020020160208101906107059190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001541115610862576000610798826001015461078a64e8d4a5100061077c8760030154876000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115610860576107ab6113e4565b8111156107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e4906131f5565b60405180910390fd5b61085f8a8a8681811061080357610802613154565b5b90506020020160208101906108189190612e14565b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b505b600087878581811061087757610876613154565b5b9050602002013511156108ef576108b487878581811061089a57610899613154565b5b9050602002013582600001546127de90919063ffffffff16565b81600001819055508686848181106108cf576108ce613154565b5b90506020020135600360008282546108e79190613244565b925050819055505b61092164e8d4a510006109138460030154846000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b816001018190555088888481811061093c5761093b613154565b5b90506020020160208101906109519190612e14565b73ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c88888681811061099b5761099a613154565b5b905060200201356040516109af9190612c94565b60405180910390a2505080806109c490613278565b915050610621565b506003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a299190613003565b602060405180830381865afa158015610a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6a91906132d5565b1015610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa29061334e565b60405180910390fd5b505050505050565b610abb61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f906130c8565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ba49190613003565b602060405180830381865afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be591906132d5565b610bef919061336e565b811115610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c28906133ee565b60405180910390fd5b610c7c33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b50565b600260015403610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb9061345a565b60405180910390fd5b600260018190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d45906134c6565b60405180910390fd5b60006007600081548110610d6557610d64613154565b5b906000526020600020906004020190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050610dcb6000612566565b6000610e158360010154610e0764e8d4a51000610df98860030154886000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115610eb657610e286113e4565b811115610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e61906131f5565b60405180910390fd5b610eb533827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b6000821115610f3257600083600001819055508160036000828254610edb919061336e565b92505081905550610f3133838660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b610f6464e8d4a51000610f568660030154866000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b8360010181905550600083600001541115610fcf5760055442610f879190613244565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611015565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161105b9190612c94565b60405180910390a25050505060018081905550565b60045481565b61107e61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906130c8565b60405180910390fd5b6000600780549050905060005b8181101561113a5761112981612566565b8061113390613278565b9050611118565b5050565b61114661255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906130c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112bd61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611341906130c8565b60405180910390fd5b64174876e7ff600760008154811061136557611364613154565b5b906000526020600020906004020160020154146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613532565b60405180910390fd5b4260076000815481106113cd576113cc613154565b5b906000526020600020906004020160020181905550565b60006003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114429190613003565b602060405180830381865afa15801561145f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148391906132d5565b61148d919061336e565b905090565b60065481565b6114a061255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906130c8565b60405180910390fd5b6115376000612566565b6000600481905550565b60035481565b61154f61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d3906130c8565b60405180910390fd5b6064811115611620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116179061359e565b60405180910390fd5b61162a6000612566565b8060048190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166561255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906130c8565b60405180910390fd5b6019811115611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d9061360a565b60405180910390fd5b8060068190555050565b600080600760008154811061175857611757613154565b5b90600052602060002090600402019050428160020154111561177e5760009150506117c7565b6301e13380606460045460035484600201544261179b919061336e565b6117a5919061362a565b6117af919061362a565b6117b991906136b3565b6117c391906136b3565b9150505b90565b60026020528060005260406000206000915090505481565b600260015403611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e9061345a565b60405180910390fd5b600260018190555060008114611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613756565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361190b57600554426118c79190613244565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600760008154811061192257611921613154565b5b906000526020600020906004020190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061197f6000612566565b600081600001541115611a795760006119d682600101546119c864e8d4a510006119ba8760030154876000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115611a77576119e96113e4565b811115611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906131f5565b60405180910390fd5b611a7633827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b505b611aab64e8d4a51000611a9d8460030154846000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b81600101819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051611af99190612c94565b60405180910390a250506001808190555050565b611b1561255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b99906130c8565b60405180910390fd5b611bac6000612566565b60005b82829050811015611fe4574260026000858585818110611bd257611bd1613154565b5b9050602002016020810190611be79190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5a906134c6565b60405180910390fd5b60006007600081548110611c7a57611c79613154565b5b90600052602060002090600402019050600060086000868686818110611ca357611ca2613154565b5b9050602002016020810190611cb89190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015490506000611d478360010154611d3964e8d4a51000611d2b8860030154886000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115611e0f57611d5a6113e4565b811115611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d93906131f5565b60405180910390fd5b611e0e878787818110611db257611db1613154565b5b9050602002016020810190611dc79190612e14565b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b6000821115611eb257600083600001819055508160036000828254611e34919061336e565b92505081905550611eb1878787818110611e5157611e50613154565b5b9050602002016020810190611e669190612e14565b838660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b611ee464e8d4a51000611ed68660030154866000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b8360010181905550600060026000898989818110611f0557611f04613154565b5b9050602002016020810190611f1a9190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868686818110611f6b57611f6a613154565b5b9050602002016020810190611f809190612e14565b73ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051611fc59190612c94565b60405180910390a2505050508080611fdc90613278565b915050611baf565b505050565b611ff161255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612075906130c8565b60405180910390fd5b61016d8111156120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba906137c2565b60405180910390fd5b62015180816120d2919061362a565b60058190555050565b600260015403612120576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121179061345a565b60405180910390fd5b60026001819055506000600760008154811061213f5761213e613154565b5b906000526020600020906004020190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905080600360008282546121ad919061336e565b9250508190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106122225760646006548261220a919061362a565b61221491906136b3565b8161221f919061336e565b90505b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b633828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b60008260000181905550600082600101819055503373ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695826040516123109190612c94565b60405180910390a250505060018081905550565b61232c61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b0906130c8565b60405180910390fd5b6123c28161283c565b50565b60008060076000815481106123dd576123dc613154565b5b906000526020600020906004020190506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905064174876e7ff82600201540361244b57600092505050612535565b6000826003015490506000600354905083600201544211801561246f575060008114155b156124ea5760006124a860095461249a876001015461248c611740565b61264a90919063ffffffff16565b6126c490919063ffffffff16565b90506124e66124d7836124c964e8d4a510008561264a90919063ffffffff16565b6126c490919063ffffffff16565b846127de90919063ffffffff16565b9250505b61252e836001015461252064e8d4a5100061251286886000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b9450505050505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600033905090565b60006007828154811061257c5761257b613154565b5b906000526020600020906004020190508060020154421161259d5750612647565b60006003549050600081036125bc574282600201819055505050612647565b60006125f06009546125e285600101546125d4611740565b61264a90919063ffffffff16565b6126c490919063ffffffff16565b905061263261261f8361261164e8d4a510008561264a90919063ffffffff16565b6126c490919063ffffffff16565b84600301546127de90919063ffffffff16565b83600301819055504283600201819055505050505b50565b600080830361265c57600090506126be565b6000828461266a919061362a565b905082848261267991906136b3565b146126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b090613854565b60405180910390fd5b809150505b92915050565b600061270683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612968565b905092915050565b600061275083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129cb565b905092915050565b6127d98363a9059cbb60e01b8484604051602401612777929190613874565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a2f565b505050565b60008082846127ed9190613244565b905083811015612832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612829906138e9565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a29061397b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906129af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a69190613a1a565b60405180910390fd5b50600083856129be91906136b3565b9050809150509392505050565b6000838311158290612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a9190613a1a565b60405180910390fd5b5060008385612a22919061336e565b9050809150509392505050565b6000612a91826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612af69092919063ffffffff16565b9050600081511115612af15780806020019051810190612ab19190613a74565b612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae790613b13565b60405180910390fd5b5b505050565b6060612b058484600085612b0e565b90509392505050565b6060612b1985612c30565b612b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4f90613b7f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b819190613be6565b60006040518083038185875af1925050503d8060008114612bbe576040519150601f19603f3d011682016040523d82523d6000602084013e612bc3565b606091505b50915091508115612bd8578092505050612c28565b600081511115612beb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f9190613a1a565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612c7257506000801b8214155b92505050919050565b6000819050919050565b612c8e81612c7b565b82525050565b6000602082019050612ca96000830184612c85565b92915050565b600080fd5b600080fd5b612cc281612c7b565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b600060208284031215612cfb57612cfa612caf565b5b6000612d0984828501612cd0565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612d57612d52612d4d84612d12565b612d32565b612d12565b9050919050565b6000612d6982612d3c565b9050919050565b6000612d7b82612d5e565b9050919050565b612d8b81612d70565b82525050565b6000608082019050612da66000830187612d82565b612db36020830186612c85565b612dc06040830185612c85565b612dcd6060830184612c85565b95945050505050565b6000612de182612d12565b9050919050565b612df181612dd6565b8114612dfc57600080fd5b50565b600081359050612e0e81612de8565b92915050565b600060208284031215612e2a57612e29612caf565b5b6000612e3884828501612dff565b91505092915050565b6000604082019050612e566000830185612c85565b612e636020830184612c85565b9392505050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e8f57612e8e612e6a565b5b8235905067ffffffffffffffff811115612eac57612eab612e6f565b5b602083019150836020820283011115612ec857612ec7612e74565b5b9250929050565b60008083601f840112612ee557612ee4612e6a565b5b8235905067ffffffffffffffff811115612f0257612f01612e6f565b5b602083019150836020820283011115612f1e57612f1d612e74565b5b9250929050565b60008060008060008060608789031215612f4257612f41612caf565b5b600087013567ffffffffffffffff811115612f6057612f5f612cb4565b5b612f6c89828a01612e79565b9650965050602087013567ffffffffffffffff811115612f8f57612f8e612cb4565b5b612f9b89828a01612ecf565b9450945050604087013567ffffffffffffffff811115612fbe57612fbd612cb4565b5b612fca89828a01612ecf565b92509250509295509295509295565b6000602082019050612fee6000830184612d82565b92915050565b612ffd81612dd6565b82525050565b60006020820190506130186000830184612ff4565b92915050565b6000806020838503121561303557613034612caf565b5b600083013567ffffffffffffffff81111561305357613052612cb4565b5b61305f85828601612e79565b92509250509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130b260208361306b565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f6c656e677468206d69736d617463680000000000000000000000000000000000600082015250565b600061311e600f8361306b565b9150613129826130e8565b602082019050919050565b6000602082019050818103600083015261314d81613111565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f43616e6e6f74207769746864726177206f746865722070656f706c652773207360008201527f74616b656420746f6b656e732e2020436f6e7461637420616e2061646d696e2e602082015250565b60006131df60408361306b565b91506131ea82613183565b604082019050919050565b6000602082019050818103600083015261320e816131d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061324f82612c7b565b915061325a83612c7b565b925082820190508082111561327257613271613215565b5b92915050565b600061328382612c7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b5576132b4613215565b5b600182019050919050565b6000815190506132cf81612cb9565b92915050565b6000602082840312156132eb576132ea612caf565b5b60006132f9848285016132c0565b91505092915050565b7f4d7573742073656e6420746f6b656e7320746f20636f6e747261637400000000600082015250565b6000613338601c8361306b565b915061334382613302565b602082019050919050565b600060208201905081810360008301526133678161332b565b9050919050565b600061337982612c7b565b915061338483612c7b565b925082820390508181111561339c5761339b613215565b5b92915050565b7f6e6f7420656e6f75676820746f6b656e7320746f2074616b65206f7574000000600082015250565b60006133d8601d8361306b565b91506133e3826133a2565b602082019050919050565b60006020820190508181036000830152613407816133cb565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613444601f8361306b565b915061344f8261340e565b602082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f4d6179206e6f7420646f206e6f726d616c207769746864726177206561726c79600082015250565b60006134b060208361306b565b91506134bb8261347a565b602082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b7f43616e206f6e6c792073746172742072657761726473206f6e63650000000000600082015250565b600061351c601b8361306b565b9150613527826134e6565b602082019050919050565b6000602082019050818103600083015261354b8161350f565b9050919050565b7f415052206d7573742062652062656c6f77203130302500000000000000000000600082015250565b600061358860168361306b565b915061359382613552565b602082019050919050565b600060208201905081810360008301526135b78161357b565b9050919050565b7f4d6179206e6f742073657420686967686572207468616e203235250000000000600082015250565b60006135f4601b8361306b565b91506135ff826135be565b602082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b600061363582612c7b565b915061364083612c7b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561367957613678613215565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136be82612c7b565b91506136c983612c7b565b9250826136d9576136d8613684565b5b828204905092915050565b7f43616e6e6f74206465706f73697420746f6b656e7320756e6c657373206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b600061374060228361306b565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f4c6f636b206d757374206265203336352064617973206f72206c6573732e0000600082015250565b60006137ac601e8361306b565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061383e60218361306b565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b60006040820190506138896000830185612ff4565b6138966020830184612c85565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006138d3601b8361306b565b91506138de8261389d565b602082019050919050565b60006020820190508181036000830152613902816138c6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061396560268361306b565b915061397082613909565b604082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b600081519050919050565b60005b838110156139c45780820151818401526020810190506139a9565b60008484015250505050565b6000601f19601f8301169050919050565b60006139ec8261399b565b6139f6818561306b565b9350613a068185602086016139a6565b613a0f816139d0565b840191505092915050565b60006020820190508181036000830152613a3481846139e1565b905092915050565b60008115159050919050565b613a5181613a3c565b8114613a5c57600080fd5b50565b600081519050613a6e81613a48565b92915050565b600060208284031215613a8a57613a89612caf565b5b6000613a9884828501613a5f565b91505092915050565b7f5361666542455032303a204245503230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613afd602a8361306b565b9150613b0882613aa1565b604082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613b69601d8361306b565b9150613b7482613b33565b602082019050919050565b60006020820190508181036000830152613b9881613b5c565b9050919050565b600081519050919050565b600081905092915050565b6000613bc082613b9f565b613bca8185613baa565b9350613bda8185602086016139a6565b80840191505092915050565b6000613bf28284613bb5565b91508190509291505056fea264697066735822122002f0ab0a9bd61f43ffa02ba0bdb7c5ab779e9148c84f5622c01bc8f8c1474e0c64736f6c6343000810003300000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000019
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806380dc0672116100f9578063b6b55f2511610097578063db2e21bc11610071578063db2e21bc14610428578063f2fde38b14610432578063f40f0f521461044e578063f7c618c11461047e576101a9565b8063b6b55f25146103d4578063bee6c1da146103f0578063d477edf41461040c576101a9565b80638da5cb5b116100d35780638da5cb5b1461034c5780638e0b01981461036a578063999e2f7514610386578063a913a5f7146103a4576101a9565b806380dc067214610308578063817b1cd2146103125780638552bf9014610330576101a9565b806357ded9c91161016657806372f702f31161014057806372f702f3146102a4578063746c8ae1146102c257806378c196f3146102cc5780637b280def146102ea576101a9565b806357ded9c914610272578063630b5ba114610290578063715018a61461029a576101a9565b806304554443146101ae5780631526fe27146101cc5780631959a002146101ff578063212a0780146102305780633279beab1461024c5780633ccfd60b14610268575b600080fd5b6101b661049c565b6040516101c39190612c94565b60405180910390f35b6101e660048036038101906101e19190612ce5565b6104a2565b6040516101f69493929190612d91565b60405180910390f35b61021960048036038101906102149190612e14565b610502565b604051610227929190612e41565b60405180910390f35b61024a60048036038101906102459190612f25565b610526565b005b61026660048036038101906102619190612ce5565b610ab3565b005b610270610c7f565b005b61027a611070565b6040516102879190612c94565b60405180910390f35b610298611076565b005b6102a261113e565b005b6102ac611291565b6040516102b99190612fd9565b60405180910390f35b6102ca6112b5565b005b6102d46113e4565b6040516102e19190612c94565b60405180910390f35b6102f2611492565b6040516102ff9190612c94565b60405180910390f35b610310611498565b005b61031a611541565b6040516103279190612c94565b60405180910390f35b61034a60048036038101906103459190612ce5565b611547565b005b610354611634565b6040516103619190613003565b60405180910390f35b610384600480360381019061037f9190612ce5565b61165d565b005b61038e611740565b60405161039b9190612c94565b60405180910390f35b6103be60048036038101906103b99190612e14565b6117ca565b6040516103cb9190612c94565b60405180910390f35b6103ee60048036038101906103e99190612ce5565b6117e2565b005b61040a6004803603810190610405919061301e565b611b0d565b005b61042660048036038101906104219190612ce5565b611fe9565b005b6104306120db565b005b61044c60048036038101906104479190612e14565b612324565b005b61046860048036038101906104639190612e14565b6123c5565b6040516104759190612c94565b60405180910390f35b61048661253a565b6040516104939190612fd9565b60405180910390f35b60055481565b600781815481106104b257600080fd5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b60086020528060005260406000206000915090508060000154908060010154905082565b61052e61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b2906130c8565b60405180910390fd5b83839050868690501480156105d557508181905084849050145b610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b90613134565b60405180910390fd5b61061e6000612566565b60005b868690508110156109cc5782828281811061063f5761063e613154565b5b905060200201356002600089898581811061065d5761065c613154565b5b90506020020160208101906106729190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060076000815481106106c7576106c6613154565b5b906000526020600020906004020190506000600860008a8a868181106106f0576106ef613154565b5b90506020020160208101906107059190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001541115610862576000610798826001015461078a64e8d4a5100061077c8760030154876000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115610860576107ab6113e4565b8111156107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e4906131f5565b60405180910390fd5b61085f8a8a8681811061080357610802613154565b5b90506020020160208101906108189190612e14565b827f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b505b600087878581811061087757610876613154565b5b9050602002013511156108ef576108b487878581811061089a57610899613154565b5b9050602002013582600001546127de90919063ffffffff16565b81600001819055508686848181106108cf576108ce613154565b5b90506020020135600360008282546108e79190613244565b925050819055505b61092164e8d4a510006109138460030154846000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b816001018190555088888481811061093c5761093b613154565b5b90506020020160208101906109519190612e14565b73ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c88888681811061099b5761099a613154565b5b905060200201356040516109af9190612c94565b60405180910390a2505080806109c490613278565b915050610621565b506003547f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a299190613003565b602060405180830381865afa158015610a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6a91906132d5565b1015610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa29061334e565b60405180910390fd5b505050505050565b610abb61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f906130c8565b60405180910390fd5b6003547f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ba49190613003565b602060405180830381865afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be591906132d5565b610bef919061336e565b811115610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c28906133ee565b60405180910390fd5b610c7c33827f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b50565b600260015403610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb9061345a565b60405180910390fd5b600260018190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d45906134c6565b60405180910390fd5b60006007600081548110610d6557610d64613154565b5b906000526020600020906004020190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050610dcb6000612566565b6000610e158360010154610e0764e8d4a51000610df98860030154886000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115610eb657610e286113e4565b811115610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e61906131f5565b60405180910390fd5b610eb533827f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b6000821115610f3257600083600001819055508160036000828254610edb919061336e565b92505081905550610f3133838660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b610f6464e8d4a51000610f568660030154866000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b8360010181905550600083600001541115610fcf5760055442610f879190613244565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611015565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161105b9190612c94565b60405180910390a25050505060018081905550565b60045481565b61107e61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906130c8565b60405180910390fd5b6000600780549050905060005b8181101561113a5761112981612566565b8061113390613278565b9050611118565b5050565b61114661255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906130c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b7f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db81565b6112bd61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611341906130c8565b60405180910390fd5b64174876e7ff600760008154811061136557611364613154565b5b906000526020600020906004020160020154146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90613532565b60405180910390fd5b4260076000815481106113cd576113cc613154565b5b906000526020600020906004020160020181905550565b60006003547f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114429190613003565b602060405180830381865afa15801561145f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148391906132d5565b61148d919061336e565b905090565b60065481565b6114a061255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906130c8565b60405180910390fd5b6115376000612566565b6000600481905550565b60035481565b61154f61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d3906130c8565b60405180910390fd5b6064811115611620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116179061359e565b60405180910390fd5b61162a6000612566565b8060048190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166561255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906130c8565b60405180910390fd5b6019811115611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d9061360a565b60405180910390fd5b8060068190555050565b600080600760008154811061175857611757613154565b5b90600052602060002090600402019050428160020154111561177e5760009150506117c7565b6301e13380606460045460035484600201544261179b919061336e565b6117a5919061362a565b6117af919061362a565b6117b991906136b3565b6117c391906136b3565b9150505b90565b60026020528060005260406000206000915090505481565b600260015403611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e9061345a565b60405180910390fd5b600260018190555060008114611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613756565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361190b57600554426118c79190613244565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600760008154811061192257611921613154565b5b906000526020600020906004020190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061197f6000612566565b600081600001541115611a795760006119d682600101546119c864e8d4a510006119ba8760030154876000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115611a77576119e96113e4565b811115611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a22906131f5565b60405180910390fd5b611a7633827f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b505b611aab64e8d4a51000611a9d8460030154846000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b81600101819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051611af99190612c94565b60405180910390a250506001808190555050565b611b1561255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b99906130c8565b60405180910390fd5b611bac6000612566565b60005b82829050811015611fe4574260026000858585818110611bd257611bd1613154565b5b9050602002016020810190611be79190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5a906134c6565b60405180910390fd5b60006007600081548110611c7a57611c79613154565b5b90600052602060002090600402019050600060086000868686818110611ca357611ca2613154565b5b9050602002016020810190611cb89190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015490506000611d478360010154611d3964e8d4a51000611d2b8860030154886000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b90506000811115611e0f57611d5a6113e4565b811115611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d93906131f5565b60405180910390fd5b611e0e878787818110611db257611db1613154565b5b9050602002016020810190611dc79190612e14565b827f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db73ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b6000821115611eb257600083600001819055508160036000828254611e34919061336e565b92505081905550611eb1878787818110611e5157611e50613154565b5b9050602002016020810190611e669190612e14565b838660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b5b611ee464e8d4a51000611ed68660030154866000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b8360010181905550600060026000898989818110611f0557611f04613154565b5b9050602002016020810190611f1a9190612e14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868686818110611f6b57611f6a613154565b5b9050602002016020810190611f809190612e14565b73ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051611fc59190612c94565b60405180910390a2505050508080611fdc90613278565b915050611baf565b505050565b611ff161255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612075906130c8565b60405180910390fd5b61016d8111156120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba906137c2565b60405180910390fd5b62015180816120d2919061362a565b60058190555050565b600260015403612120576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121179061345a565b60405180910390fd5b60026001819055506000600760008154811061213f5761213e613154565b5b906000526020600020906004020190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905080600360008282546121ad919061336e565b9250508190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106122225760646006548261220a919061362a565b61221491906136b3565b8161221f919061336e565b90505b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122b633828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166127589092919063ffffffff16565b60008260000181905550600082600101819055503373ffffffffffffffffffffffffffffffffffffffff167f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695826040516123109190612c94565b60405180910390a250505060018081905550565b61232c61255e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b0906130c8565b60405180910390fd5b6123c28161283c565b50565b60008060076000815481106123dd576123dc613154565b5b906000526020600020906004020190506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905064174876e7ff82600201540361244b57600092505050612535565b6000826003015490506000600354905083600201544211801561246f575060008114155b156124ea5760006124a860095461249a876001015461248c611740565b61264a90919063ffffffff16565b6126c490919063ffffffff16565b90506124e66124d7836124c964e8d4a510008561264a90919063ffffffff16565b6126c490919063ffffffff16565b846127de90919063ffffffff16565b9250505b61252e836001015461252064e8d4a5100061251286886000015461264a90919063ffffffff16565b6126c490919063ffffffff16565b61270e90919063ffffffff16565b9450505050505b919050565b7f00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db81565b600033905090565b60006007828154811061257c5761257b613154565b5b906000526020600020906004020190508060020154421161259d5750612647565b60006003549050600081036125bc574282600201819055505050612647565b60006125f06009546125e285600101546125d4611740565b61264a90919063ffffffff16565b6126c490919063ffffffff16565b905061263261261f8361261164e8d4a510008561264a90919063ffffffff16565b6126c490919063ffffffff16565b84600301546127de90919063ffffffff16565b83600301819055504283600201819055505050505b50565b600080830361265c57600090506126be565b6000828461266a919061362a565b905082848261267991906136b3565b146126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b090613854565b60405180910390fd5b809150505b92915050565b600061270683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612968565b905092915050565b600061275083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129cb565b905092915050565b6127d98363a9059cbb60e01b8484604051602401612777929190613874565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a2f565b505050565b60008082846127ed9190613244565b905083811015612832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612829906138e9565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a29061397b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080831182906129af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a69190613a1a565b60405180910390fd5b50600083856129be91906136b3565b9050809150509392505050565b6000838311158290612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a9190613a1a565b60405180910390fd5b5060008385612a22919061336e565b9050809150509392505050565b6000612a91826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612af69092919063ffffffff16565b9050600081511115612af15780806020019051810190612ab19190613a74565b612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae790613b13565b60405180910390fd5b5b505050565b6060612b058484600085612b0e565b90509392505050565b6060612b1985612c30565b612b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4f90613b7f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b819190613be6565b60006040518083038185875af1925050503d8060008114612bbe576040519150601f19603f3d011682016040523d82523d6000602084013e612bc3565b606091505b50915091508115612bd8578092505050612c28565b600081511115612beb5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f9190613a1a565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015612c7257506000801b8214155b92505050919050565b6000819050919050565b612c8e81612c7b565b82525050565b6000602082019050612ca96000830184612c85565b92915050565b600080fd5b600080fd5b612cc281612c7b565b8114612ccd57600080fd5b50565b600081359050612cdf81612cb9565b92915050565b600060208284031215612cfb57612cfa612caf565b5b6000612d0984828501612cd0565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612d57612d52612d4d84612d12565b612d32565b612d12565b9050919050565b6000612d6982612d3c565b9050919050565b6000612d7b82612d5e565b9050919050565b612d8b81612d70565b82525050565b6000608082019050612da66000830187612d82565b612db36020830186612c85565b612dc06040830185612c85565b612dcd6060830184612c85565b95945050505050565b6000612de182612d12565b9050919050565b612df181612dd6565b8114612dfc57600080fd5b50565b600081359050612e0e81612de8565b92915050565b600060208284031215612e2a57612e29612caf565b5b6000612e3884828501612dff565b91505092915050565b6000604082019050612e566000830185612c85565b612e636020830184612c85565b9392505050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e8f57612e8e612e6a565b5b8235905067ffffffffffffffff811115612eac57612eab612e6f565b5b602083019150836020820283011115612ec857612ec7612e74565b5b9250929050565b60008083601f840112612ee557612ee4612e6a565b5b8235905067ffffffffffffffff811115612f0257612f01612e6f565b5b602083019150836020820283011115612f1e57612f1d612e74565b5b9250929050565b60008060008060008060608789031215612f4257612f41612caf565b5b600087013567ffffffffffffffff811115612f6057612f5f612cb4565b5b612f6c89828a01612e79565b9650965050602087013567ffffffffffffffff811115612f8f57612f8e612cb4565b5b612f9b89828a01612ecf565b9450945050604087013567ffffffffffffffff811115612fbe57612fbd612cb4565b5b612fca89828a01612ecf565b92509250509295509295509295565b6000602082019050612fee6000830184612d82565b92915050565b612ffd81612dd6565b82525050565b60006020820190506130186000830184612ff4565b92915050565b6000806020838503121561303557613034612caf565b5b600083013567ffffffffffffffff81111561305357613052612cb4565b5b61305f85828601612e79565b92509250509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130b260208361306b565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f6c656e677468206d69736d617463680000000000000000000000000000000000600082015250565b600061311e600f8361306b565b9150613129826130e8565b602082019050919050565b6000602082019050818103600083015261314d81613111565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f43616e6e6f74207769746864726177206f746865722070656f706c652773207360008201527f74616b656420746f6b656e732e2020436f6e7461637420616e2061646d696e2e602082015250565b60006131df60408361306b565b91506131ea82613183565b604082019050919050565b6000602082019050818103600083015261320e816131d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061324f82612c7b565b915061325a83612c7b565b925082820190508082111561327257613271613215565b5b92915050565b600061328382612c7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b5576132b4613215565b5b600182019050919050565b6000815190506132cf81612cb9565b92915050565b6000602082840312156132eb576132ea612caf565b5b60006132f9848285016132c0565b91505092915050565b7f4d7573742073656e6420746f6b656e7320746f20636f6e747261637400000000600082015250565b6000613338601c8361306b565b915061334382613302565b602082019050919050565b600060208201905081810360008301526133678161332b565b9050919050565b600061337982612c7b565b915061338483612c7b565b925082820390508181111561339c5761339b613215565b5b92915050565b7f6e6f7420656e6f75676820746f6b656e7320746f2074616b65206f7574000000600082015250565b60006133d8601d8361306b565b91506133e3826133a2565b602082019050919050565b60006020820190508181036000830152613407816133cb565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613444601f8361306b565b915061344f8261340e565b602082019050919050565b6000602082019050818103600083015261347381613437565b9050919050565b7f4d6179206e6f7420646f206e6f726d616c207769746864726177206561726c79600082015250565b60006134b060208361306b565b91506134bb8261347a565b602082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b7f43616e206f6e6c792073746172742072657761726473206f6e63650000000000600082015250565b600061351c601b8361306b565b9150613527826134e6565b602082019050919050565b6000602082019050818103600083015261354b8161350f565b9050919050565b7f415052206d7573742062652062656c6f77203130302500000000000000000000600082015250565b600061358860168361306b565b915061359382613552565b602082019050919050565b600060208201905081810360008301526135b78161357b565b9050919050565b7f4d6179206e6f742073657420686967686572207468616e203235250000000000600082015250565b60006135f4601b8361306b565b91506135ff826135be565b602082019050919050565b60006020820190508181036000830152613623816135e7565b9050919050565b600061363582612c7b565b915061364083612c7b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561367957613678613215565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136be82612c7b565b91506136c983612c7b565b9250826136d9576136d8613684565b5b828204905092915050565b7f43616e6e6f74206465706f73697420746f6b656e7320756e6c657373206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b600061374060228361306b565b915061374b826136e4565b604082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b7f4c6f636b206d757374206265203336352064617973206f72206c6573732e0000600082015250565b60006137ac601e8361306b565b91506137b782613776565b602082019050919050565b600060208201905081810360008301526137db8161379f565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061383e60218361306b565b9150613849826137e2565b604082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b60006040820190506138896000830185612ff4565b6138966020830184612c85565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006138d3601b8361306b565b91506138de8261389d565b602082019050919050565b60006020820190508181036000830152613902816138c6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061396560268361306b565b915061397082613909565b604082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b600081519050919050565b60005b838110156139c45780820151818401526020810190506139a9565b60008484015250505050565b6000601f19601f8301169050919050565b60006139ec8261399b565b6139f6818561306b565b9350613a068185602086016139a6565b613a0f816139d0565b840191505092915050565b60006020820190508181036000830152613a3481846139e1565b905092915050565b60008115159050919050565b613a5181613a3c565b8114613a5c57600080fd5b50565b600081519050613a6e81613a48565b92915050565b600060208284031215613a8a57613a89612caf565b5b6000613a9884828501613a5f565b91505092915050565b7f5361666542455032303a204245503230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613afd602a8361306b565b9150613b0882613aa1565b604082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613b69601d8361306b565b9150613b7482613b33565b602082019050919050565b60006020820190508181036000830152613b9881613b5c565b9050919050565b600081519050919050565b600081905092915050565b6000613bc082613b9f565b613bca8185613baa565b9350613bda8185602086016139a6565b80840191505092915050565b6000613bf28284613bb5565b91508190509291505056fea264697066735822122002f0ab0a9bd61f43ffa02ba0bdb7c5ab779e9148c84f5622c01bc8f8c1474e0c64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000019
-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0x33B6d77c607ea499ab5DB7e2201C5A516a78a5db
Arg [1] : _apr (uint256): 30
Arg [2] : _lockDurationInDays (uint256): 360
Arg [3] : _exitPenaltyPerc (uint256): 25
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000033b6d77c607ea499ab5db7e2201c5a516a78a5db
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000168
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000019
Deployed Bytecode Sourcemap
24689:11239:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25668:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25772:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;25854:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;29920:1348;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34633:256;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32594:1154;;;:::i;:::-;;25643:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28720:190;;;:::i;:::-;;2810:140;;;:::i;:::-;;25464:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26962:207;;;:::i;:::-;;35214:133;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25702:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26863:91;;;:::i;:::-;;25610:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35355:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2168:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35733:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34897:309;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25549:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28947:924;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31324:1214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35531:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33819:665;;;:::i;:::-;;3105:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27234:727;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25507:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25668:27;;;;:::o;25772:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25854:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29920:1348::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30093:7:::1;;:14;;30074:8;;:15;;:33;:73;;;;;30129:11;;:18;;30111:7;;:14;;:36;30074:73;30066:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;30178:13;30189:1;30178:10;:13::i;:::-;30206:9;30202:953;30225:8;;:15;;30221:1;:19;30202:953;;;30293:11;;30305:1;30293:14;;;;;;;:::i;:::-;;;;;;;;30261:16;:29;30278:8;;30287:1;30278:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30261:29;;;;;;;;;;;;;;;:46;;;;30322:21;30346:8;30355:1;30346:11;;;;;;;;:::i;:::-;;;;;;;;;;;;30322:35;;30372:21;30396:8;:21;30405:8;;30414:1;30405:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30396:21;;;;;;;;;;;;;;;30372:45;;30452:1;30438:4;:11;;;:15;30434:405;;;30474:15;30492:70;30546:4;:15;;;30492:49;30536:4;30492:39;30508:4;:22;;;30492:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;:53;;:70;;;;:::i;:::-;30474:88;;30594:1;30584:7;:11;30581:243;;;30639:18;:16;:18::i;:::-;30628:7;:29;;30620:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;30749:55;30782:8;;30791:1;30782:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;30796:7;30749:11;:24;;;;:55;;;;;:::i;:::-;30581:243;30455:384;30434:405;30871:1;30858:7;;30866:1;30858:10;;;;;;;:::i;:::-;;;;;;;;:14;30855:139;;;30907:27;30923:7;;30931:1;30923:10;;;;;;;:::i;:::-;;;;;;;;30907:4;:11;;;:15;;:27;;;;:::i;:::-;30893:4;:11;;:41;;;;30968:7;;30976:1;30968:10;;;;;;;:::i;:::-;;;;;;;;30953:11;;:25;;;;;;;:::i;:::-;;;;;;;;30855:139;31040:49;31084:4;31040:39;31056:4;:22;;;31040:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;31022:4;:15;;:67;;;;31119:8;;31128:1;31119:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31111:32;;;31132:7;;31140:1;31132:10;;;;;;;:::i;:::-;;;;;;;;31111:32;;;;;;:::i;:::-;;;;;;;;30246:909;;30242:3;;;;;:::i;:::-;;;;30202:953;;;;31216:11;;31175:12;:22;;;31206:4;31175:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;31167:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;29920:1348:::0;;;;;;:::o;34633:256::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34771:11:::1;;34732;:21;;;34762:4;34732:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;:::i;:::-;34721:7;:61;;34713:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;34827:54;34860:10;34873:7;34827:11;:24;;;;:54;;;;;:::i;:::-;34633:256:::0;:::o;32594:1154::-;23742:1;24340:7;;:19;24332:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23742:1;24473:7;:18;;;;32689:15:::1;32657:16;:28;32674:10;32657:28;;;;;;;;;;;;;;;;:47;;32649:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;32762:21;32786:8;32795:1;32786:11;;;;;;;;:::i;:::-;;;;;;;;;;;;32762:35;;32808:21;32832:8;:20;32841:10;32832:20;;;;;;;;;;;;;;;32808:44;;32865:15;32883:4;:11;;;32865:29;;32905:13;32916:1;32905:10;:13::i;:::-;32929:15;32947:70;33001:4;:15;;;32947:49;32991:4;32947:39;32963:4;:22;;;32947:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;:53;;:70;;;;:::i;:::-;32929:88;;33041:1;33031:7;:11;33028:217;;;33077:18;:16;:18::i;:::-;33066:7;:29;;33058:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;33179:54;33212:10;33225:7;33179:11;:24;;;;:54;;;;;:::i;:::-;33028:217;33270:1;33260:7;:11;33257:165;;;33302:1;33288:4;:11;;:15;;;;33333:7;33318:11;;:22;;;;;;;:::i;:::-;;;;;;;;33355:55;33389:10;33402:7;33355:4;:12;;;;;;;;;;;;:25;;;;:55;;;;;:::i;:::-;33257:165;33452:49;33496:4;33452:39;33468:4;:22;;;33452:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;33434:4;:15;;:67;;;;33539:1;33525:4;:11;;;:15;33522:172;;;33605:12;;33587:15;:30;;;;:::i;:::-;33556:16;:28;33573:10;33556:28;;;;;;;;;;;;;;;:61;;;;33522:172;;;33681:1;33650:16;:28;33667:10;33650:28;;;;;;;;;;;;;;;:32;;;;33522:172;33720:10;33711:29;;;33732:7;33711:29;;;;;;:::i;:::-;;;;;;;;32636:1112;;;;23698:1:::0;24652:7;:22;;;;32594:1154::o;25643:18::-;;;;:::o;28720:190::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28775:14:::1;28792:8;:15;;;;28775:32;;28823:11;28818:85;28846:6;28840:3;:12;28818:85;;;28876:15;28887:3;28876:10;:15::i;:::-;28854:5;;;;:::i;:::-;;;28818:85;;;;28764:146;28720:190::o:0;2810:140::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2909:1:::1;2872:40;;2893:6;::::0;::::1;;;;;;;;2872:40;;;;;;;;;;;;2940:1;2923:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2810:140::o:0;25464:36::-;;;:::o;26962:207::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27058:11:::1;27023:8;27032:1;27023:11;;;;;;;;:::i;:::-;;;;;;;;;;;;:31;;;:46;27015:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;27146:15;27112:8;27121:1;27112:11;;;;;;;;:::i;:::-;;;;;;;;;;;;:31;;:49;;;;26962:207::o:0;35214:133::-;35263:7;35328:11;;35289;:21;;;35319:4;35289:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;:::i;:::-;35282:57;;35214:133;:::o;25702:30::-;;;;:::o;26863:91::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26915:13:::1;26926:1;26915:10;:13::i;:::-;26945:1;26939:3;:7;;;;26863:91::o:0;25610:26::-;;;;:::o;35355:168::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35438:3:::1;35428:6;:13;;35420:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;35479:13;35490:1;35479:10;:13::i;:::-;35509:6;35503:3;:12;;;;35355:168:::0;:::o;2168:79::-;2206:7;2233:6;;;;;;;;;;;2226:13;;2168:79;:::o;35733:192::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35840:2:::1;35822:14;:20;;35814:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35903:14;35885:15;:32;;;;35733:192:::0;:::o;34897:309::-;34949:7;34969:21;34993:8;35002:1;34993:11;;;;;;;;:::i;:::-;;;;;;;;;;;;34969:35;;35045:15;35018:4;:24;;;:42;35015:81;;;35083:1;35076:8;;;;;35015:81;35189:8;35183:3;35177;;35162:11;;35134:4;:24;;;35116:15;:42;;;;:::i;:::-;35115:58;;;;:::i;:::-;35114:66;;;;:::i;:::-;:72;;;;:::i;:::-;:83;;;;:::i;:::-;35106:92;;;34897:309;;:::o;25549:52::-;;;;;;;;;;;;;;;;;:::o;28947:924::-;23742:1;24340:7;;:19;24332:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23742:1;24473:7;:18;;;;29033:1:::1;29022:7;:12;29014:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;29121:1;29089:16;:28;29106:10;29089:28;;;;;;;;;;;;;;;;:33:::0;29086:125:::1;;29187:12;;29169:15;:30;;;;:::i;:::-;29138:16;:28;29155:10;29138:28;;;;;;;;;;;;;;;:61;;;;29086:125;29221:21;29245:8;29254:1;29245:11;;;;;;;;:::i;:::-;;;;;;;;;;;;29221:35;;29267:21;29291:8;:20;29300:10;29291:20;;;;;;;;;;;;;;;29267:44;;29326:13;29337:1;29326:10;:13::i;:::-;29368:1;29354:4;:11;;;:15;29350:380;;;29386:15;29404:70;29458:4;:15;;;29404:49;29448:4;29404:39;29420:4;:22;;;29404:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;:53;;:70;;;;:::i;:::-;29386:88;;29502:1;29492:7;:11;29489:230;;;29543:18;:16;:18::i;:::-;29532:7;:29;;29524:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29649:54;29682:10;29695:7;29649:11;:24;;;;:54;;;;;:::i;:::-;29489:230;29371:359;29350:380;29768:49;29812:4;29768:39;29784:4;:22;;;29768:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;29750:4;:15;;:67;;;;29843:10;29835:28;;;29855:7;29835:28;;;;;;:::i;:::-;;;;;;;;29003:868;;23698:1:::0;24652:7;:22;;;;28947:924;:::o;31324:1214::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31416:13:::1;31427:1;31416:10;:13::i;:::-;31444:9;31440:1091;31463:8;;:15;;31459:1;:19;31440:1091;;;31540:15;31507:16;:29;31524:8;;31533:1;31524:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31507:29;;;;;;;;;;;;;;;;:48;;31499:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;31621:21;31645:8;31654:1;31645:11;;;;;;;;:::i;:::-;;;;;;;;;;;;31621:35;;31671:21;31695:8;:21;31704:8;;31713:1;31704:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31695:21;;;;;;;;;;;;;;;31671:45;;31733:15;31751:4;:11;;;31733:29;;31791:15;31809:70;31863:4;:15;;;31809:49;31853:4;31809:39;31825:4;:22;;;31809:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;:53;;:70;;;;:::i;:::-;31791:88;;31907:1;31897:7;:11;31894:230;;;31947:18;:16;:18::i;:::-;31936:7;:29;;31928:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;32053:55;32086:8;;32095:1;32086:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;32100:7;32053:11;:24;;;;:55;;;;;:::i;:::-;31894:230;32153:1;32143:7;:11;32140:182;;;32189:1;32175:4;:11;;:15;;;;32224:7;32209:11;;:22;;;;;;;:::i;:::-;;;;;;;;32250:56;32284:8;;32293:1;32284:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;32298:7;32250:4;:12;;;;;;;;;;;;:25;;;;:56;;;;;:::i;:::-;32140:182;32356:49;32400:4;32356:39;32372:4;:22;;;32356:4;:11;;;:15;;:39;;;;:::i;:::-;:43;;:49;;;;:::i;:::-;32338:4;:15;;:67;;;;32466:1;32434:16;:29;32451:8;;32460:1;32451:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;32434:29;;;;;;;;;;;;;;;:33;;;;32498:8;;32507:1;32498:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;32489:30;;;32511:7;32489:30;;;;;;:::i;:::-;;;;;;;;31484:1047;;;;31480:3;;;;;:::i;:::-;;;;31440:1091;;;;31324:1214:::0;;:::o;35531:194::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35633:3:::1;35618:11;:18;;35610:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35711:6;35697:11;:20;;;;:::i;:::-;35682:12;:35;;;;35531:194:::0;:::o;33819:665::-;23742:1;24340:7;;:19;24332:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23742:1;24473:7;:18;;;;33881:21:::1;33905:8;33914:1;33905:11;;;;;;;;:::i;:::-;;;;;;;;;;;;33881:35;;33927:21;33951:8;:20;33960:10;33951:20;;;;;;;;;;;;;;;33927:44;;33982:15;34000:4;:11;;;33982:29;;34037:7;34022:11;;:22;;;;;;;:::i;:::-;;;;;;;;34173:15;34141:16;:28;34158:10;34141:28;;;;;;;;;;;;;;;;:47;34138:120;;34243:3;34225:15;;34215:7;:25;;;;:::i;:::-;:31;;;;:::i;:::-;34204:42;;;;;:::i;:::-;;;34138:120;34299:1;34268:16;:28;34285:10;34268:28;;;;;;;;;;;;;;;:32;;;;34311:55;34345:10;34358:7;34311:4;:12;;;;;;;;;;;;:25;;;;:55;;;;;:::i;:::-;34391:1;34377:4;:11;;:15;;;;34421:1;34403:4;:15;;:19;;;;34456:10;34438:38;;;34468:7;34438:38;;;;;;:::i;:::-;;;;;;;;33870:614;;;23698:1:::0;24652:7;:22;;;;33819:665::o;3105:109::-;2390:12;:10;:12::i;:::-;2380:22;;:6;;;;;;;;;;:22;;;2372:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3178:28:::1;3197:8;3178:18;:28::i;:::-;3105:109:::0;:::o;27234:727::-;27295:7;27315:21;27339:8;27348:1;27339:11;;;;;;;;:::i;:::-;;;;;;;;;;;;27315:35;;27361:21;27385:8;:15;27394:5;27385:15;;;;;;;;;;;;;;;27361:39;;27442:11;27414:4;:24;;;:39;27411:78;;27476:1;27469:8;;;;;;27411:78;27499:25;27527:4;:22;;;27499:50;;27560:16;27579:11;;27560:30;;27623:4;:24;;;27605:15;:42;:59;;;;;27663:1;27651:8;:13;;27605:59;27601:270;;;27681:19;27703:63;27750:15;;27703:42;27729:4;:15;;;27703:21;:19;:21::i;:::-;:25;;:42;;;;:::i;:::-;:46;;:63;;;;:::i;:::-;27681:85;;27801:58;27823:35;27849:8;27823:21;27839:4;27823:11;:15;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;27801:17;:21;;:58;;;;:::i;:::-;27781:78;;27666:205;27601:270;27888:65;27937:4;:15;;;27888:44;27927:4;27888:34;27904:17;27888:4;:11;;;:15;;:34;;;;:::i;:::-;:38;;:44;;;;:::i;:::-;:48;;:65;;;;:::i;:::-;27881:72;;;;;;27234:727;;;;:::o;25507:35::-;;;:::o;823:107::-;868:15;911:10;896:26;;823:107;:::o;28037:600::-;28091:21;28115:8;28124:4;28115:14;;;;;;;;:::i;:::-;;;;;;;;;;;;28091:38;;28163:4;:24;;;28144:15;:43;28140:82;;28204:7;;;28140:82;28232:16;28251:11;;28232:30;;28289:1;28277:8;:13;28273:109;;28334:15;28307:4;:24;;:42;;;;28364:7;;;;28273:109;28392:19;28414:63;28461:15;;28414:42;28440:4;:15;;;28414:21;:19;:21::i;:::-;:25;;:42;;;;:::i;:::-;:46;;:63;;;;:::i;:::-;28392:85;;28513:63;28540:35;28566:8;28540:21;28556:4;28540:11;:15;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;28513:4;:22;;;:26;;:63;;;;:::i;:::-;28488:4;:22;;:88;;;;28614:15;28587:4;:24;;:42;;;;28080:557;;;28037:600;;:::o;5784:471::-;5842:7;6092:1;6087;:6;6083:47;;6117:1;6110:8;;;;6083:47;6142:9;6158:1;6154;:5;;;;:::i;:::-;6142:17;;6187:1;6182;6178;:5;;;;:::i;:::-;:10;6170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6246:1;6239:8;;;5784:471;;;;;:::o;6731:132::-;6789:7;6816:39;6820:1;6823;6816:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6809:46;;6731:132;;;;:::o;4860:136::-;4918:7;4945:43;4949:1;4952;4945:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4938:50;;4860:136;;;;:::o;13209:211::-;13326:86;13346:5;13376:23;;;13401:2;13405:5;13353:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13326:19;:86::i;:::-;13209:211;;;:::o;4396:181::-;4454:7;4474:9;4490:1;4486;:5;;;;:::i;:::-;4474:17;;4515:1;4510;:6;;4502:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4568:1;4561:8;;;4396:181;;;;:::o;3320:229::-;3414:1;3394:22;;:8;:22;;;3386:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3504:8;3475:38;;3496:6;;;;;;;;;;3475:38;;;;;;;;;;;;3533:8;3524:6;;:17;;;;;;;;;;;;;;;;;;3320:229;:::o;7359:312::-;7479:7;7511:1;7507;:5;7514:12;7499:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7538:9;7554:1;7550;:5;;;;:::i;:::-;7538:17;;7662:1;7655:8;;;7359:312;;;;;:::o;5299:226::-;5419:7;5452:1;5447;:6;;5455:12;5439:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5479:9;5495:1;5491;:5;;;;:::i;:::-;5479:17;;5516:1;5509:8;;;5299:226;;;;;:::o;15744:774::-;16168:23;16194:69;16222:4;16194:69;;;;;;;;;;;;;;;;;16202:5;16194:27;;;;:69;;;;;:::i;:::-;16168:95;;16298:1;16278:10;:17;:21;16274:237;;;16433:10;16422:30;;;;;;;;;;;;:::i;:::-;16414:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16274:237;15814:704;15744:774;;:::o;20343:230::-;20480:12;20512:53;20535:6;20543:4;20549:1;20552:12;20512:22;:53::i;:::-;20505:60;;20343:230;;;;;:::o;21831:1020::-;22004:12;22037:18;22048:6;22037:10;:18::i;:::-;22029:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22163:12;22177:23;22204:6;:11;;22223:8;22233:4;22204:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22162:76;;;;22253:7;22249:595;;;22284:10;22277:17;;;;;;22249:595;22418:1;22398:10;:17;:21;22394:439;;;22661:10;22655:17;22722:15;22709:10;22705:2;22701:19;22694:44;22394:439;22804:12;22797:20;;;;;;;;;;;:::i;:::-;;;;;;;;21831:1020;;;;;;;:::o;17206:641::-;17266:4;17528:16;17555:19;17577:66;17555:88;;;;17759:7;17747:20;17735:32;;17808:11;17796:8;:23;;:42;;;;;17835:3;17823:15;;:8;:15;;17796:42;17788:51;;;;17206:641;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:60::-;1537:3;1558:5;1551:12;;1509:60;;;:::o;1575:142::-;1625:9;1658:53;1676:34;1685:24;1703:5;1685:24;:::i;:::-;1676:34;:::i;:::-;1658:53;:::i;:::-;1645:66;;1575:142;;;:::o;1723:126::-;1773:9;1806:37;1837:5;1806:37;:::i;:::-;1793:50;;1723:126;;;:::o;1855:140::-;1919:9;1952:37;1983:5;1952:37;:::i;:::-;1939:50;;1855:140;;;:::o;2001:159::-;2102:51;2147:5;2102:51;:::i;:::-;2097:3;2090:64;2001:159;;:::o;2166:581::-;2357:4;2395:3;2384:9;2380:19;2372:27;;2409:85;2491:1;2480:9;2476:17;2467:6;2409:85;:::i;:::-;2504:72;2572:2;2561:9;2557:18;2548:6;2504:72;:::i;:::-;2586;2654:2;2643:9;2639:18;2630:6;2586:72;:::i;:::-;2668;2736:2;2725:9;2721:18;2712:6;2668:72;:::i;:::-;2166:581;;;;;;;:::o;2753:96::-;2790:7;2819:24;2837:5;2819:24;:::i;:::-;2808:35;;2753:96;;;:::o;2855:122::-;2928:24;2946:5;2928:24;:::i;:::-;2921:5;2918:35;2908:63;;2967:1;2964;2957:12;2908:63;2855:122;:::o;2983:139::-;3029:5;3067:6;3054:20;3045:29;;3083:33;3110:5;3083:33;:::i;:::-;2983:139;;;;:::o;3128:329::-;3187:6;3236:2;3224:9;3215:7;3211:23;3207:32;3204:119;;;3242:79;;:::i;:::-;3204:119;3362:1;3387:53;3432:7;3423:6;3412:9;3408:22;3387:53;:::i;:::-;3377:63;;3333:117;3128:329;;;;:::o;3463:332::-;3584:4;3622:2;3611:9;3607:18;3599:26;;3635:71;3703:1;3692:9;3688:17;3679:6;3635:71;:::i;:::-;3716:72;3784:2;3773:9;3769:18;3760:6;3716:72;:::i;:::-;3463:332;;;;;:::o;3801:117::-;3910:1;3907;3900:12;3924:117;4033:1;4030;4023:12;4047:117;4156:1;4153;4146:12;4187:568;4260:8;4270:6;4320:3;4313:4;4305:6;4301:17;4297:27;4287:122;;4328:79;;:::i;:::-;4287:122;4441:6;4428:20;4418:30;;4471:18;4463:6;4460:30;4457:117;;;4493:79;;:::i;:::-;4457:117;4607:4;4599:6;4595:17;4583:29;;4661:3;4653:4;4645:6;4641:17;4631:8;4627:32;4624:41;4621:128;;;4668:79;;:::i;:::-;4621:128;4187:568;;;;;:::o;4778:::-;4851:8;4861:6;4911:3;4904:4;4896:6;4892:17;4888:27;4878:122;;4919:79;;:::i;:::-;4878:122;5032:6;5019:20;5009:30;;5062:18;5054:6;5051:30;5048:117;;;5084:79;;:::i;:::-;5048:117;5198:4;5190:6;5186:17;5174:29;;5252:3;5244:4;5236:6;5232:17;5222:8;5218:32;5215:41;5212:128;;;5259:79;;:::i;:::-;5212:128;4778:568;;;;;:::o;5352:1309::-;5510:6;5518;5526;5534;5542;5550;5599:2;5587:9;5578:7;5574:23;5570:32;5567:119;;;5605:79;;:::i;:::-;5567:119;5753:1;5742:9;5738:17;5725:31;5783:18;5775:6;5772:30;5769:117;;;5805:79;;:::i;:::-;5769:117;5918:80;5990:7;5981:6;5970:9;5966:22;5918:80;:::i;:::-;5900:98;;;;5696:312;6075:2;6064:9;6060:18;6047:32;6106:18;6098:6;6095:30;6092:117;;;6128:79;;:::i;:::-;6092:117;6241:80;6313:7;6304:6;6293:9;6289:22;6241:80;:::i;:::-;6223:98;;;;6018:313;6398:2;6387:9;6383:18;6370:32;6429:18;6421:6;6418:30;6415:117;;;6451:79;;:::i;:::-;6415:117;6564:80;6636:7;6627:6;6616:9;6612:22;6564:80;:::i;:::-;6546:98;;;;6341:313;5352:1309;;;;;;;;:::o;6667:250::-;6774:4;6812:2;6801:9;6797:18;6789:26;;6825:85;6907:1;6896:9;6892:17;6883:6;6825:85;:::i;:::-;6667:250;;;;:::o;6923:118::-;7010:24;7028:5;7010:24;:::i;:::-;7005:3;6998:37;6923:118;;:::o;7047:222::-;7140:4;7178:2;7167:9;7163:18;7155:26;;7191:71;7259:1;7248:9;7244:17;7235:6;7191:71;:::i;:::-;7047:222;;;;:::o;7275:559::-;7361:6;7369;7418:2;7406:9;7397:7;7393:23;7389:32;7386:119;;;7424:79;;:::i;:::-;7386:119;7572:1;7561:9;7557:17;7544:31;7602:18;7594:6;7591:30;7588:117;;;7624:79;;:::i;:::-;7588:117;7737:80;7809:7;7800:6;7789:9;7785:22;7737:80;:::i;:::-;7719:98;;;;7515:312;7275:559;;;;;:::o;7840:169::-;7924:11;7958:6;7953:3;7946:19;7998:4;7993:3;7989:14;7974:29;;7840:169;;;;:::o;8015:182::-;8155:34;8151:1;8143:6;8139:14;8132:58;8015:182;:::o;8203:366::-;8345:3;8366:67;8430:2;8425:3;8366:67;:::i;:::-;8359:74;;8442:93;8531:3;8442:93;:::i;:::-;8560:2;8555:3;8551:12;8544:19;;8203:366;;;:::o;8575:419::-;8741:4;8779:2;8768:9;8764:18;8756:26;;8828:9;8822:4;8818:20;8814:1;8803:9;8799:17;8792:47;8856:131;8982:4;8856:131;:::i;:::-;8848:139;;8575:419;;;:::o;9000:165::-;9140:17;9136:1;9128:6;9124:14;9117:41;9000:165;:::o;9171:366::-;9313:3;9334:67;9398:2;9393:3;9334:67;:::i;:::-;9327:74;;9410:93;9499:3;9410:93;:::i;:::-;9528:2;9523:3;9519:12;9512:19;;9171:366;;;:::o;9543:419::-;9709:4;9747:2;9736:9;9732:18;9724:26;;9796:9;9790:4;9786:20;9782:1;9771:9;9767:17;9760:47;9824:131;9950:4;9824:131;:::i;:::-;9816:139;;9543:419;;;:::o;9968:180::-;10016:77;10013:1;10006:88;10113:4;10110:1;10103:15;10137:4;10134:1;10127:15;10154:251;10294:34;10290:1;10282:6;10278:14;10271:58;10363:34;10358:2;10350:6;10346:15;10339:59;10154:251;:::o;10411:366::-;10553:3;10574:67;10638:2;10633:3;10574:67;:::i;:::-;10567:74;;10650:93;10739:3;10650:93;:::i;:::-;10768:2;10763:3;10759:12;10752:19;;10411:366;;;:::o;10783:419::-;10949:4;10987:2;10976:9;10972:18;10964:26;;11036:9;11030:4;11026:20;11022:1;11011:9;11007:17;11000:47;11064:131;11190:4;11064:131;:::i;:::-;11056:139;;10783:419;;;:::o;11208:180::-;11256:77;11253:1;11246:88;11353:4;11350:1;11343:15;11377:4;11374:1;11367:15;11394:191;11434:3;11453:20;11471:1;11453:20;:::i;:::-;11448:25;;11487:20;11505:1;11487:20;:::i;:::-;11482:25;;11530:1;11527;11523:9;11516:16;;11551:3;11548:1;11545:10;11542:36;;;11558:18;;:::i;:::-;11542:36;11394:191;;;;:::o;11591:233::-;11630:3;11653:24;11671:5;11653:24;:::i;:::-;11644:33;;11699:66;11692:5;11689:77;11686:103;;11769:18;;:::i;:::-;11686:103;11816:1;11809:5;11805:13;11798:20;;11591:233;;;:::o;11830:143::-;11887:5;11918:6;11912:13;11903:22;;11934:33;11961:5;11934:33;:::i;:::-;11830:143;;;;:::o;11979:351::-;12049:6;12098:2;12086:9;12077:7;12073:23;12069:32;12066:119;;;12104:79;;:::i;:::-;12066:119;12224:1;12249:64;12305:7;12296:6;12285:9;12281:22;12249:64;:::i;:::-;12239:74;;12195:128;11979:351;;;;:::o;12336:178::-;12476:30;12472:1;12464:6;12460:14;12453:54;12336:178;:::o;12520:366::-;12662:3;12683:67;12747:2;12742:3;12683:67;:::i;:::-;12676:74;;12759:93;12848:3;12759:93;:::i;:::-;12877:2;12872:3;12868:12;12861:19;;12520:366;;;:::o;12892:419::-;13058:4;13096:2;13085:9;13081:18;13073:26;;13145:9;13139:4;13135:20;13131:1;13120:9;13116:17;13109:47;13173:131;13299:4;13173:131;:::i;:::-;13165:139;;12892:419;;;:::o;13317:194::-;13357:4;13377:20;13395:1;13377:20;:::i;:::-;13372:25;;13411:20;13429:1;13411:20;:::i;:::-;13406:25;;13455:1;13452;13448:9;13440:17;;13479:1;13473:4;13470:11;13467:37;;;13484:18;;:::i;:::-;13467:37;13317:194;;;;:::o;13517:179::-;13657:31;13653:1;13645:6;13641:14;13634:55;13517:179;:::o;13702:366::-;13844:3;13865:67;13929:2;13924:3;13865:67;:::i;:::-;13858:74;;13941:93;14030:3;13941:93;:::i;:::-;14059:2;14054:3;14050:12;14043:19;;13702:366;;;:::o;14074:419::-;14240:4;14278:2;14267:9;14263:18;14255:26;;14327:9;14321:4;14317:20;14313:1;14302:9;14298:17;14291:47;14355:131;14481:4;14355:131;:::i;:::-;14347:139;;14074:419;;;:::o;14499:181::-;14639:33;14635:1;14627:6;14623:14;14616:57;14499:181;:::o;14686:366::-;14828:3;14849:67;14913:2;14908:3;14849:67;:::i;:::-;14842:74;;14925:93;15014:3;14925:93;:::i;:::-;15043:2;15038:3;15034:12;15027:19;;14686:366;;;:::o;15058:419::-;15224:4;15262:2;15251:9;15247:18;15239:26;;15311:9;15305:4;15301:20;15297:1;15286:9;15282:17;15275:47;15339:131;15465:4;15339:131;:::i;:::-;15331:139;;15058:419;;;:::o;15483:182::-;15623:34;15619:1;15611:6;15607:14;15600:58;15483:182;:::o;15671:366::-;15813:3;15834:67;15898:2;15893:3;15834:67;:::i;:::-;15827:74;;15910:93;15999:3;15910:93;:::i;:::-;16028:2;16023:3;16019:12;16012:19;;15671:366;;;:::o;16043:419::-;16209:4;16247:2;16236:9;16232:18;16224:26;;16296:9;16290:4;16286:20;16282:1;16271:9;16267:17;16260:47;16324:131;16450:4;16324:131;:::i;:::-;16316:139;;16043:419;;;:::o;16468:177::-;16608:29;16604:1;16596:6;16592:14;16585:53;16468:177;:::o;16651:366::-;16793:3;16814:67;16878:2;16873:3;16814:67;:::i;:::-;16807:74;;16890:93;16979:3;16890:93;:::i;:::-;17008:2;17003:3;16999:12;16992:19;;16651:366;;;:::o;17023:419::-;17189:4;17227:2;17216:9;17212:18;17204:26;;17276:9;17270:4;17266:20;17262:1;17251:9;17247:17;17240:47;17304:131;17430:4;17304:131;:::i;:::-;17296:139;;17023:419;;;:::o;17448:172::-;17588:24;17584:1;17576:6;17572:14;17565:48;17448:172;:::o;17626:366::-;17768:3;17789:67;17853:2;17848:3;17789:67;:::i;:::-;17782:74;;17865:93;17954:3;17865:93;:::i;:::-;17983:2;17978:3;17974:12;17967:19;;17626:366;;;:::o;17998:419::-;18164:4;18202:2;18191:9;18187:18;18179:26;;18251:9;18245:4;18241:20;18237:1;18226:9;18222:17;18215:47;18279:131;18405:4;18279:131;:::i;:::-;18271:139;;17998:419;;;:::o;18423:177::-;18563:29;18559:1;18551:6;18547:14;18540:53;18423:177;:::o;18606:366::-;18748:3;18769:67;18833:2;18828:3;18769:67;:::i;:::-;18762:74;;18845:93;18934:3;18845:93;:::i;:::-;18963:2;18958:3;18954:12;18947:19;;18606:366;;;:::o;18978:419::-;19144:4;19182:2;19171:9;19167:18;19159:26;;19231:9;19225:4;19221:20;19217:1;19206:9;19202:17;19195:47;19259:131;19385:4;19259:131;:::i;:::-;19251:139;;18978:419;;;:::o;19403:348::-;19443:7;19466:20;19484:1;19466:20;:::i;:::-;19461:25;;19500:20;19518:1;19500:20;:::i;:::-;19495:25;;19688:1;19620:66;19616:74;19613:1;19610:81;19605:1;19598:9;19591:17;19587:105;19584:131;;;19695:18;;:::i;:::-;19584:131;19743:1;19740;19736:9;19725:20;;19403:348;;;;:::o;19757:180::-;19805:77;19802:1;19795:88;19902:4;19899:1;19892:15;19926:4;19923:1;19916:15;19943:185;19983:1;20000:20;20018:1;20000:20;:::i;:::-;19995:25;;20034:20;20052:1;20034:20;:::i;:::-;20029:25;;20073:1;20063:35;;20078:18;;:::i;:::-;20063:35;20120:1;20117;20113:9;20108:14;;19943:185;;;;:::o;20134:221::-;20274:34;20270:1;20262:6;20258:14;20251:58;20343:4;20338:2;20330:6;20326:15;20319:29;20134:221;:::o;20361:366::-;20503:3;20524:67;20588:2;20583:3;20524:67;:::i;:::-;20517:74;;20600:93;20689:3;20600:93;:::i;:::-;20718:2;20713:3;20709:12;20702:19;;20361:366;;;:::o;20733:419::-;20899:4;20937:2;20926:9;20922:18;20914:26;;20986:9;20980:4;20976:20;20972:1;20961:9;20957:17;20950:47;21014:131;21140:4;21014:131;:::i;:::-;21006:139;;20733:419;;;:::o;21158:180::-;21298:32;21294:1;21286:6;21282:14;21275:56;21158:180;:::o;21344:366::-;21486:3;21507:67;21571:2;21566:3;21507:67;:::i;:::-;21500:74;;21583:93;21672:3;21583:93;:::i;:::-;21701:2;21696:3;21692:12;21685:19;;21344:366;;;:::o;21716:419::-;21882:4;21920:2;21909:9;21905:18;21897:26;;21969:9;21963:4;21959:20;21955:1;21944:9;21940:17;21933:47;21997:131;22123:4;21997:131;:::i;:::-;21989:139;;21716:419;;;:::o;22141:220::-;22281:34;22277:1;22269:6;22265:14;22258:58;22350:3;22345:2;22337:6;22333:15;22326:28;22141:220;:::o;22367:366::-;22509:3;22530:67;22594:2;22589:3;22530:67;:::i;:::-;22523:74;;22606:93;22695:3;22606:93;:::i;:::-;22724:2;22719:3;22715:12;22708:19;;22367:366;;;:::o;22739:419::-;22905:4;22943:2;22932:9;22928:18;22920:26;;22992:9;22986:4;22982:20;22978:1;22967:9;22963:17;22956:47;23020:131;23146:4;23020:131;:::i;:::-;23012:139;;22739:419;;;:::o;23164:332::-;23285:4;23323:2;23312:9;23308:18;23300:26;;23336:71;23404:1;23393:9;23389:17;23380:6;23336:71;:::i;:::-;23417:72;23485:2;23474:9;23470:18;23461:6;23417:72;:::i;:::-;23164:332;;;;;:::o;23502:177::-;23642:29;23638:1;23630:6;23626:14;23619:53;23502:177;:::o;23685:366::-;23827:3;23848:67;23912:2;23907:3;23848:67;:::i;:::-;23841:74;;23924:93;24013:3;23924:93;:::i;:::-;24042:2;24037:3;24033:12;24026:19;;23685:366;;;:::o;24057:419::-;24223:4;24261:2;24250:9;24246:18;24238:26;;24310:9;24304:4;24300:20;24296:1;24285:9;24281:17;24274:47;24338:131;24464:4;24338:131;:::i;:::-;24330:139;;24057:419;;;:::o;24482:225::-;24622:34;24618:1;24610:6;24606:14;24599:58;24691:8;24686:2;24678:6;24674:15;24667:33;24482:225;:::o;24713:366::-;24855:3;24876:67;24940:2;24935:3;24876:67;:::i;:::-;24869:74;;24952:93;25041:3;24952:93;:::i;:::-;25070:2;25065:3;25061:12;25054:19;;24713:366;;;:::o;25085:419::-;25251:4;25289:2;25278:9;25274:18;25266:26;;25338:9;25332:4;25328:20;25324:1;25313:9;25309:17;25302:47;25366:131;25492:4;25366:131;:::i;:::-;25358:139;;25085:419;;;:::o;25510:99::-;25562:6;25596:5;25590:12;25580:22;;25510:99;;;:::o;25615:246::-;25696:1;25706:113;25720:6;25717:1;25714:13;25706:113;;;25805:1;25800:3;25796:11;25790:18;25786:1;25781:3;25777:11;25770:39;25742:2;25739:1;25735:10;25730:15;;25706:113;;;25853:1;25844:6;25839:3;25835:16;25828:27;25677:184;25615:246;;;:::o;25867:102::-;25908:6;25959:2;25955:7;25950:2;25943:5;25939:14;25935:28;25925:38;;25867:102;;;:::o;25975:377::-;26063:3;26091:39;26124:5;26091:39;:::i;:::-;26146:71;26210:6;26205:3;26146:71;:::i;:::-;26139:78;;26226:65;26284:6;26279:3;26272:4;26265:5;26261:16;26226:65;:::i;:::-;26316:29;26338:6;26316:29;:::i;:::-;26311:3;26307:39;26300:46;;26067:285;25975:377;;;;:::o;26358:313::-;26471:4;26509:2;26498:9;26494:18;26486:26;;26558:9;26552:4;26548:20;26544:1;26533:9;26529:17;26522:47;26586:78;26659:4;26650:6;26586:78;:::i;:::-;26578:86;;26358:313;;;;:::o;26677:90::-;26711:7;26754:5;26747:13;26740:21;26729:32;;26677:90;;;:::o;26773:116::-;26843:21;26858:5;26843:21;:::i;:::-;26836:5;26833:32;26823:60;;26879:1;26876;26869:12;26823:60;26773:116;:::o;26895:137::-;26949:5;26980:6;26974:13;26965:22;;26996:30;27020:5;26996:30;:::i;:::-;26895:137;;;;:::o;27038:345::-;27105:6;27154:2;27142:9;27133:7;27129:23;27125:32;27122:119;;;27160:79;;:::i;:::-;27122:119;27280:1;27305:61;27358:7;27349:6;27338:9;27334:22;27305:61;:::i;:::-;27295:71;;27251:125;27038:345;;;;:::o;27389:229::-;27529:34;27525:1;27517:6;27513:14;27506:58;27598:12;27593:2;27585:6;27581:15;27574:37;27389:229;:::o;27624:366::-;27766:3;27787:67;27851:2;27846:3;27787:67;:::i;:::-;27780:74;;27863:93;27952:3;27863:93;:::i;:::-;27981:2;27976:3;27972:12;27965:19;;27624:366;;;:::o;27996:419::-;28162:4;28200:2;28189:9;28185:18;28177:26;;28249:9;28243:4;28239:20;28235:1;28224:9;28220:17;28213:47;28277:131;28403:4;28277:131;:::i;:::-;28269:139;;27996:419;;;:::o;28421:179::-;28561:31;28557:1;28549:6;28545:14;28538:55;28421:179;:::o;28606:366::-;28748:3;28769:67;28833:2;28828:3;28769:67;:::i;:::-;28762:74;;28845:93;28934:3;28845:93;:::i;:::-;28963:2;28958:3;28954:12;28947:19;;28606:366;;;:::o;28978:419::-;29144:4;29182:2;29171:9;29167:18;29159:26;;29231:9;29225:4;29221:20;29217:1;29206:9;29202:17;29195:47;29259:131;29385:4;29259:131;:::i;:::-;29251:139;;28978:419;;;:::o;29403:98::-;29454:6;29488:5;29482:12;29472:22;;29403:98;;;:::o;29507:147::-;29608:11;29645:3;29630:18;;29507:147;;;;:::o;29660:386::-;29764:3;29792:38;29824:5;29792:38;:::i;:::-;29846:88;29927:6;29922:3;29846:88;:::i;:::-;29839:95;;29943:65;30001:6;29996:3;29989:4;29982:5;29978:16;29943:65;:::i;:::-;30033:6;30028:3;30024:16;30017:23;;29768:278;29660:386;;;;:::o;30052:271::-;30182:3;30204:93;30293:3;30284:6;30204:93;:::i;:::-;30197:100;;30314:3;30307:10;;30052:271;;;;:::o
Swarm Source
ipfs://02f0ab0a9bd61f43ffa02ba0bdb7c5ab779e9148c84f5622c01bc8f8c1474e0c
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.002695 | 7,303,272.3855 | $19,682.39 |
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Note:
Please DO NOT store any passwords or private keys here.
The compiled contract might be susceptible to VerbatimInvalidDeduplication (low-severity), FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity), StorageWriteRemovalBeforeConditionalTermination (medium/high-severity) Solidity Compiler Bugs.
Connect a Wallet
Connect a Wallet
Connect a Wallet
Before You Copy
Transaction Private Note
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.