Source Code
Latest 25 from a total of 293 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Initiate Provide... | 14146623 | 1461 days ago | IN | 0 ETH | 0.00093963 | ||||
| Initiate Provide... | 14106992 | 1467 days ago | IN | 0 ETH | 0.00732651 | ||||
| Initiate Provide... | 12923866 | 1651 days ago | IN | 0 ETH | 0.00460588 | ||||
| Initiate Provide... | 12847776 | 1663 days ago | IN | 0 ETH | 0.002757 | ||||
| Initiate Provide... | 12799242 | 1671 days ago | IN | 0 ETH | 0.00142376 | ||||
| Initiate Provide... | 12798141 | 1671 days ago | IN | 0 ETH | 0.00120458 | ||||
| Initiate Provide... | 12685374 | 1689 days ago | IN | 0 ETH | 0.00328704 | ||||
| Initiate Provide... | 12677881 | 1690 days ago | IN | 0 ETH | 0.0032856 | ||||
| Initiate Provide... | 12627640 | 1698 days ago | IN | 0 ETH | 0.00175174 | ||||
| Initiate Provide... | 12627609 | 1698 days ago | IN | 0 ETH | 0.00168605 | ||||
| Initiate Provide... | 12621660 | 1699 days ago | IN | 0 ETH | 0.000986 | ||||
| Initiate Provide... | 12620650 | 1699 days ago | IN | 0 ETH | 0.00241128 | ||||
| Initiate Provide... | 12611127 | 1700 days ago | IN | 0 ETH | 0.00120524 | ||||
| Initiate Provide... | 12610996 | 1700 days ago | IN | 0 ETH | 0.00142422 | ||||
| Initiate Provide... | 12345295 | 1741 days ago | IN | 0 ETH | 0.00329064 | ||||
| Initiate Provide... | 12320917 | 1745 days ago | IN | 0 ETH | 0.0049284 | ||||
| Initiate Provide... | 12273472 | 1753 days ago | IN | 0 ETH | 0.02085992 | ||||
| Initiate Provide... | 12269705 | 1753 days ago | IN | 0 ETH | 0.01622316 | ||||
| Initiate Provide... | 12235471 | 1758 days ago | IN | 0 ETH | 0.00854811 | ||||
| Initiate Provide... | 12219967 | 1761 days ago | IN | 0 ETH | 0.00324324 | ||||
| Initiate Provide... | 12203285 | 1763 days ago | IN | 0 ETH | 0.00324432 | ||||
| Initiate Provide... | 12188427 | 1766 days ago | IN | 0 ETH | 0.01373581 | ||||
| Initiate Provide... | 12158966 | 1770 days ago | IN | 0 ETH | 0.01481408 | ||||
| Initiate Provide... | 12158754 | 1770 days ago | IN | 0 ETH | 0.01437836 | ||||
| Initiate Provide... | 12158747 | 1770 days ago | IN | 0 ETH | 0.01471084 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Registry
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-01-09
*/
pragma solidity ^0.4.24;
// File: contracts/lib/ownership/Ownable.sol
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner,address indexed newOwner);
/// @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
constructor() public { owner = msg.sender; }
/// @dev Throws if called by any contract other than latest designated caller
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/// @dev Allows the current owner to transfer control of the contract to a newOwner.
/// @param newOwner The address to transfer ownership to.
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
// File: contracts/lib/lifecycle/Destructible.sol
contract Destructible is Ownable {
function selfDestruct() public onlyOwner {
selfdestruct(owner);
}
}
// File: contracts/lib/ownership/ZapCoordinatorInterface.sol
contract ZapCoordinatorInterface is Ownable {
function addImmutableContract(string contractName, address newAddress) external;
function updateContract(string contractName, address newAddress) external;
function getContractName(uint index) public view returns (string);
function getContract(string contractName) public view returns (address);
function updateAllDependencies() external;
}
// File: contracts/lib/ownership/Upgradable.sol
pragma solidity ^0.4.24;
contract Upgradable {
address coordinatorAddr;
ZapCoordinatorInterface coordinator;
constructor(address c) public{
coordinatorAddr = c;
coordinator = ZapCoordinatorInterface(c);
}
function updateDependencies() external coordinatorOnly {
_updateDependencies();
}
function _updateDependencies() internal;
modifier coordinatorOnly() {
require(msg.sender == coordinatorAddr, "Error: Coordinator Only Function");
_;
}
}
// File: contracts/platform/database/DatabaseInterface.sol
contract DatabaseInterface is Ownable {
function setStorageContract(address _storageContract, bool _allowed) public;
/*** Bytes32 ***/
function getBytes32(bytes32 key) external view returns(bytes32);
function setBytes32(bytes32 key, bytes32 value) external;
/*** Number **/
function getNumber(bytes32 key) external view returns(uint256);
function setNumber(bytes32 key, uint256 value) external;
/*** Bytes ***/
function getBytes(bytes32 key) external view returns(bytes);
function setBytes(bytes32 key, bytes value) external;
/*** String ***/
function getString(bytes32 key) external view returns(string);
function setString(bytes32 key, string value) external;
/*** Bytes Array ***/
function getBytesArray(bytes32 key) external view returns (bytes32[]);
function getBytesArrayIndex(bytes32 key, uint256 index) external view returns (bytes32);
function getBytesArrayLength(bytes32 key) external view returns (uint256);
function pushBytesArray(bytes32 key, bytes32 value) external;
function setBytesArrayIndex(bytes32 key, uint256 index, bytes32 value) external;
function setBytesArray(bytes32 key, bytes32[] value) external;
/*** Int Array ***/
function getIntArray(bytes32 key) external view returns (int[]);
function getIntArrayIndex(bytes32 key, uint256 index) external view returns (int);
function getIntArrayLength(bytes32 key) external view returns (uint256);
function pushIntArray(bytes32 key, int value) external;
function setIntArrayIndex(bytes32 key, uint256 index, int value) external;
function setIntArray(bytes32 key, int[] value) external;
/*** Address Array ***/
function getAddressArray(bytes32 key) external view returns (address[]);
function getAddressArrayIndex(bytes32 key, uint256 index) external view returns (address);
function getAddressArrayLength(bytes32 key) external view returns (uint256);
function pushAddressArray(bytes32 key, address value) external;
function setAddressArrayIndex(bytes32 key, uint256 index, address value) external;
function setAddressArray(bytes32 key, address[] value) external;
}
// File: contracts/platform/registry/RegistryInterface.sol
// Technically an abstract contract, not interface (solidity compiler devs are working to fix this right now)
contract RegistryInterface {
function initiateProvider(uint256, bytes32) public returns (bool);
function initiateProviderCurve(bytes32, int256[], address) public returns (bool);
function setEndpointParams(bytes32, bytes32[]) public;
function getEndpointParams(address, bytes32) public view returns (bytes32[]);
function getProviderPublicKey(address) public view returns (uint256);
function getProviderTitle(address) public view returns (bytes32);
function setProviderParameter(bytes32, bytes) public;
function setProviderTitle(bytes32) public;
function clearEndpoint(bytes32) public;
function getProviderParameter(address, bytes32) public view returns (bytes);
function getAllProviderParams(address) public view returns (bytes32[]);
function getProviderCurveLength(address, bytes32) public view returns (uint256);
function getProviderCurve(address, bytes32) public view returns (int[]);
function isProviderInitiated(address) public view returns (bool);
function getAllOracles() external view returns (address[]);
function getProviderEndpoints(address) public view returns (bytes32[]);
function getEndpointBroker(address, bytes32) public view returns (address);
}
// File: contracts/platform/registry/Registry.sol
// v1.0
contract Registry is Destructible, RegistryInterface, Upgradable {
event NewProvider(
address indexed provider,
bytes32 indexed title
);
event NewCurve(
address indexed provider,
bytes32 indexed endpoint,
int[] curve,
address indexed broker
);
DatabaseInterface public db;
constructor(address c) Upgradable(c) public {
_updateDependencies();
}
function _updateDependencies() internal {
address databaseAddress = coordinator.getContract("DATABASE");
db = DatabaseInterface(databaseAddress);
}
/// @dev initiates a provider.
/// If no address->Oracle mapping exists, Oracle object is created
/// @param publicKey unique id for provider. used for encyrpted key swap for subscription endpoints
/// @param title name
function initiateProvider(
uint256 publicKey,
bytes32 title
)
public
returns (bool)
{
require(!isProviderInitiated(msg.sender), "Error: Provider is already initiated");
createOracle(msg.sender, publicKey, title);
addOracle(msg.sender);
emit NewProvider(msg.sender, title);
return true;
}
/// @dev initiates an endpoint specific provider curve
/// If oracle[specfifier] is uninitialized, Curve is mapped to endpoint
/// @param endpoint specifier of endpoint. currently "smart_contract" or "socket_subscription"
/// @param curve flattened array of all segments, coefficients across all polynomial terms, [e0,l0,c0,c1,c2,...]
/// @param broker address for endpoint. if non-zero address, only this address will be able to bond/unbond
function initiateProviderCurve(
bytes32 endpoint,
int256[] curve,
address broker
)
returns (bool)
{
// Provider must be initiated
require(isProviderInitiated(msg.sender), "Error: Provider is not yet initiated");
// Can't reset their curve
require(getCurveUnset(msg.sender, endpoint), "Error: Curve is already set");
// Can't initiate null endpoint
require(endpoint != bytes32(0), "Error: Can't initiate null endpoint");
setCurve(msg.sender, endpoint, curve);
db.pushBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'endpoints')), endpoint);
db.setBytes32(keccak256(abi.encodePacked('oracles', msg.sender, endpoint, 'broker')), bytes32(broker));
emit NewCurve(msg.sender, endpoint, curve, broker);
return true;
}
// Sets provider data
function setProviderParameter(bytes32 key, bytes value) public {
// Provider must be initiated
require(isProviderInitiated(msg.sender), "Error: Provider is not yet initiated");
if(!isProviderParamInitialized(msg.sender, key)){
// initialize this provider param
db.setNumber(keccak256(abi.encodePacked('oracles', msg.sender, 'is_param_set', key)), 1);
db.pushBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'providerParams')), key);
}
db.setBytes(keccak256(abi.encodePacked('oracles', msg.sender, 'providerParams', key)), value);
}
// Gets provider data
function getProviderParameter(address provider, bytes32 key) public view returns (bytes){
// Provider must be initiated
require(isProviderInitiated(provider), "Error: Provider is not yet initiated");
require(isProviderParamInitialized(provider, key), "Error: Provider Parameter is not yet initialized");
return db.getBytes(keccak256(abi.encodePacked('oracles', provider, 'providerParams', key)));
}
// Gets keys of all provider params
function getAllProviderParams(address provider) public view returns (bytes32[]){
// Provider must be initiated
require(isProviderInitiated(provider), "Error: Provider is not yet initiated");
return db.getBytesArray(keccak256(abi.encodePacked('oracles', provider, 'providerParams')));
}
// Set endpoint specific parameters for a given endpoint
function setEndpointParams(bytes32 endpoint, bytes32[] endpointParams) public {
// Provider must be initiated
require(isProviderInitiated(msg.sender), "Error: Provider is not yet initialized");
// Can't set endpoint params on an unset provider
require(!getCurveUnset(msg.sender, endpoint), "Error: Curve is not yet set");
db.setBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'endpointParams', endpoint)), endpointParams);
}
//Set title for registered provider account
function setProviderTitle(bytes32 title) public {
require(isProviderInitiated(msg.sender), "Error: Provider is not initiated");
db.setBytes32(keccak256(abi.encodePacked('oracles', msg.sender, "title")), title);
}
//Clear an endpoint with no bonds
function clearEndpoint(bytes32 endpoint) public {
require(isProviderInitiated(msg.sender), "Error: Provider is not initiated");
uint256 bound = db.getNumber(keccak256(abi.encodePacked('totalBound', msg.sender, endpoint)));
require(bound == 0, "Error: Endpoint must have no bonds");
int256[] memory nullArray = new int256[](0);
bytes32[] memory endpoints = db.getBytesArray(keccak256(abi.encodePacked("oracles", msg.sender, "endpoints")));
for(uint256 i = 0; i < endpoints.length; i++) {
if( endpoints[i] == endpoint ) {
db.setBytesArrayIndex(keccak256(abi.encodePacked("oracles", msg.sender, "endpoints")), i, bytes32(0));
break;
}
}
db.pushBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'endpoints')), bytes32(0));
db.setBytes32(keccak256(abi.encodePacked('oracles', msg.sender, endpoint, 'broker')), bytes32(0));
db.setIntArray(keccak256(abi.encodePacked('oracles', msg.sender, 'curves', endpoint)), nullArray);
}
/// @return public key
function getProviderPublicKey(address provider) public view returns (uint256) {
return getPublicKey(provider);
}
/// @return oracle name
function getProviderTitle(address provider) public view returns (bytes32) {
return getTitle(provider);
}
/// @dev get curve paramaters from oracle
function getProviderCurve(
address provider,
bytes32 endpoint
)
public
view
returns (int[])
{
require(!getCurveUnset(provider, endpoint), "Error: Curve is not yet set");
return db.getIntArray(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint)));
}
function getProviderCurveLength(address provider, bytes32 endpoint) public view returns (uint256){
require(!getCurveUnset(provider, endpoint), "Error: Curve is not yet set");
return db.getIntArray(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint))).length;
}
/// @dev is provider initiated
/// @param oracleAddress the provider address
/// @return Whether or not the provider has initiated in the Registry.
function isProviderInitiated(address oracleAddress) public view returns (bool) {
return getProviderTitle(oracleAddress) != 0;
}
/*** STORAGE FUNCTIONS ***/
/// @dev get public key of provider
function getPublicKey(address provider) public view returns (uint256) {
return db.getNumber(keccak256(abi.encodePacked("oracles", provider, "publicKey")));
}
/// @dev get title of provider
function getTitle(address provider) public view returns (bytes32) {
return db.getBytes32(keccak256(abi.encodePacked("oracles", provider, "title")));
}
/// @dev get the endpoints of a provider
function getProviderEndpoints(address provider) public view returns (bytes32[]) {
return db.getBytesArray(keccak256(abi.encodePacked("oracles", provider, "endpoints")));
}
/// @dev get all endpoint params
function getEndpointParams(address provider, bytes32 endpoint) public view returns (bytes32[]) {
return db.getBytesArray(keccak256(abi.encodePacked('oracles', provider, 'endpointParams', endpoint)));
}
/// @dev get broker address for endpoint
function getEndpointBroker(address oracleAddress, bytes32 endpoint) public view returns (address) {
return address(db.getBytes32(keccak256(abi.encodePacked('oracles', oracleAddress, endpoint, 'broker'))));
}
function getCurveUnset(address provider, bytes32 endpoint) public view returns (bool) {
return db.getIntArrayLength(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint))) == 0;
}
/// @dev get provider address by index
function getOracleAddress(uint256 index) public view returns (address) {
return db.getAddressArrayIndex(keccak256(abi.encodePacked('oracleIndex')), index);
}
/// @dev get all oracle addresses
function getAllOracles() external view returns (address[]) {
return db.getAddressArray(keccak256(abi.encodePacked('oracleIndex')));
}
/// @dev add new provider to mapping
function createOracle(address provider, uint256 publicKey, bytes32 title) private {
db.setNumber(keccak256(abi.encodePacked('oracles', provider, "publicKey")), uint256(publicKey));
db.setBytes32(keccak256(abi.encodePacked('oracles', provider, "title")), title);
}
/// @dev add new provider address to oracles array
function addOracle(address provider) private {
db.pushAddressArray(keccak256(abi.encodePacked('oracleIndex')), provider);
}
/// @dev initialize new curve for provider
/// @param provider address of provider
/// @param endpoint endpoint specifier
/// @param curve flattened array of all segments, coefficients across all polynomial terms, [l0,c0,c1,c2,..., ck, e0, ...]
function setCurve(
address provider,
bytes32 endpoint,
int[] curve
)
private
{
uint prevEnd = 1;
uint index = 0;
// Validate the curve
while ( index < curve.length ) {
// Validate the length of the piece
int len = curve[index];
require(len > 0, "Error: Invalid Curve");
// Validate the end index of the piece
uint endIndex = index + uint(len) + 1;
require(endIndex < curve.length, "Error: Invalid Curve");
// Validate that the end is continuous
int end = curve[endIndex];
require(uint(end) > prevEnd, "Error: Invalid Curve");
prevEnd = uint(end);
index += uint(len) + 2;
}
db.setIntArray(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint)), curve);
}
// Determines whether this parameter has been initialized
function isProviderParamInitialized(address provider, bytes32 key) private view returns (bool){
uint256 val = db.getNumber(keccak256(abi.encodePacked('oracles', provider, 'is_param_set', key)));
return (val == 1) ? true : false;
}
/*************************************** STORAGE ****************************************
* 'oracles', provider, 'endpoints' => {bytes32[]} array of endpoints for this oracle
* 'oracles', provider, 'endpointParams', endpoint => {bytes32[]} array of params for this endpoint
* 'oracles', provider, 'curves', endpoint => {uint[]} curve array for this endpoint
* 'oracles', provider, 'broker', endpoint => {bytes32} broker address for this endpoint
* 'oracles', provider, 'is_param_set', key => {uint} Is this provider parameter set (0/1)
* 'oracles', provider, "publicKey" => {uint} public key for this oracle
* 'oracles', provider, "title" => {bytes32} title of this oracle
****************************************************************************************/
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"oracleAddress","type":"address"}],"name":"isProviderInitiated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getProviderCurve","outputs":[{"name":"","type":"int256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endpoint","type":"bytes32"},{"name":"curve","type":"int256[]"},{"name":"broker","type":"address"}],"name":"initiateProviderCurve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getAllProviderParams","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"db","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"key","type":"bytes32"}],"name":"getProviderParameter","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getProviderPublicKey","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getProviderTitle","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getCurveUnset","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"key","type":"bytes32"},{"name":"value","type":"bytes"}],"name":"setProviderParameter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllOracles","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getPublicKey","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getProviderCurveLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endpoint","type":"bytes32"}],"name":"clearEndpoint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getOracleAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"oracleAddress","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getEndpointBroker","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"selfDestruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getProviderEndpoints","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"publicKey","type":"uint256"},{"name":"title","type":"bytes32"}],"name":"initiateProvider","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getEndpointParams","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getTitle","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"title","type":"bytes32"}],"name":"setProviderTitle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"endpoint","type":"bytes32"},{"name":"endpointParams","type":"bytes32[]"}],"name":"setEndpointParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"c","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"provider","type":"address"},{"indexed":true,"name":"title","type":"bytes32"}],"name":"NewProvider","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"provider","type":"address"},{"indexed":true,"name":"endpoint","type":"bytes32"},{"indexed":false,"name":"curve","type":"int256[]"},{"indexed":true,"name":"broker","type":"address"}],"name":"NewCurve","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405160208062005ad88339810180604052810190808051906020019092919050505080336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200011262000119640100000000026401000000009004565b5062000261565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663358177736040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825260088152602001807f4441544142415345000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b158015620001de57600080fd5b505af1158015620001f3573d6000803e3d6000fd5b505050506040513d60208110156200020a57600080fd5b8101908080519060200190929190505050905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61586780620002716000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063186b79c9146101595780632316a9ff146101b4578063238b3aed1461025a578063275601f6146103065780634d655aff1461039e5780634d9bcac4146103f55780634ff6e86e146104bf5780635481f43e1461051657806354a365df146105755780635750644a146105de57806365a6bb29146106555780636e5ecdff146106c1578063857cdbb8146106d857806387cd29a41461072f5780638da5cb5b146107945780638dc8d32b146107eb5780639217c4381461081c5780639c39c8ea146108895780639cb8a26a1461091a578063a72460d114610931578063af87c833146109c9578063e95d618214610a1c578063f2fde38b14610ac2578063f51d7d5f14610b05578063f5d1d29914610b64578063fcf0c24814610b95575b600080fd5b34801561016557600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c09565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b50610203600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610c25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561024657808201518184015260208101905061022b565b505050509050019250505060405180910390f35b34801561026657600080fd5b506102ec600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808215151515815260200191505060405180910390f35b34801561031257600080fd5b50610347600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611545565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038a57808201518184015260208101905061036f565b505050509050019250505060405180910390f35b3480156103aa57600080fd5b506103b3611827565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040157600080fd5b50610444600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505061184d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610484578082015181840152602081019050610469565b50505050905090810190601f1680156104b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cb57600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be4565b6040518082815260200191505060405180910390f35b34801561052257600080fd5b50610557600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf6565b60405180826000191660001916815260200191505060405180910390f35b34801561058157600080fd5b506105c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c08565b604051808215151515815260200191505060405180910390f35b3480156105ea57600080fd5b506106536004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e04565b005b34801561066157600080fd5b5061066a612499565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106ad578082015181840152602081019050610692565b505050509050019250505060405180910390f35b3480156106cd57600080fd5b506106d661266b565b005b3480156106e457600080fd5b50610719600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061273a565b6040518082815260200191505060405180910390f35b34801561073b57600080fd5b5061077e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050612923565b6040518082815260200191505060405180910390f35b3480156107a057600080fd5b506107a9612bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107f757600080fd5b5061081a6004803603810190808035600019169060200190929190505050612c18565b005b34801561082857600080fd5b506108476004803603810190808035906020019092919050505061395e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089557600080fd5b506108d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050613ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092657600080fd5b5061092f613ce2565b005b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d77565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b557808201518184015260208101905061099a565b505050509050019250505060405180910390f35b3480156109d557600080fd5b50610a02600480360381019080803590602001909291908035600019169060200190929190505050613fb6565b604051808215151515815260200191505060405180910390f35b348015610a2857600080fd5b50610a6b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506140c2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610aae578082015181840152602081019050610a93565b505050509050019250505060405180910390f35b348015610ace57600080fd5b50610b03600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614312565b005b348015610b1157600080fd5b50610b46600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614467565b60405180826000191660001916815260200191505060405180910390f35b348015610b7057600080fd5b50610b936004803603810190808035600019169060200190929190505050614650565b005b348015610ba157600080fd5b50610c0760048036038101908080356000191690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061489d565b005b600080600102610c1883611bf6565b6000191614159050919050565b6060610c318383611c08565b151515610ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515610dd45780518252602082019150602081019050602083039250610daf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015610e9957600080fd5b810190808051640100000000811115610eb157600080fd5b82810190506020810184811115610ec757600080fd5b8151856020820283011164010000000082111715610ee457600080fd5b5050929190505050905092915050565b6000610eff33610c09565b1515610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610fa33385611c08565b1515611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a20437572766520697320616c726561647920736574000000000081525060200191505060405180910390fd5b6000600102600019168460001916141515156110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4572726f723a2043616e277420696e697469617465206e756c6c20656e64706f81526020017f696e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6110cc338585614bd9565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156111ea57805182526020820191506020810190506020830392506111c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338660405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b6020831015156113c757805182526020820191506020810190506020830392506113a2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff166001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561147757600080fd5b505af115801561148b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1684600019163373ffffffffffffffffffffffffffffffffffffffff167fadd7c8d34ea3b815721e4441e9d375f523912507ae885dfabba0d2e892ca350c866040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561152757808201518184015260208101905061150c565b505050509050019250505060405180910390a4600190509392505050565b606061155082610c09565b15156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b60208310151561170857805182526020820191506020810190506020830392506116e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156117cd57600080fd5b8101908080516401000000008111156117e557600080fd5b828101905060208101848111156117fb57600080fd5b815185602082028301116401000000008211171561181857600080fd5b50509291905050509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061185883610c09565b15156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118fc8383614fc6565b1515611996576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4572726f723a2050726f766964657220506172616d65746572206973206e6f7481526020017f2079657420696e697469616c697a65640000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c031a180848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611ac45780518252602082019150602081019050602083039250611a9f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b8957600080fd5b810190808051640100000000811115611ba157600080fd5b82810190506020810184811115611bb757600080fd5b8151856001820283011164010000000082111715611bd457600080fd5b5050929190505050905092915050565b6000611bef8261273a565b9050919050565b6000611c0182614467565b9050919050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a21a65ae858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611d395780518252602082019150602081019050602083039250611d14565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505050506040513d6020811015611dea57600080fd5b810190808051906020019092919050505014905092915050565b611e0d33610c09565b1515611ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611eb13383614fc6565b151561225b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611fe55780518252602082019150602081019050602083039250611fc0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060016040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b6020831015156121ab5780518252602082019150602081019050602083039250612186565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561224257600080fd5b505af1158015612256573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e28d084338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156123895780518252602082019150602081019050602083039250612364565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612430578082015181840152602081019050612415565b50505050905090810190601f16801561245d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b505050505050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635948f73360405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b60208310151561254e5780518252602082019150602081019050602083039250612529565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561261357600080fd5b81019080805164010000000081111561262b57600080fd5b8281019050602081018481111561264157600080fd5b815185602082028301116401000000008211171561265e57600080fd5b5050929190505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a20436f6f7264696e61746f72204f6e6c792046756e6374696f6e81525060200191505060405180910390fd5b6127386151d6565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d648360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b60208310151561285a5780518252602082019150602081019050602083039250612835565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156128e157600080fd5b505af11580156128f5573d6000803e3d6000fd5b505050506040513d602081101561290b57600080fd5b81019080805190602001909291905050509050919050565b600061292f8383611c08565b1515156129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad25780518252602082019150602081019050602083039250612aad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b9757600080fd5b810190808051640100000000811115612baf57600080fd5b82810190506020810184811115612bc557600080fd5b8151856020820283011164010000000082111715612be257600080fd5b505092919050505051905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000612c2833610c09565b1515612c9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64338760405160200180807f746f74616c426f756e6400000000000000000000000000000000000000000000815250600a018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612da25780518252602082019150602081019050602083039250612d7d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612e2957600080fd5b505af1158015612e3d573d6000803e3d6000fd5b505050506040513d6020811015612e5357600080fd5b81019080805190602001909291905050509350600084141515612f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f723a20456e64706f696e74206d7573742068617665206e6f20626f6e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000604051908082528060200260200182016040528015612f345781602001602082028038833980820191505090505b509250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b3360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156130555780518252602082019150602081019050602083039250613030565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561311a57600080fd5b81019080805164010000000081111561313257600080fd5b8281019050602081018481111561314857600080fd5b815185602082028301116401000000008211171561316557600080fd5b50509291905050509150600090505b815181101561338f578460001916828281518110151561319057fe5b9060200190602002015160001916141561338257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a4f63ec83360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156132c2578051825260208201915060208101905060208303925061329d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208360006001026040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183815260200182600019166000191681526020019350505050600060405180830381600087803b15801561336557600080fd5b505af1158015613379573d6000803e3d6000fd5b5050505061338f565b8080600101915050613174565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156134ad5780518252602082019150602081019050602083039250613488565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561354857600080fd5b505af115801561355c573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b60208310151561368e5780518252602082019150602081019050602083039250613669565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561372957600080fd5b505af115801561373d573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561386f578051825260208201915060208101905060208303925061384a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156139195780820151818401526020810190506138fe565b505050509050019350505050600060405180830381600087803b15801561393f57600080fd5b505af1158015613953573d6000803e3d6000fd5b505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16e934060405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b602083101515613a1357805182526020820191506020810190506020830392506139ee565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b158015613aa257600080fd5b505af1158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b81019080805190602001909291905050509050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b602083101515613c145780518252602082019150602081019050602083039250613bef565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613c9b57600080fd5b505af1158015613caf573d6000803e3d6000fd5b505050506040513d6020811015613cc557600080fd5b810190808051906020019092919050505060019004905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d3d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e975780518252602082019150602081019050602083039250613e72565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015613f1e57600080fd5b505af1158015613f32573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015613f5c57600080fd5b810190808051640100000000811115613f7457600080fd5b82810190506020810184811115613f8a57600080fd5b8151856020820283011164010000000082111715613fa757600080fd5b50509291905050509050919050565b6000613fc133610c09565b15151561405c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f766964657220697320616c726561647920696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61406733848461531b565b614070336156b2565b81600019163373ffffffffffffffffffffffffffffffffffffffff167f96c4fc31a3e383225857c821101daf68248108597da8ddde0ac2b431eb9a16be60405160405180910390a36001905092915050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156141f257805182526020820191506020810190506020830392506141cd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561427957600080fd5b505af115801561428d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156142b757600080fd5b8101908080516401000000008111156142cf57600080fd5b828101905060208101848111156142e557600080fd5b815185602082028301116401000000008211171561430257600080fd5b5050929190505050905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561436d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156143a957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156145875780518252602082019150602081019050602083039250614562565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561460e57600080fd5b505af1158015614622573d6000803e3d6000fd5b505050506040513d602081101561463857600080fd5b81019080805190602001909291905050509050919050565b61465933610c09565b15156146cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db083360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156147eb57805182526020820191506020810190506020830392506147c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561488257600080fd5b505af1158015614896573d6000803e3d6000fd5b5050505050565b6148a633610c09565b1515614940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f616c697a6564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61494a3383611c08565b1515156149bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e5cf2e338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614aed5780518252602082019150602081019050602083039250614ac8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614b97578082015181840152602081019050614b7c565b505050509050019350505050600060405180830381600087803b158015614bbd57600080fd5b505af1158015614bd1573d6000803e3d6000fd5b505050505050565b600080600080600060019450600093505b8551841015614da6578584815181101515614c0157fe5b906020019060200201519250600083131515614c85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b6001838501019150855182101515614d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8582815181101515614d1357fe5b9060200190602002015190508481111515614d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8094506002830184019350614bea565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b898960405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614ed45780518252602082019150602081019050602083039250614eaf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614f7e578082015181840152602081019050614f63565b505050509050019350505050600060405180830381600087803b158015614fa457600080fd5b505af1158015614fb8573d6000803e3d6000fd5b505050505050505050505050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156150f757805182526020820191506020810190506020830392506150d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561517e57600080fd5b505af1158015615192573d6000803e3d6000fd5b505050506040513d60208110156151a857600080fd5b81019080805190602001909291905050509050600181146151ca5760006151cd565b60015b91505092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663358177736040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825260088152602001807f4441544142415345000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b15801561529a57600080fd5b505af11580156152ae573d6000803e3d6000fd5b505050506040513d60208110156152c457600080fd5b8101908080519060200190929190505050905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db8460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156154395780518252602082019150602081019050602083039250615414565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156154c857600080fd5b505af11580156154dc573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db088460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156155fe57805182526020820191506020810190506020830392506155d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561569557600080fd5b505af11580156156a9573d6000803e3d6000fd5b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd151d1e60405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b6020831015156157655780518252602082019150602081019050602083039250615740565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561582057600080fd5b505af1158015615834573d6000803e3d6000fd5b50505050505600a165627a7a7230582040e6b900ae9f12e1ac21fe1e31f46c4faf531c524e11e552c642825cbc44759c0029000000000000000000000000b007eca49763f31edff95623ed6c23c8c1924a16
Deployed Bytecode
0x608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063186b79c9146101595780632316a9ff146101b4578063238b3aed1461025a578063275601f6146103065780634d655aff1461039e5780634d9bcac4146103f55780634ff6e86e146104bf5780635481f43e1461051657806354a365df146105755780635750644a146105de57806365a6bb29146106555780636e5ecdff146106c1578063857cdbb8146106d857806387cd29a41461072f5780638da5cb5b146107945780638dc8d32b146107eb5780639217c4381461081c5780639c39c8ea146108895780639cb8a26a1461091a578063a72460d114610931578063af87c833146109c9578063e95d618214610a1c578063f2fde38b14610ac2578063f51d7d5f14610b05578063f5d1d29914610b64578063fcf0c24814610b95575b600080fd5b34801561016557600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c09565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b50610203600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610c25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561024657808201518184015260208101905061022b565b505050509050019250505060405180910390f35b34801561026657600080fd5b506102ec600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808215151515815260200191505060405180910390f35b34801561031257600080fd5b50610347600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611545565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038a57808201518184015260208101905061036f565b505050509050019250505060405180910390f35b3480156103aa57600080fd5b506103b3611827565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040157600080fd5b50610444600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505061184d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610484578082015181840152602081019050610469565b50505050905090810190601f1680156104b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cb57600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be4565b6040518082815260200191505060405180910390f35b34801561052257600080fd5b50610557600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf6565b60405180826000191660001916815260200191505060405180910390f35b34801561058157600080fd5b506105c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c08565b604051808215151515815260200191505060405180910390f35b3480156105ea57600080fd5b506106536004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e04565b005b34801561066157600080fd5b5061066a612499565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106ad578082015181840152602081019050610692565b505050509050019250505060405180910390f35b3480156106cd57600080fd5b506106d661266b565b005b3480156106e457600080fd5b50610719600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061273a565b6040518082815260200191505060405180910390f35b34801561073b57600080fd5b5061077e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050612923565b6040518082815260200191505060405180910390f35b3480156107a057600080fd5b506107a9612bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107f757600080fd5b5061081a6004803603810190808035600019169060200190929190505050612c18565b005b34801561082857600080fd5b506108476004803603810190808035906020019092919050505061395e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089557600080fd5b506108d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050613ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092657600080fd5b5061092f613ce2565b005b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d77565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b557808201518184015260208101905061099a565b505050509050019250505060405180910390f35b3480156109d557600080fd5b50610a02600480360381019080803590602001909291908035600019169060200190929190505050613fb6565b604051808215151515815260200191505060405180910390f35b348015610a2857600080fd5b50610a6b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506140c2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610aae578082015181840152602081019050610a93565b505050509050019250505060405180910390f35b348015610ace57600080fd5b50610b03600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614312565b005b348015610b1157600080fd5b50610b46600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614467565b60405180826000191660001916815260200191505060405180910390f35b348015610b7057600080fd5b50610b936004803603810190808035600019169060200190929190505050614650565b005b348015610ba157600080fd5b50610c0760048036038101908080356000191690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061489d565b005b600080600102610c1883611bf6565b6000191614159050919050565b6060610c318383611c08565b151515610ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515610dd45780518252602082019150602081019050602083039250610daf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015610e9957600080fd5b810190808051640100000000811115610eb157600080fd5b82810190506020810184811115610ec757600080fd5b8151856020820283011164010000000082111715610ee457600080fd5b5050929190505050905092915050565b6000610eff33610c09565b1515610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610fa33385611c08565b1515611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a20437572766520697320616c726561647920736574000000000081525060200191505060405180910390fd5b6000600102600019168460001916141515156110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4572726f723a2043616e277420696e697469617465206e756c6c20656e64706f81526020017f696e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6110cc338585614bd9565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156111ea57805182526020820191506020810190506020830392506111c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338660405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b6020831015156113c757805182526020820191506020810190506020830392506113a2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff166001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561147757600080fd5b505af115801561148b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1684600019163373ffffffffffffffffffffffffffffffffffffffff167fadd7c8d34ea3b815721e4441e9d375f523912507ae885dfabba0d2e892ca350c866040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561152757808201518184015260208101905061150c565b505050509050019250505060405180910390a4600190509392505050565b606061155082610c09565b15156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b60208310151561170857805182526020820191506020810190506020830392506116e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156117cd57600080fd5b8101908080516401000000008111156117e557600080fd5b828101905060208101848111156117fb57600080fd5b815185602082028301116401000000008211171561181857600080fd5b50509291905050509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061185883610c09565b15156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118fc8383614fc6565b1515611996576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4572726f723a2050726f766964657220506172616d65746572206973206e6f7481526020017f2079657420696e697469616c697a65640000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c031a180848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611ac45780518252602082019150602081019050602083039250611a9f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b8957600080fd5b810190808051640100000000811115611ba157600080fd5b82810190506020810184811115611bb757600080fd5b8151856001820283011164010000000082111715611bd457600080fd5b5050929190505050905092915050565b6000611bef8261273a565b9050919050565b6000611c0182614467565b9050919050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a21a65ae858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611d395780518252602082019150602081019050602083039250611d14565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505050506040513d6020811015611dea57600080fd5b810190808051906020019092919050505014905092915050565b611e0d33610c09565b1515611ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611eb13383614fc6565b151561225b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611fe55780518252602082019150602081019050602083039250611fc0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060016040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b6020831015156121ab5780518252602082019150602081019050602083039250612186565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561224257600080fd5b505af1158015612256573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e28d084338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156123895780518252602082019150602081019050602083039250612364565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612430578082015181840152602081019050612415565b50505050905090810190601f16801561245d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b505050505050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635948f73360405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b60208310151561254e5780518252602082019150602081019050602083039250612529565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561261357600080fd5b81019080805164010000000081111561262b57600080fd5b8281019050602081018481111561264157600080fd5b815185602082028301116401000000008211171561265e57600080fd5b5050929190505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a20436f6f7264696e61746f72204f6e6c792046756e6374696f6e81525060200191505060405180910390fd5b6127386151d6565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d648360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b60208310151561285a5780518252602082019150602081019050602083039250612835565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156128e157600080fd5b505af11580156128f5573d6000803e3d6000fd5b505050506040513d602081101561290b57600080fd5b81019080805190602001909291905050509050919050565b600061292f8383611c08565b1515156129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad25780518252602082019150602081019050602083039250612aad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b9757600080fd5b810190808051640100000000811115612baf57600080fd5b82810190506020810184811115612bc557600080fd5b8151856020820283011164010000000082111715612be257600080fd5b505092919050505051905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000612c2833610c09565b1515612c9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64338760405160200180807f746f74616c426f756e6400000000000000000000000000000000000000000000815250600a018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612da25780518252602082019150602081019050602083039250612d7d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612e2957600080fd5b505af1158015612e3d573d6000803e3d6000fd5b505050506040513d6020811015612e5357600080fd5b81019080805190602001909291905050509350600084141515612f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f723a20456e64706f696e74206d7573742068617665206e6f20626f6e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000604051908082528060200260200182016040528015612f345781602001602082028038833980820191505090505b509250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b3360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156130555780518252602082019150602081019050602083039250613030565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561311a57600080fd5b81019080805164010000000081111561313257600080fd5b8281019050602081018481111561314857600080fd5b815185602082028301116401000000008211171561316557600080fd5b50509291905050509150600090505b815181101561338f578460001916828281518110151561319057fe5b9060200190602002015160001916141561338257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a4f63ec83360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156132c2578051825260208201915060208101905060208303925061329d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208360006001026040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183815260200182600019166000191681526020019350505050600060405180830381600087803b15801561336557600080fd5b505af1158015613379573d6000803e3d6000fd5b5050505061338f565b8080600101915050613174565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156134ad5780518252602082019150602081019050602083039250613488565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561354857600080fd5b505af115801561355c573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b60208310151561368e5780518252602082019150602081019050602083039250613669565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561372957600080fd5b505af115801561373d573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561386f578051825260208201915060208101905060208303925061384a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156139195780820151818401526020810190506138fe565b505050509050019350505050600060405180830381600087803b15801561393f57600080fd5b505af1158015613953573d6000803e3d6000fd5b505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16e934060405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b602083101515613a1357805182526020820191506020810190506020830392506139ee565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b158015613aa257600080fd5b505af1158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b81019080805190602001909291905050509050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b602083101515613c145780518252602082019150602081019050602083039250613bef565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613c9b57600080fd5b505af1158015613caf573d6000803e3d6000fd5b505050506040513d6020811015613cc557600080fd5b810190808051906020019092919050505060019004905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d3d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e975780518252602082019150602081019050602083039250613e72565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015613f1e57600080fd5b505af1158015613f32573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015613f5c57600080fd5b810190808051640100000000811115613f7457600080fd5b82810190506020810184811115613f8a57600080fd5b8151856020820283011164010000000082111715613fa757600080fd5b50509291905050509050919050565b6000613fc133610c09565b15151561405c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f766964657220697320616c726561647920696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61406733848461531b565b614070336156b2565b81600019163373ffffffffffffffffffffffffffffffffffffffff167f96c4fc31a3e383225857c821101daf68248108597da8ddde0ac2b431eb9a16be60405160405180910390a36001905092915050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156141f257805182526020820191506020810190506020830392506141cd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561427957600080fd5b505af115801561428d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156142b757600080fd5b8101908080516401000000008111156142cf57600080fd5b828101905060208101848111156142e557600080fd5b815185602082028301116401000000008211171561430257600080fd5b5050929190505050905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561436d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156143a957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156145875780518252602082019150602081019050602083039250614562565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561460e57600080fd5b505af1158015614622573d6000803e3d6000fd5b505050506040513d602081101561463857600080fd5b81019080805190602001909291905050509050919050565b61465933610c09565b15156146cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db083360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156147eb57805182526020820191506020810190506020830392506147c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561488257600080fd5b505af1158015614896573d6000803e3d6000fd5b5050505050565b6148a633610c09565b1515614940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f616c697a6564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61494a3383611c08565b1515156149bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e5cf2e338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614aed5780518252602082019150602081019050602083039250614ac8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614b97578082015181840152602081019050614b7c565b505050509050019350505050600060405180830381600087803b158015614bbd57600080fd5b505af1158015614bd1573d6000803e3d6000fd5b505050505050565b600080600080600060019450600093505b8551841015614da6578584815181101515614c0157fe5b906020019060200201519250600083131515614c85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b6001838501019150855182101515614d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8582815181101515614d1357fe5b9060200190602002015190508481111515614d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8094506002830184019350614bea565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b898960405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614ed45780518252602082019150602081019050602083039250614eaf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614f7e578082015181840152602081019050614f63565b505050509050019350505050600060405180830381600087803b158015614fa457600080fd5b505af1158015614fb8573d6000803e3d6000fd5b505050505050505050505050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156150f757805182526020820191506020810190506020830392506150d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561517e57600080fd5b505af1158015615192573d6000803e3d6000fd5b505050506040513d60208110156151a857600080fd5b81019080805190602001909291905050509050600181146151ca5760006151cd565b60015b91505092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663358177736040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825260088152602001807f4441544142415345000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b15801561529a57600080fd5b505af11580156152ae573d6000803e3d6000fd5b505050506040513d60208110156152c457600080fd5b8101908080519060200190929190505050905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db8460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156154395780518252602082019150602081019050602083039250615414565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156154c857600080fd5b505af11580156154dc573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db088460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156155fe57805182526020820191506020810190506020830392506155d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561569557600080fd5b505af11580156156a9573d6000803e3d6000fd5b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd151d1e60405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b6020831015156157655780518252602082019150602081019050602083039250615740565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561582057600080fd5b505af1158015615834573d6000803e3d6000fd5b50505050505600a165627a7a7230582040e6b900ae9f12e1ac21fe1e31f46c4faf531c524e11e552c642825cbc44759c0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b007eca49763f31edff95623ed6c23c8c1924a16
-----Decoded View---------------
Arg [0] : c (address): 0xb007eca49763f31EDfF95623Ed6C23C8C1924a16
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b007eca49763f31edff95623ed6c23c8c1924a16
Swarm Source
bzzr://40e6b900ae9f12e1ac21fe1e31f46c4faf531c524e11e552c642825cbc44759c
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.