ETH Price: $2,683.76 (-4.08%)

Token

UASIS METASPACE APPAREL (UMA)
 

Overview

Max Total Supply

1,056 UMA

Holders

102

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
goblinstreet.eth
0x7EB91dAD1fb797EF65887105f0DF3d0ceafb871C
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
UMA

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 14 : UMA.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
contract UMA is ERC1155, Ownable, ERC1155Burnable, ERC1155Supply {
string public constant name = "UASIS METASPACE APPAREL";
string public constant symbol = "UMA";
uint256 public mintIndex;
uint256 public tokensSupply;
address private _signer;
mapping(uint256 => uint256) private _signatureIds;
constructor(
string memory _uri,
address signer
) ERC1155(_uri) {
_signer = signer;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 14 : ERC1155.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/ERC1155.sol)
pragma solidity ^0.8.0;
import "./IERC1155.sol";
import "./IERC1155Receiver.sol";
import "./extensions/IERC1155MetadataURI.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/introspection/ERC165.sol";
/**
* @dev Implementation of the basic standard multi-token.
* See https://eips.ethereum.org/EIPS/eip-1155
* Originally based on code by Enjin: https://github.com/enjin/erc-1155
*
* _Available since v3.1._
*/
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
// Mapping from token ID to account balances
mapping(uint256 => mapping(address => uint256)) private _balances;
// Mapping from account to operator approvals
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 14 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @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.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 14 : ERC1155Burnable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/ERC1155Burnable.sol)
pragma solidity ^0.8.0;
import "../ERC1155.sol";
/**
* @dev Extension of {ERC1155} that allows token holders to destroy both their
* own tokens and those that they have been approved to use.
*
* _Available since v3.1._
*/
abstract contract ERC1155Burnable is ERC1155 {
function burn(
address account,
uint256 id,
uint256 value
) public virtual {
require(
account == _msgSender() || isApprovedForAll(account, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
_burn(account, id, value);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 14 : ERC1155Supply.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol)
pragma solidity ^0.8.0;
import "../ERC1155.sol";
/**
* @dev Extension of ERC1155 that adds tracking of total supply per id.
*
* Useful for scenarios where Fungible and Non-fungible tokens have to be
* clearly identified. Note: While a totalSupply of 1 might mean the
* corresponding is an NFT, there is no guarantees that no other token with the
* same id are not going to be minted.
*/
abstract contract ERC1155Supply is ERC1155 {
mapping(uint256 => uint256) private _totalSupply;
/**
* @dev Total amount of tokens in with a given id.
*/
function totalSupply(uint256 id) public view virtual returns (uint256) {
return _totalSupply[id];
}
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 14 : ECDSA.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/ECDSA.sol)
pragma solidity ^0.8.0;
import "../Strings.sol";
/**
* @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
*
* These functions can be used to verify that a message was signed by the holder
* of the private keys of a given address.
*/
library ECDSA {
enum RecoverError {
NoError,
InvalidSignature,
InvalidSignatureLength,
InvalidSignatureS,
InvalidSignatureV
}
function _throwError(RecoverError error) private pure {
if (error == RecoverError.NoError) {
return; // no error: do nothing
} else if (error == RecoverError.InvalidSignature) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 14 : IERC1155.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*
* _Available since v3.1._
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(
address indexed operator,
address indexed from,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 14 : IERC1155Receiver.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
* @dev Handles the receipt of a single ERC1155 token type. This function is
* called at the end of a `safeTransferFrom` after the balance has been updated.
*
* NOTE: To accept the transfer, this must return
* `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
* (i.e. 0xf23a6e61, or its own function selector).
*
* @param operator The address which initiated the transfer (i.e. msg.sender)
* @param from The address which previously owned the token
* @param id The ID of the token being transferred
* @param value The amount of tokens being transferred
* @param data Additional data with no specified format
* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 14 : IERC1155MetadataURI.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)
pragma solidity ^0.8.0;
import "../IERC1155.sol";
/**
* @dev Interface of the optional ERC1155MetadataExtension interface, as defined
* in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
*
* _Available since v3.1._
*/
interface IERC1155MetadataURI is IERC1155 {
/**
* @dev Returns the URI for token type `id`.
*
* If the `\{id\}` substring is present in the URI, it must be replaced by
* clients with the actual token type ID.
*/
function uri(uint256 id) external view returns (string memory);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 14 : Address.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @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
* ====
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 14 : Context.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 14 : ERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 14 : IERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 14 : Strings.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_uri","type":"string"},{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"signatureId","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"checkMintSignature","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"signatureId","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"setSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","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":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162005530380380620055308339818101604052810190620000379190620002d6565b816200004981620000b360201b60201c565b506200006a6200005e620000cf60201b60201c565b620000d760201b60201c565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620004ee565b8060029080519060200190620000cb9291906200019d565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001ab90620003f9565b90600052602060002090601f016020900481019282620001cf57600085556200021b565b82601f10620001ea57805160ff19168380011785556200021b565b828001600101855582156200021b579182015b828111156200021a578251825591602001919060010190620001fd565b5b5090506200022a91906200022e565b5090565b5b80821115620002495760008160009055506001016200022f565b5090565b6000620002646200025e8462000359565b62000330565b9050828152602081018484840111156200027d57600080fd5b6200028a848285620003c3565b509392505050565b600081519050620002a381620004d4565b92915050565b600082601f830112620002bb57600080fd5b8151620002cd8482602086016200024d565b91505092915050565b60008060408385031215620002ea57600080fd5b600083015167ffffffffffffffff8111156200030557600080fd5b6200031385828601620002a9565b9250506020620003268582860162000292565b9150509250929050565b60006200033c6200034f565b90506200034a82826200042f565b919050565b6000604051905090565b600067ffffffffffffffff82111562000377576200037662000494565b5b6200038282620004c3565b9050602081019050919050565b60006200039c82620003a3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620003e3578082015181840152602081019050620003c6565b83811115620003f3576000848401525b50505050565b600060028204905060018216806200041257607f821691505b6020821081141562000429576200042862000465565b5b50919050565b6200043a82620004c3565b810181811067ffffffffffffffff821117156200045c576200045b62000494565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b620004df816200038f565b8114620004eb57600080fd5b50565b61503280620004fe6000396000f3fe6080604052600436106101655760003560e01c80636c19e783116100d1578063e985e9c51161008a578063f2fde38b11610064578063f2fde38b1461054b578063f5298aca14610574578063f74f9bfd1461059d578063f8ea8f16146105c857610165565b8063e985e9c5146104a8578063f1bd8bba146104e5578063f242432a1461052257610165565b80636c19e783146103ac578063715018a6146103d55780638da5cb5b146103ec57806395d89b4114610417578063a22cb46514610442578063bd85b0391461046b57610165565b80632bdad637116101235780632bdad6371461029e5780632eb2c2d6146102c95780633ccfd60b146102f25780634e1273f4146103095780634f558e79146103465780636b20c4541461038357610165565b8062fdd58e1461016a57806301ffc9a7146101a757806302fe5305146101e457806306fdde031461020d5780630e89341c146102385780631449247d14610275575b600080fd5b34801561017657600080fd5b50610191600480360381019061018c91906136f9565b6105e4565b60405161019e919061440d565b60405180910390f35b3480156101b357600080fd5b506101ce60048036038101906101c99190613891565b6106ad565b6040516101db91906140ab565b60405180910390f35b3480156101f057600080fd5b5061020b600480360381019061020691906138e3565b61078f565b005b34801561021957600080fd5b50610222610817565b60405161022f919061410b565b60405180910390f35b34801561024457600080fd5b5061025f600480360381019061025a9190613924565b610850565b60405161026c919061410b565b60405180910390f35b34801561028157600080fd5b5061029c6004803603810190610297919061394d565b6108e4565b005b3480156102aa57600080fd5b506102b3610a46565b6040516102c0919061440d565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906134f0565b610a4c565b005b3480156102fe57600080fd5b50610307610aed565b005b34801561031557600080fd5b50610330600480360381019061032b9190613825565b610bb2565b60405161033d9190614052565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190613924565b610d63565b60405161037a91906140ab565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a5919061363e565b610d77565b005b3480156103b857600080fd5b506103d360048036038101906103ce919061348b565b610e14565b005b3480156103e157600080fd5b506103ea610ed4565b005b3480156103f857600080fd5b50610401610f5c565b60405161040e9190613f22565b60405180910390f35b34801561042357600080fd5b5061042c610f86565b604051610439919061410b565b60405180910390f35b34801561044e57600080fd5b50610469600480360381019061046491906136bd565b610fbf565b005b34801561047757600080fd5b50610492600480360381019061048d9190613924565b610fd5565b60405161049f919061440d565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca91906134b4565b610ff2565b6040516104dc91906140ab565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613784565b611086565b6040516105199190613f22565b60405180910390f35b34801561052e57600080fd5b50610549600480360381019061054491906135af565b6110d4565b005b34801561055757600080fd5b50610572600480360381019061056d919061348b565b611175565b005b34801561058057600080fd5b5061059b60048036038101906105969190613735565b61126d565b005b3480156105a957600080fd5b506105b261130a565b6040516105bf919061440d565b60405180910390f35b6105e260048036038101906105dd91906139cc565b611310565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064c906141cd565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061077857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107885750610787826114c9565b5b9050919050565b610797611533565b73ffffffffffffffffffffffffffffffffffffffff166107b5610f5c565b73ffffffffffffffffffffffffffffffffffffffff161461080b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108029061434d565b60405180910390fd5b6108148161153b565b50565b6040518060400160405280601781526020017f5541534953204d4554415350414345204150504152454c00000000000000000081525081565b60606002805461085f90614729565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90614729565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b50505050509050919050565b6108ec611533565b73ffffffffffffffffffffffffffffffffffffffff1661090a610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109579061434d565b60405180910390fd5b61096983610d63565b61098657600660008154809291906109809061478c565b91905055505b60005b8251811015610a4057610a2d8382815181106109ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015185848481518110610a10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160405180602001604052806000815250611555565b8080610a389061478c565b915050610989565b50505050565b60065481565b610a54611533565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a9a5750610a9985610a94611533565b610ff2565b5b610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906142cd565b60405180910390fd5b610ae68585858585611706565b5050505050565b610af5611533565b73ffffffffffffffffffffffffffffffffffffffff16610b13610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b609061434d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610baf573d6000803e3d6000fd5b50565b60608151835114610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef906143ad565b60405180910390fd5b6000835167ffffffffffffffff811115610c3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610c695781602001602082028036833780820191505090505b50905060005b8451811015610d5857610d02858281518110610cb4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610cf5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105e4565b828281518110610d3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610d519061478c565b9050610c6f565b508091505092915050565b600080610d6f83610fd5565b119050919050565b610d7f611533565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610dc55750610dc483610dbf611533565b610ff2565b5b610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061422d565b60405180910390fd5b610e0f838383611a74565b505050565b610e1c611533565b73ffffffffffffffffffffffffffffffffffffffff16610e3a610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e879061434d565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610edc611533565b73ffffffffffffffffffffffffffffffffffffffff16610efa610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f479061434d565b60405180910390fd5b610f5a6000611d8f565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f554d41000000000000000000000000000000000000000000000000000000000081525081565b610fd1610fca611533565b8383611e55565b5050565b600060046000838152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006110c86110c288888888886040516020016110a7959493929190613fff565b60405160208183030381529060405280519060200120611fc2565b83611ff2565b90509695505050505050565b6110dc611533565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061112257506111218561111c611533565b610ff2565b5b611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111589061422d565b60405180910390fd5b61116e8585858585612019565b5050505050565b61117d611533565b73ffffffffffffffffffffffffffffffffffffffff1661119b610f5c565b73ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e89061434d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611258906141ed565b60405180910390fd5b61126a81611d8f565b50565b611275611533565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806112bb57506112ba836112b5611533565b610ff2565b5b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f19061422d565b60405180910390fd5b6113058383836122b5565b505050565b60055481565b6000600860008481526020019081526020016000205414611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d9061418d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ad338787878787611086565b73ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa9061428d565b60405180910390fd5b828561140f9190614602565b3414611450576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114479061424d565b60405180910390fd5b600160086000848152602001908152602001600020819055506005600081548092919061147c9061478c565b919050555061148a84610d63565b6114a757600660008154809291906114a19061478c565b91905055505b6114c233858560405180602001604052806000815250611555565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611551929190613183565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906143ed565b60405180910390fd5b60006115cf611533565b905060006115dc856124fc565b905060006115e9856124fc565b90506115fa836000898585896125c2565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165991906145ac565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516116d7929190614428565b60405180910390a46116ee836000898585896125d8565b6116fd836000898989896125e0565b50505050505050565b815183511461174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906143cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b1906142ad565b60405180910390fd5b60006117c4611533565b90506117d48187878787876125c2565b60005b84518110156119d157600085828151811061181b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110611860577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f89061432d565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119b691906145ac565b92505081905550505050806119ca9061478c565b90506117d7565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a48929190614074565b60405180910390a4611a5e8187878787876125d8565b611a6c8187878787876127c7565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb9061430d565b60405180910390fd5b8051825114611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f906143cd565b60405180910390fd5b6000611b32611533565b9050611b52818560008686604051806020016040528060008152506125c2565b60005b8351811015611ceb576000848281518110611b99577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000848381518110611bde577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c769061420d565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050508080611ce39061478c565b915050611b55565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611d63929190614074565b60405180910390a4611d89818560008686604051806020016040528060008152506125d8565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb9061438d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fb591906140ab565b60405180910390a3505050565b600081604051602001611fd59190613efc565b604051602081830303815290604052805190602001209050919050565b600080600061200185856129ae565b9150915061200e81612a31565b819250505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612089576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612080906142ad565b60405180910390fd5b6000612093611533565b905060006120a0856124fc565b905060006120ad856124fc565b90506120bd8389898585896125c2565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214b9061432d565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461220991906145ac565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612286929190614428565b60405180910390a461229c848a8a86868a6125d8565b6122aa848a8a8a8a8a6125e0565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231c9061430d565b60405180910390fd5b600061232f611533565b9050600061233c846124fc565b90506000612349846124fc565b9050612369838760008585604051806020016040528060008152506125c2565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f79061420d565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516124cd929190614428565b60405180910390a46124f3848860008686604051806020016040528060008152506125d8565b50505050505050565b60606000600167ffffffffffffffff811115612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561256f5781602001602082028036833780820191505090505b50905082816000815181106125ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6125d0868686868686612d82565b505050505050565b505050505050565b6125ff8473ffffffffffffffffffffffffffffffffffffffff16612fec565b156127bf578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612645959493929190613fa5565b602060405180830381600087803b15801561265f57600080fd5b505af192505050801561269057506040513d601f19601f8201168201806040525081019061268d91906138ba565b60015b6127365761269c61486c565b806308c379a014156126f957506126b1614f0a565b806126bc57506126fb565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f0919061410b565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d9061414d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b49061416d565b60405180910390fd5b505b505050505050565b6127e68473ffffffffffffffffffffffffffffffffffffffff16612fec565b156129a6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161282c959493929190613f3d565b602060405180830381600087803b15801561284657600080fd5b505af192505050801561287757506040513d601f19601f8201168201806040525081019061287491906138ba565b60015b61291d5761288361486c565b806308c379a014156128e05750612898614f0a565b806128a357506128e2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d7919061410b565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129149061414d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b9061416d565b60405180910390fd5b505b505050505050565b6000806041835114156129f05760008060006020860151925060408601519150606086015160001a90506129e48782858561300f565b94509450505050612a2a565b604083511415612a21576000806020850151915060408501519050612a1686838361311c565b935093505050612a2a565b60006002915091505b9250929050565b60006004811115612a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612aa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612aaf57612d7f565b60016004811115612ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612b22577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a9061412d565b60405180910390fd5b60026004811115612b9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612bd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e906141ad565b60405180910390fd5b60036004811115612c51577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612c8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc29061426d565b60405180910390fd5b600480811115612d04577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612d3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d75906142ed565b60405180910390fd5b5b50565b612d9086868686868661317b565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612e8e5760005b8351811015612e8c57828181518110612e0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160046000868481518110612e4f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612e7491906145ac565b9250508190555080612e859061478c565b9050612dc8565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612fe45760005b8351811015612fe2576000848281518110612f0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000848381518110612f4f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060006004600084815260200190815260200160002054905081811015612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab9061436d565b60405180910390fd5b818103600460008581526020019081526020016000208190555050505080612fdb9061478c565b9050612ec6565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561304a576000600391509150613113565b601b8560ff16141580156130625750601c8560ff1614155b15613074576000600491509150613113565b60006001878787876040516000815260200160405260405161309994939291906140c6565b6020604051602081039080840390855afa1580156130bb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561310a57600060019250925050613113565b80600092509250505b94509492505050565b60008060007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b841690506000601b60ff8660001c901c61315f91906145ac565b905061316d8782888561300f565b935093505050935093915050565b505050505050565b82805461318f90614729565b90600052602060002090601f0160209004810192826131b157600085556131f8565b82601f106131ca57805160ff19168380011785556131f8565b828001600101855582156131f8579182015b828111156131f75782518255916020019190600101906131dc565b5b5090506132059190613209565b5090565b5b8082111561322257600081600090555060010161320a565b5090565b600061323961323484614476565b614451565b9050808382526020820190508285602086028201111561325857600080fd5b60005b85811015613288578161326e888261337a565b84526020840193506020830192505060018101905061325b565b5050509392505050565b60006132a56132a0846144a2565b614451565b905080838252602082019050828560208602820111156132c457600080fd5b60005b858110156132f457816132da8882613476565b8452602084019350602083019250506001810190506132c7565b5050509392505050565b600061331161330c846144ce565b614451565b90508281526020810184848401111561332957600080fd5b6133348482856146e7565b509392505050565b600061334f61334a846144ff565b614451565b90508281526020810184848401111561336757600080fd5b6133728482856146e7565b509392505050565b60008135905061338981614fa0565b92915050565b600082601f8301126133a057600080fd5b81356133b0848260208601613226565b91505092915050565b600082601f8301126133ca57600080fd5b81356133da848260208601613292565b91505092915050565b6000813590506133f281614fb7565b92915050565b60008135905061340781614fce565b92915050565b60008151905061341c81614fce565b92915050565b600082601f83011261343357600080fd5b81356134438482602086016132fe565b91505092915050565b600082601f83011261345d57600080fd5b813561346d84826020860161333c565b91505092915050565b60008135905061348581614fe5565b92915050565b60006020828403121561349d57600080fd5b60006134ab8482850161337a565b91505092915050565b600080604083850312156134c757600080fd5b60006134d58582860161337a565b92505060206134e68582860161337a565b9150509250929050565b600080600080600060a0868803121561350857600080fd5b60006135168882890161337a565b95505060206135278882890161337a565b945050604086013567ffffffffffffffff81111561354457600080fd5b613550888289016133b9565b935050606086013567ffffffffffffffff81111561356d57600080fd5b613579888289016133b9565b925050608086013567ffffffffffffffff81111561359657600080fd5b6135a288828901613422565b9150509295509295909350565b600080600080600060a086880312156135c757600080fd5b60006135d58882890161337a565b95505060206135e68882890161337a565b94505060406135f788828901613476565b935050606061360888828901613476565b925050608086013567ffffffffffffffff81111561362557600080fd5b61363188828901613422565b9150509295509295909350565b60008060006060848603121561365357600080fd5b60006136618682870161337a565b935050602084013567ffffffffffffffff81111561367e57600080fd5b61368a868287016133b9565b925050604084013567ffffffffffffffff8111156136a757600080fd5b6136b3868287016133b9565b9150509250925092565b600080604083850312156136d057600080fd5b60006136de8582860161337a565b92505060206136ef858286016133e3565b9150509250929050565b6000806040838503121561370c57600080fd5b600061371a8582860161337a565b925050602061372b85828601613476565b9150509250929050565b60008060006060848603121561374a57600080fd5b60006137588682870161337a565b935050602061376986828701613476565b925050604061377a86828701613476565b9150509250925092565b60008060008060008060c0878903121561379d57600080fd5b60006137ab89828a0161337a565b96505060206137bc89828a01613476565b95505060406137cd89828a01613476565b94505060606137de89828a01613476565b93505060806137ef89828a01613476565b92505060a087013567ffffffffffffffff81111561380c57600080fd5b61381889828a01613422565b9150509295509295509295565b6000806040838503121561383857600080fd5b600083013567ffffffffffffffff81111561385257600080fd5b61385e8582860161338f565b925050602083013567ffffffffffffffff81111561387b57600080fd5b613887858286016133b9565b9150509250929050565b6000602082840312156138a357600080fd5b60006138b1848285016133f8565b91505092915050565b6000602082840312156138cc57600080fd5b60006138da8482850161340d565b91505092915050565b6000602082840312156138f557600080fd5b600082013567ffffffffffffffff81111561390f57600080fd5b61391b8482850161344c565b91505092915050565b60006020828403121561393657600080fd5b600061394484828501613476565b91505092915050565b60008060006060848603121561396257600080fd5b600061397086828701613476565b935050602084013567ffffffffffffffff81111561398d57600080fd5b6139998682870161338f565b925050604084013567ffffffffffffffff8111156139b657600080fd5b6139c2868287016133b9565b9150509250925092565b600080600080600060a086880312156139e457600080fd5b60006139f288828901613476565b9550506020613a0388828901613476565b9450506040613a1488828901613476565b9350506060613a2588828901613476565b925050608086013567ffffffffffffffff811115613a4257600080fd5b613a4e88828901613422565b9150509295509295909350565b6000613a678383613ecf565b60208301905092915050565b613a7c8161465c565b82525050565b6000613a8d82614540565b613a97818561456e565b9350613aa283614530565b8060005b83811015613ad3578151613aba8882613a5b565b9750613ac583614561565b925050600181019050613aa6565b5085935050505092915050565b613ae98161466e565b82525050565b613af88161467a565b82525050565b613b0f613b0a8261467a565b6147d5565b82525050565b6000613b208261454b565b613b2a818561457f565b9350613b3a8185602086016146f6565b613b438161488e565b840191505092915050565b6000613b5982614556565b613b638185614590565b9350613b738185602086016146f6565b613b7c8161488e565b840191505092915050565b6000613b94601883614590565b9150613b9f826148ac565b602082019050919050565b6000613bb7603483614590565b9150613bc2826148d5565b604082019050919050565b6000613bda602883614590565b9150613be582614924565b604082019050919050565b6000613bfd601883614590565b9150613c0882614973565b602082019050919050565b6000613c20601f83614590565b9150613c2b8261499c565b602082019050919050565b6000613c43601c836145a1565b9150613c4e826149c5565b601c82019050919050565b6000613c66602b83614590565b9150613c71826149ee565b604082019050919050565b6000613c89602683614590565b9150613c9482614a3d565b604082019050919050565b6000613cac602483614590565b9150613cb782614a8c565b604082019050919050565b6000613ccf602983614590565b9150613cda82614adb565b604082019050919050565b6000613cf2601f83614590565b9150613cfd82614b2a565b602082019050919050565b6000613d15602283614590565b9150613d2082614b53565b604082019050919050565b6000613d38601683614590565b9150613d4382614ba2565b602082019050919050565b6000613d5b602583614590565b9150613d6682614bcb565b604082019050919050565b6000613d7e603283614590565b9150613d8982614c1a565b604082019050919050565b6000613da1602283614590565b9150613dac82614c69565b604082019050919050565b6000613dc4602383614590565b9150613dcf82614cb8565b604082019050919050565b6000613de7602a83614590565b9150613df282614d07565b604082019050919050565b6000613e0a602083614590565b9150613e1582614d56565b602082019050919050565b6000613e2d602883614590565b9150613e3882614d7f565b604082019050919050565b6000613e50602983614590565b9150613e5b82614dce565b604082019050919050565b6000613e73602983614590565b9150613e7e82614e1d565b604082019050919050565b6000613e96602883614590565b9150613ea182614e6c565b604082019050919050565b6000613eb9602183614590565b9150613ec482614ebb565b604082019050919050565b613ed8816146d0565b82525050565b613ee7816146d0565b82525050565b613ef6816146da565b82525050565b6000613f0782613c36565b9150613f138284613afe565b60208201915081905092915050565b6000602082019050613f376000830184613a73565b92915050565b600060a082019050613f526000830188613a73565b613f5f6020830187613a73565b8181036040830152613f718186613a82565b90508181036060830152613f858185613a82565b90508181036080830152613f998184613b15565b90509695505050505050565b600060a082019050613fba6000830188613a73565b613fc76020830187613a73565b613fd46040830186613ede565b613fe16060830185613ede565b8181036080830152613ff38184613b15565b90509695505050505050565b600060a0820190506140146000830188613a73565b6140216020830187613ede565b61402e6040830186613ede565b61403b6060830185613ede565b6140486080830184613ede565b9695505050505050565b6000602082019050818103600083015261406c8184613a82565b905092915050565b6000604082019050818103600083015261408e8185613a82565b905081810360208301526140a28184613a82565b90509392505050565b60006020820190506140c06000830184613ae0565b92915050565b60006080820190506140db6000830187613aef565b6140e86020830186613eed565b6140f56040830185613aef565b6141026060830184613aef565b95945050505050565b600060208201905081810360008301526141258184613b4e565b905092915050565b6000602082019050818103600083015261414681613b87565b9050919050565b6000602082019050818103600083015261416681613baa565b9050919050565b6000602082019050818103600083015261418681613bcd565b9050919050565b600060208201905081810360008301526141a681613bf0565b9050919050565b600060208201905081810360008301526141c681613c13565b9050919050565b600060208201905081810360008301526141e681613c59565b9050919050565b6000602082019050818103600083015261420681613c7c565b9050919050565b6000602082019050818103600083015261422681613c9f565b9050919050565b6000602082019050818103600083015261424681613cc2565b9050919050565b6000602082019050818103600083015261426681613ce5565b9050919050565b6000602082019050818103600083015261428681613d08565b9050919050565b600060208201905081810360008301526142a681613d2b565b9050919050565b600060208201905081810360008301526142c681613d4e565b9050919050565b600060208201905081810360008301526142e681613d71565b9050919050565b6000602082019050818103600083015261430681613d94565b9050919050565b6000602082019050818103600083015261432681613db7565b9050919050565b6000602082019050818103600083015261434681613dda565b9050919050565b6000602082019050818103600083015261436681613dfd565b9050919050565b6000602082019050818103600083015261438681613e20565b9050919050565b600060208201905081810360008301526143a681613e43565b9050919050565b600060208201905081810360008301526143c681613e66565b9050919050565b600060208201905081810360008301526143e681613e89565b9050919050565b6000602082019050818103600083015261440681613eac565b9050919050565b60006020820190506144226000830184613ede565b92915050565b600060408201905061443d6000830185613ede565b61444a6020830184613ede565b9392505050565b600061445b61446c565b9050614467828261475b565b919050565b6000604051905090565b600067ffffffffffffffff8211156144915761449061483d565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156144bd576144bc61483d565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156144e9576144e861483d565b5b6144f28261488e565b9050602081019050919050565b600067ffffffffffffffff82111561451a5761451961483d565b5b6145238261488e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006145b7826146d0565b91506145c2836146d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145f7576145f66147df565b5b828201905092915050565b600061460d826146d0565b9150614618836146d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614651576146506147df565b5b828202905092915050565b6000614667826146b0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156147145780820151818401526020810190506146f9565b83811115614723576000848401525b50505050565b6000600282049050600182168061474157607f821691505b602082108114156147555761475461480e565b5b50919050565b6147648261488e565b810181811067ffffffffffffffff821117156147835761478261483d565b5b80604052505050565b6000614797826146d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147ca576147c96147df565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561488b5760046000803e61488860005161489f565b90505b90565b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f7369676e6174757265496420616c726561647920757365640000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420617574686f72697a656420746f206d696e7400000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614f1a57614f9d565b614f2261446c565b60043d036004823e80513d602482011167ffffffffffffffff82111715614f4a575050614f9d565b808201805167ffffffffffffffff811115614f685750505050614f9d565b80602083010160043d038501811115614f85575050505050614f9d565b614f948260200185018661475b565b82955050505050505b90565b614fa98161465c565b8114614fb457600080fd5b50565b614fc08161466e565b8114614fcb57600080fd5b50565b614fd781614684565b8114614fe257600080fd5b50565b614fee816146d0565b8114614ff957600080fd5b5056fea2646970667358221220ec538cdec4baf8110608a5921f1b560ce260b790f6cd74b732e836562d340f3864736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000009d6d0759cf88f88189d58538deacf3f58fff5eeb000000000000000000000000000000000000000000000000000000000000002768747470733a2f2f6170692e7561736973636f72702e636f6d2f756d612f7b69647d2e6a736f6e00000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101655760003560e01c80636c19e783116100d1578063e985e9c51161008a578063f2fde38b11610064578063f2fde38b1461054b578063f5298aca14610574578063f74f9bfd1461059d578063f8ea8f16146105c857610165565b8063e985e9c5146104a8578063f1bd8bba146104e5578063f242432a1461052257610165565b80636c19e783146103ac578063715018a6146103d55780638da5cb5b146103ec57806395d89b4114610417578063a22cb46514610442578063bd85b0391461046b57610165565b80632bdad637116101235780632bdad6371461029e5780632eb2c2d6146102c95780633ccfd60b146102f25780634e1273f4146103095780634f558e79146103465780636b20c4541461038357610165565b8062fdd58e1461016a57806301ffc9a7146101a757806302fe5305146101e457806306fdde031461020d5780630e89341c146102385780631449247d14610275575b600080fd5b34801561017657600080fd5b50610191600480360381019061018c91906136f9565b6105e4565b60405161019e919061440d565b60405180910390f35b3480156101b357600080fd5b506101ce60048036038101906101c99190613891565b6106ad565b6040516101db91906140ab565b60405180910390f35b3480156101f057600080fd5b5061020b600480360381019061020691906138e3565b61078f565b005b34801561021957600080fd5b50610222610817565b60405161022f919061410b565b60405180910390f35b34801561024457600080fd5b5061025f600480360381019061025a9190613924565b610850565b60405161026c919061410b565b60405180910390f35b34801561028157600080fd5b5061029c6004803603810190610297919061394d565b6108e4565b005b3480156102aa57600080fd5b506102b3610a46565b6040516102c0919061440d565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906134f0565b610a4c565b005b3480156102fe57600080fd5b50610307610aed565b005b34801561031557600080fd5b50610330600480360381019061032b9190613825565b610bb2565b60405161033d9190614052565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190613924565b610d63565b60405161037a91906140ab565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a5919061363e565b610d77565b005b3480156103b857600080fd5b506103d360048036038101906103ce919061348b565b610e14565b005b3480156103e157600080fd5b506103ea610ed4565b005b3480156103f857600080fd5b50610401610f5c565b60405161040e9190613f22565b60405180910390f35b34801561042357600080fd5b5061042c610f86565b604051610439919061410b565b60405180910390f35b34801561044e57600080fd5b50610469600480360381019061046491906136bd565b610fbf565b005b34801561047757600080fd5b50610492600480360381019061048d9190613924565b610fd5565b60405161049f919061440d565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca91906134b4565b610ff2565b6040516104dc91906140ab565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613784565b611086565b6040516105199190613f22565b60405180910390f35b34801561052e57600080fd5b50610549600480360381019061054491906135af565b6110d4565b005b34801561055757600080fd5b50610572600480360381019061056d919061348b565b611175565b005b34801561058057600080fd5b5061059b60048036038101906105969190613735565b61126d565b005b3480156105a957600080fd5b506105b261130a565b6040516105bf919061440d565b60405180910390f35b6105e260048036038101906105dd91906139cc565b611310565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064c906141cd565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061077857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107885750610787826114c9565b5b9050919050565b610797611533565b73ffffffffffffffffffffffffffffffffffffffff166107b5610f5c565b73ffffffffffffffffffffffffffffffffffffffff161461080b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108029061434d565b60405180910390fd5b6108148161153b565b50565b6040518060400160405280601781526020017f5541534953204d4554415350414345204150504152454c00000000000000000081525081565b60606002805461085f90614729565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90614729565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b50505050509050919050565b6108ec611533565b73ffffffffffffffffffffffffffffffffffffffff1661090a610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109579061434d565b60405180910390fd5b61096983610d63565b61098657600660008154809291906109809061478c565b91905055505b60005b8251811015610a4057610a2d8382815181106109ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015185848481518110610a10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160405180602001604052806000815250611555565b8080610a389061478c565b915050610989565b50505050565b60065481565b610a54611533565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a9a5750610a9985610a94611533565b610ff2565b5b610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad0906142cd565b60405180910390fd5b610ae68585858585611706565b5050505050565b610af5611533565b73ffffffffffffffffffffffffffffffffffffffff16610b13610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b609061434d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610baf573d6000803e3d6000fd5b50565b60608151835114610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef906143ad565b60405180910390fd5b6000835167ffffffffffffffff811115610c3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610c695781602001602082028036833780820191505090505b50905060005b8451811015610d5857610d02858281518110610cb4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610cf5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105e4565b828281518110610d3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610d519061478c565b9050610c6f565b508091505092915050565b600080610d6f83610fd5565b119050919050565b610d7f611533565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610dc55750610dc483610dbf611533565b610ff2565b5b610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061422d565b60405180910390fd5b610e0f838383611a74565b505050565b610e1c611533565b73ffffffffffffffffffffffffffffffffffffffff16610e3a610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e879061434d565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610edc611533565b73ffffffffffffffffffffffffffffffffffffffff16610efa610f5c565b73ffffffffffffffffffffffffffffffffffffffff1614610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f479061434d565b60405180910390fd5b610f5a6000611d8f565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f554d41000000000000000000000000000000000000000000000000000000000081525081565b610fd1610fca611533565b8383611e55565b5050565b600060046000838152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006110c86110c288888888886040516020016110a7959493929190613fff565b60405160208183030381529060405280519060200120611fc2565b83611ff2565b90509695505050505050565b6110dc611533565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061112257506111218561111c611533565b610ff2565b5b611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111589061422d565b60405180910390fd5b61116e8585858585612019565b5050505050565b61117d611533565b73ffffffffffffffffffffffffffffffffffffffff1661119b610f5c565b73ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e89061434d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611258906141ed565b60405180910390fd5b61126a81611d8f565b50565b611275611533565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806112bb57506112ba836112b5611533565b610ff2565b5b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f19061422d565b60405180910390fd5b6113058383836122b5565b505050565b60055481565b6000600860008481526020019081526020016000205414611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d9061418d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ad338787878787611086565b73ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa9061428d565b60405180910390fd5b828561140f9190614602565b3414611450576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114479061424d565b60405180910390fd5b600160086000848152602001908152602001600020819055506005600081548092919061147c9061478c565b919050555061148a84610d63565b6114a757600660008154809291906114a19061478c565b91905055505b6114c233858560405180602001604052806000815250611555565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611551929190613183565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906143ed565b60405180910390fd5b60006115cf611533565b905060006115dc856124fc565b905060006115e9856124fc565b90506115fa836000898585896125c2565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461165991906145ac565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516116d7929190614428565b60405180910390a46116ee836000898585896125d8565b6116fd836000898989896125e0565b50505050505050565b815183511461174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906143cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b1906142ad565b60405180910390fd5b60006117c4611533565b90506117d48187878787876125c2565b60005b84518110156119d157600085828151811061181b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110611860577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f89061432d565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119b691906145ac565b92505081905550505050806119ca9061478c565b90506117d7565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a48929190614074565b60405180910390a4611a5e8187878787876125d8565b611a6c8187878787876127c7565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb9061430d565b60405180910390fd5b8051825114611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f906143cd565b60405180910390fd5b6000611b32611533565b9050611b52818560008686604051806020016040528060008152506125c2565b60005b8351811015611ceb576000848281518110611b99577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000848381518110611bde577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c769061420d565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050508080611ce39061478c565b915050611b55565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611d63929190614074565b60405180910390a4611d89818560008686604051806020016040528060008152506125d8565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb9061438d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fb591906140ab565b60405180910390a3505050565b600081604051602001611fd59190613efc565b604051602081830303815290604052805190602001209050919050565b600080600061200185856129ae565b9150915061200e81612a31565b819250505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612089576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612080906142ad565b60405180910390fd5b6000612093611533565b905060006120a0856124fc565b905060006120ad856124fc565b90506120bd8389898585896125c2565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214b9061432d565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461220991906145ac565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612286929190614428565b60405180910390a461229c848a8a86868a6125d8565b6122aa848a8a8a8a8a6125e0565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231c9061430d565b60405180910390fd5b600061232f611533565b9050600061233c846124fc565b90506000612349846124fc565b9050612369838760008585604051806020016040528060008152506125c2565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f79061420d565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516124cd929190614428565b60405180910390a46124f3848860008686604051806020016040528060008152506125d8565b50505050505050565b60606000600167ffffffffffffffff811115612541577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561256f5781602001602082028036833780820191505090505b50905082816000815181106125ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6125d0868686868686612d82565b505050505050565b505050505050565b6125ff8473ffffffffffffffffffffffffffffffffffffffff16612fec565b156127bf578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612645959493929190613fa5565b602060405180830381600087803b15801561265f57600080fd5b505af192505050801561269057506040513d601f19601f8201168201806040525081019061268d91906138ba565b60015b6127365761269c61486c565b806308c379a014156126f957506126b1614f0a565b806126bc57506126fb565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f0919061410b565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d9061414d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b49061416d565b60405180910390fd5b505b505050505050565b6127e68473ffffffffffffffffffffffffffffffffffffffff16612fec565b156129a6578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161282c959493929190613f3d565b602060405180830381600087803b15801561284657600080fd5b505af192505050801561287757506040513d601f19601f8201168201806040525081019061287491906138ba565b60015b61291d5761288361486c565b806308c379a014156128e05750612898614f0a565b806128a357506128e2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d7919061410b565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129149061414d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b9061416d565b60405180910390fd5b505b505050505050565b6000806041835114156129f05760008060006020860151925060408601519150606086015160001a90506129e48782858561300f565b94509450505050612a2a565b604083511415612a21576000806020850151915060408501519050612a1686838361311c565b935093505050612a2a565b60006002915091505b9250929050565b60006004811115612a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612aa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612aaf57612d7f565b60016004811115612ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612b22577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5a9061412d565b60405180910390fd5b60026004811115612b9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612bd6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e906141ad565b60405180910390fd5b60036004811115612c51577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612c8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc29061426d565b60405180910390fd5b600480811115612d04577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115612d3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d75906142ed565b60405180910390fd5b5b50565b612d9086868686868661317b565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612e8e5760005b8351811015612e8c57828181518110612e0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160046000868481518110612e4f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000828254612e7491906145ac565b9250508190555080612e859061478c565b9050612dc8565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612fe45760005b8351811015612fe2576000848281518110612f0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000848381518110612f4f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060006004600084815260200190815260200160002054905081811015612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab9061436d565b60405180910390fd5b818103600460008581526020019081526020016000208190555050505080612fdb9061478c565b9050612ec6565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561304a576000600391509150613113565b601b8560ff16141580156130625750601c8560ff1614155b15613074576000600491509150613113565b60006001878787876040516000815260200160405260405161309994939291906140c6565b6020604051602081039080840390855afa1580156130bb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561310a57600060019250925050613113565b80600092509250505b94509492505050565b60008060007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b841690506000601b60ff8660001c901c61315f91906145ac565b905061316d8782888561300f565b935093505050935093915050565b505050505050565b82805461318f90614729565b90600052602060002090601f0160209004810192826131b157600085556131f8565b82601f106131ca57805160ff19168380011785556131f8565b828001600101855582156131f8579182015b828111156131f75782518255916020019190600101906131dc565b5b5090506132059190613209565b5090565b5b8082111561322257600081600090555060010161320a565b5090565b600061323961323484614476565b614451565b9050808382526020820190508285602086028201111561325857600080fd5b60005b85811015613288578161326e888261337a565b84526020840193506020830192505060018101905061325b565b5050509392505050565b60006132a56132a0846144a2565b614451565b905080838252602082019050828560208602820111156132c457600080fd5b60005b858110156132f457816132da8882613476565b8452602084019350602083019250506001810190506132c7565b5050509392505050565b600061331161330c846144ce565b614451565b90508281526020810184848401111561332957600080fd5b6133348482856146e7565b509392505050565b600061334f61334a846144ff565b614451565b90508281526020810184848401111561336757600080fd5b6133728482856146e7565b509392505050565b60008135905061338981614fa0565b92915050565b600082601f8301126133a057600080fd5b81356133b0848260208601613226565b91505092915050565b600082601f8301126133ca57600080fd5b81356133da848260208601613292565b91505092915050565b6000813590506133f281614fb7565b92915050565b60008135905061340781614fce565b92915050565b60008151905061341c81614fce565b92915050565b600082601f83011261343357600080fd5b81356134438482602086016132fe565b91505092915050565b600082601f83011261345d57600080fd5b813561346d84826020860161333c565b91505092915050565b60008135905061348581614fe5565b92915050565b60006020828403121561349d57600080fd5b60006134ab8482850161337a565b91505092915050565b600080604083850312156134c757600080fd5b60006134d58582860161337a565b92505060206134e68582860161337a565b9150509250929050565b600080600080600060a0868803121561350857600080fd5b60006135168882890161337a565b95505060206135278882890161337a565b945050604086013567ffffffffffffffff81111561354457600080fd5b613550888289016133b9565b935050606086013567ffffffffffffffff81111561356d57600080fd5b613579888289016133b9565b925050608086013567ffffffffffffffff81111561359657600080fd5b6135a288828901613422565b9150509295509295909350565b600080600080600060a086880312156135c757600080fd5b60006135d58882890161337a565b95505060206135e68882890161337a565b94505060406135f788828901613476565b935050606061360888828901613476565b925050608086013567ffffffffffffffff81111561362557600080fd5b61363188828901613422565b9150509295509295909350565b60008060006060848603121561365357600080fd5b60006136618682870161337a565b935050602084013567ffffffffffffffff81111561367e57600080fd5b61368a868287016133b9565b925050604084013567ffffffffffffffff8111156136a757600080fd5b6136b3868287016133b9565b9150509250925092565b600080604083850312156136d057600080fd5b60006136de8582860161337a565b92505060206136ef858286016133e3565b9150509250929050565b6000806040838503121561370c57600080fd5b600061371a8582860161337a565b925050602061372b85828601613476565b9150509250929050565b60008060006060848603121561374a57600080fd5b60006137588682870161337a565b935050602061376986828701613476565b925050604061377a86828701613476565b9150509250925092565b60008060008060008060c0878903121561379d57600080fd5b60006137ab89828a0161337a565b96505060206137bc89828a01613476565b95505060406137cd89828a01613476565b94505060606137de89828a01613476565b93505060806137ef89828a01613476565b92505060a087013567ffffffffffffffff81111561380c57600080fd5b61381889828a01613422565b9150509295509295509295565b6000806040838503121561383857600080fd5b600083013567ffffffffffffffff81111561385257600080fd5b61385e8582860161338f565b925050602083013567ffffffffffffffff81111561387b57600080fd5b613887858286016133b9565b9150509250929050565b6000602082840312156138a357600080fd5b60006138b1848285016133f8565b91505092915050565b6000602082840312156138cc57600080fd5b60006138da8482850161340d565b91505092915050565b6000602082840312156138f557600080fd5b600082013567ffffffffffffffff81111561390f57600080fd5b61391b8482850161344c565b91505092915050565b60006020828403121561393657600080fd5b600061394484828501613476565b91505092915050565b60008060006060848603121561396257600080fd5b600061397086828701613476565b935050602084013567ffffffffffffffff81111561398d57600080fd5b6139998682870161338f565b925050604084013567ffffffffffffffff8111156139b657600080fd5b6139c2868287016133b9565b9150509250925092565b600080600080600060a086880312156139e457600080fd5b60006139f288828901613476565b9550506020613a0388828901613476565b9450506040613a1488828901613476565b9350506060613a2588828901613476565b925050608086013567ffffffffffffffff811115613a4257600080fd5b613a4e88828901613422565b9150509295509295909350565b6000613a678383613ecf565b60208301905092915050565b613a7c8161465c565b82525050565b6000613a8d82614540565b613a97818561456e565b9350613aa283614530565b8060005b83811015613ad3578151613aba8882613a5b565b9750613ac583614561565b925050600181019050613aa6565b5085935050505092915050565b613ae98161466e565b82525050565b613af88161467a565b82525050565b613b0f613b0a8261467a565b6147d5565b82525050565b6000613b208261454b565b613b2a818561457f565b9350613b3a8185602086016146f6565b613b438161488e565b840191505092915050565b6000613b5982614556565b613b638185614590565b9350613b738185602086016146f6565b613b7c8161488e565b840191505092915050565b6000613b94601883614590565b9150613b9f826148ac565b602082019050919050565b6000613bb7603483614590565b9150613bc2826148d5565b604082019050919050565b6000613bda602883614590565b9150613be582614924565b604082019050919050565b6000613bfd601883614590565b9150613c0882614973565b602082019050919050565b6000613c20601f83614590565b9150613c2b8261499c565b602082019050919050565b6000613c43601c836145a1565b9150613c4e826149c5565b601c82019050919050565b6000613c66602b83614590565b9150613c71826149ee565b604082019050919050565b6000613c89602683614590565b9150613c9482614a3d565b604082019050919050565b6000613cac602483614590565b9150613cb782614a8c565b604082019050919050565b6000613ccf602983614590565b9150613cda82614adb565b604082019050919050565b6000613cf2601f83614590565b9150613cfd82614b2a565b602082019050919050565b6000613d15602283614590565b9150613d2082614b53565b604082019050919050565b6000613d38601683614590565b9150613d4382614ba2565b602082019050919050565b6000613d5b602583614590565b9150613d6682614bcb565b604082019050919050565b6000613d7e603283614590565b9150613d8982614c1a565b604082019050919050565b6000613da1602283614590565b9150613dac82614c69565b604082019050919050565b6000613dc4602383614590565b9150613dcf82614cb8565b604082019050919050565b6000613de7602a83614590565b9150613df282614d07565b604082019050919050565b6000613e0a602083614590565b9150613e1582614d56565b602082019050919050565b6000613e2d602883614590565b9150613e3882614d7f565b604082019050919050565b6000613e50602983614590565b9150613e5b82614dce565b604082019050919050565b6000613e73602983614590565b9150613e7e82614e1d565b604082019050919050565b6000613e96602883614590565b9150613ea182614e6c565b604082019050919050565b6000613eb9602183614590565b9150613ec482614ebb565b604082019050919050565b613ed8816146d0565b82525050565b613ee7816146d0565b82525050565b613ef6816146da565b82525050565b6000613f0782613c36565b9150613f138284613afe565b60208201915081905092915050565b6000602082019050613f376000830184613a73565b92915050565b600060a082019050613f526000830188613a73565b613f5f6020830187613a73565b8181036040830152613f718186613a82565b90508181036060830152613f858185613a82565b90508181036080830152613f998184613b15565b90509695505050505050565b600060a082019050613fba6000830188613a73565b613fc76020830187613a73565b613fd46040830186613ede565b613fe16060830185613ede565b8181036080830152613ff38184613b15565b90509695505050505050565b600060a0820190506140146000830188613a73565b6140216020830187613ede565b61402e6040830186613ede565b61403b6060830185613ede565b6140486080830184613ede565b9695505050505050565b6000602082019050818103600083015261406c8184613a82565b905092915050565b6000604082019050818103600083015261408e8185613a82565b905081810360208301526140a28184613a82565b90509392505050565b60006020820190506140c06000830184613ae0565b92915050565b60006080820190506140db6000830187613aef565b6140e86020830186613eed565b6140f56040830185613aef565b6141026060830184613aef565b95945050505050565b600060208201905081810360008301526141258184613b4e565b905092915050565b6000602082019050818103600083015261414681613b87565b9050919050565b6000602082019050818103600083015261416681613baa565b9050919050565b6000602082019050818103600083015261418681613bcd565b9050919050565b600060208201905081810360008301526141a681613bf0565b9050919050565b600060208201905081810360008301526141c681613c13565b9050919050565b600060208201905081810360008301526141e681613c59565b9050919050565b6000602082019050818103600083015261420681613c7c565b9050919050565b6000602082019050818103600083015261422681613c9f565b9050919050565b6000602082019050818103600083015261424681613cc2565b9050919050565b6000602082019050818103600083015261426681613ce5565b9050919050565b6000602082019050818103600083015261428681613d08565b9050919050565b600060208201905081810360008301526142a681613d2b565b9050919050565b600060208201905081810360008301526142c681613d4e565b9050919050565b600060208201905081810360008301526142e681613d71565b9050919050565b6000602082019050818103600083015261430681613d94565b9050919050565b6000602082019050818103600083015261432681613db7565b9050919050565b6000602082019050818103600083015261434681613dda565b9050919050565b6000602082019050818103600083015261436681613dfd565b9050919050565b6000602082019050818103600083015261438681613e20565b9050919050565b600060208201905081810360008301526143a681613e43565b9050919050565b600060208201905081810360008301526143c681613e66565b9050919050565b600060208201905081810360008301526143e681613e89565b9050919050565b6000602082019050818103600083015261440681613eac565b9050919050565b60006020820190506144226000830184613ede565b92915050565b600060408201905061443d6000830185613ede565b61444a6020830184613ede565b9392505050565b600061445b61446c565b9050614467828261475b565b919050565b6000604051905090565b600067ffffffffffffffff8211156144915761449061483d565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156144bd576144bc61483d565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156144e9576144e861483d565b5b6144f28261488e565b9050602081019050919050565b600067ffffffffffffffff82111561451a5761451961483d565b5b6145238261488e565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006145b7826146d0565b91506145c2836146d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145f7576145f66147df565b5b828201905092915050565b600061460d826146d0565b9150614618836146d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614651576146506147df565b5b828202905092915050565b6000614667826146b0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156147145780820151818401526020810190506146f9565b83811115614723576000848401525b50505050565b6000600282049050600182168061474157607f821691505b602082108114156147555761475461480e565b5b50919050565b6147648261488e565b810181811067ffffffffffffffff821117156147835761478261483d565b5b80604052505050565b6000614797826146d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147ca576147c96147df565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561488b5760046000803e61488860005161489f565b90505b90565b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f7369676e6174757265496420616c726561647920757365640000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420617574686f72697a656420746f206d696e7400000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614f1a57614f9d565b614f2261446c565b60043d036004823e80513d602482011167ffffffffffffffff82111715614f4a575050614f9d565b808201805167ffffffffffffffff811115614f685750505050614f9d565b80602083010160043d038501811115614f85575050505050614f9d565b614f948260200185018661475b565b82955050505050505b90565b614fa98161465c565b8114614fb457600080fd5b50565b614fc08161466e565b8114614fcb57600080fd5b50565b614fd781614684565b8114614fe257600080fd5b50565b614fee816146d0565b8114614ff957600080fd5b5056fea2646970667358221220ec538cdec4baf8110608a5921f1b560ce260b790f6cd74b732e836562d340f3864736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000009d6d0759cf88f88189d58538deacf3f58fff5eeb000000000000000000000000000000000000000000000000000000000000002768747470733a2f2f6170692e7561736973636f72702e636f6d2f756d612f7b69647d2e6a736f6e00000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _uri (string): https://api.uasiscorp.com/uma/{id}.json
Arg [1] : signer (address): 0x9d6D0759Cf88f88189d58538deACF3f58FFf5eeB

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000009d6d0759cf88f88189d58538deacf3f58fff5eeb
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000027
Arg [3] : 68747470733a2f2f6170692e7561736973636f72702e636f6d2f756d612f7b69
Arg [4] : 647d2e6a736f6e00000000000000000000000000000000000000000000000000


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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