Change Network

Use the search box to find a hosted network, or select from the list of available networks below.

All
Mainnet
Testnet
Favorites
No content.

Contract Address Details

0xCe9B9788CC009071dee9CcBc805d0089B3B74Cd7

RewardByBlock >= 0 Incoming Transactions Last Balance Update: Block #9399749
Created by 0x48a1–21d69f at 0x45dd–4eda08

Balance

0 POA

(@ /POA)

Fetching tokens...

Contract name:
RewardByBlock




Optimization enabled
true
Compiler version
v0.4.24+commit.e67f0147





Contract source code

pragma solidity ^0.4.24;
/**
* @title EternalStorage
* @dev This contract holds all the necessary state variables to carry out the storage of any contract
* and to support the upgrade functionality.
*/
contract EternalStorage {
// Version number of the current implementation
uint256 internal _version;
// Address of the current implementation
address internal _implementation;
// Storage mappings
mapping(bytes32 => uint256) internal uintStorage;
mapping(bytes32 => string) internal stringStorage;
mapping(bytes32 => address) internal addressStorage;
mapping(bytes32 => bytes) internal bytesStorage;
mapping(bytes32 => bool) internal boolStorage;
mapping(bytes32 => int256) internal intStorage;
mapping(bytes32 => bytes32) internal bytes32Storage;
mapping(bytes32 => uint256[]) internal uintArrayStorage;
mapping(bytes32 => string[]) internal stringArrayStorage;
mapping(bytes32 => address[]) internal addressArrayStorage;
//mapping(bytes32 => bytes[]) internal bytesArrayStorage;
mapping(bytes32 => bool[]) internal boolArrayStorage;
mapping(bytes32 => int256[]) internal intArrayStorage;
mapping(bytes32 => bytes32[]) internal bytes32ArrayStorage;
}
interface IProxyStorage {
function initializeAddresses(
address, address, address, address, address, address, address, address
) external;
function setContractAddress(uint256, address) external returns(bool);
function getBallotsStorage() external view returns(address);
function getKeysManager() external view returns(address);
function getPoaConsensus() external view returns(address);
function getValidatorMetadata() external view returns(address);
function getVotingToChangeKeys() external view returns(address);
function getVotingToChangeMinThreshold() external view returns(address);
}
interface IKeysManager {
function addMiningKey(address) external returns(bool);
function addVotingKey(address, address) external returns(bool);
function addPayoutKey(address, address) external returns(bool);
function createKeys(address, address, address) external;
function initiateKeys(address) external;
function migrateInitialKey(address) external;
function migrateMiningKey(address) external;
function removeMiningKey(address) external returns(bool);
function removeVotingKey(address) external returns(bool);
function removePayoutKey(address) external returns(bool);
function swapMiningKey(address, address) external returns(bool);
function swapVotingKey(address, address) external returns(bool);
function swapPayoutKey(address, address) external returns(bool);
function checkIfMiningExisted(address, address) external view returns(bool);
function initialKeysCount() external view returns(uint256);
function isMiningActive(address) external view returns(bool);
function isVotingActive(address) external view returns(bool);
function isPayoutActive(address) external view returns(bool);
function getVotingByMining(address) external view returns(address);
function getPayoutByMining(address) external view returns(address);
function getTime() external view returns(uint256);
function getMiningKeyHistory(address) external view returns(address);
function getMiningKeyByVoting(address) external view returns(address);
function getInitialKeyStatus(address) external view returns(uint256);
function masterOfCeremony() external view returns(address);
function maxOldMiningKeysDeepCheck() external pure returns(uint256);
function miningKeyByPayout(address) external view returns(address);
function miningKeyByVoting(address) external view returns(address);
}
interface IKeysManagerPrev {
function getInitialKey(address) external view returns(uint8);
}
interface IRewardByBlock {
// Produce rewards for the given benefactors, with corresponding reward codes.
// Only callable by `SYSTEM_ADDRESS`
function reward(address[], uint16[]) external returns (address[], uint256[]);
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns(uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns(uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns(uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns(uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract RewardByBlock is EternalStorage, IRewardByBlock {
using SafeMath for uint256;
bytes32 internal constant EXTRA_RECEIVERS = keccak256("extraReceivers");
bytes32 internal constant PROXY_STORAGE = keccak256("proxyStorage");
bytes32 internal constant MINTED_TOTALLY = keccak256("mintedTotally");
bytes32 internal constant BRIDGE_AMOUNT = "bridgeAmount";
bytes32 internal constant EXTRA_RECEIVER_AMOUNT = "extraReceiverAmount";
bytes32 internal constant MINTED_FOR_ACCOUNT = "mintedForAccount";
bytes32 internal constant MINTED_FOR_ACCOUNT_IN_BLOCK = "mintedForAccountInBlock";
bytes32 internal constant MINTED_IN_BLOCK = "mintedInBlock";
bytes32 internal constant MINTED_TOTALLY_BY_BRIDGE = "mintedTotallyByBridge";
// solhint-disable const-name-snakecase
// These values must be changed before deploy
uint256 public constant blockRewardAmount = 1 ether;
uint256 public constant emissionFundsAmount = 1 ether;
address public constant emissionFunds = 0x548806F2215F44571431292F2314480c3F519044;
uint256 public constant bridgesAllowedLength = 3;
// solhint-enable const-name-snakecase
event AddedReceiver(uint256 amount, address indexed receiver, address indexed bridge);
event Rewarded(address[] receivers, uint256[] rewards);
modifier onlyBridgeContract {
require(_isBridgeContract(msg.sender));
_;
}
modifier onlySystem {
require(msg.sender == 0xffffFFFfFFffffffffffffffFfFFFfffFFFfFFfE);
_;
}
function addExtraReceiver(uint256 _amount, address _receiver)
external
onlyBridgeContract
{
require(_amount != 0);
require(_receiver != address(0));
uint256 oldAmount = extraReceiverAmount(_receiver);
if (oldAmount == 0) {
_addExtraReceiver(_receiver);
}
_setExtraReceiverAmount(oldAmount.add(_amount), _receiver);
_setBridgeAmount(bridgeAmount(msg.sender).add(_amount), msg.sender);
emit AddedReceiver(_amount, _receiver, msg.sender);
}
function reward(address[] benefactors, uint16[] kind)
external
onlySystem
returns (address[], uint256[])
{
require(benefactors.length == kind.length);
require(benefactors.length == 1);
require(kind[0] == 0);
address miningKey = benefactors[0];
require(_isMiningActive(miningKey));
uint256 extraLength = extraReceiversLength();
address[] memory receivers = new address[](extraLength.add(2));
uint256[] memory rewards = new uint256[](receivers.length);
receivers[0] = _getPayoutByMining(miningKey);
rewards[0] = blockRewardAmount;
receivers[1] = emissionFunds;
rewards[1] = emissionFundsAmount;
uint256 i;
for (i = 0; i < extraLength; i++) {
address extraAddress = extraReceiverByIndex(i);
uint256 extraAmount = extraReceiverAmount(extraAddress);
_setExtraReceiverAmount(0, extraAddress);
receivers[i.add(2)] = extraAddress;
rewards[i.add(2)] = extraAmount;
}
for (i = 0; i < receivers.length; i++) {
_setMinted(rewards[i], receivers[i]);
}
for (i = 0; i < bridgesAllowedLength; i++) {
address bridgeAddress = bridgesAllowed()[i];
uint256 bridgeAmountForBlock = bridgeAmount(bridgeAddress);
if (bridgeAmountForBlock > 0) {
_setBridgeAmount(0, bridgeAddress);
_addMintedTotallyByBridge(bridgeAmountForBlock, bridgeAddress);
}
}
_clearExtraReceivers();
emit Rewarded(receivers, rewards);
return (receivers, rewards);
}
function bridgesAllowed() public pure returns(address[bridgesAllowedLength]) {
// These values must be changed before deploy
return([
address(0x0000000000000000000000000000000000000000),
address(0x0000000000000000000000000000000000000000),
address(0x0000000000000000000000000000000000000000)
]);
}
function bridgeAmount(address _bridge) public view returns(uint256) {
return uintStorage[
keccak256(abi.encode(BRIDGE_AMOUNT, _bridge))
];
}
function extraReceiverByIndex(uint256 _index) public view returns(address) {
return addressArrayStorage[EXTRA_RECEIVERS][_index];
}
function extraReceiverAmount(address _receiver) public view returns(uint256) {
return uintStorage[
keccak256(abi.encode(EXTRA_RECEIVER_AMOUNT, _receiver))
];
}
function extraReceiversLength() public view returns(uint256) {
return addressArrayStorage[EXTRA_RECEIVERS].length;
}
function mintedForAccount(address _account)
public
view
returns(uint256)
{
return uintStorage[
keccak256(abi.encode(MINTED_FOR_ACCOUNT, _account))
];
}
function mintedForAccountInBlock(address _account, uint256 _blockNumber)
public
view
returns(uint256)
{
return uintStorage[
keccak256(abi.encode(MINTED_FOR_ACCOUNT_IN_BLOCK, _account, _blockNumber))
];
}
function mintedInBlock(uint256 _blockNumber) public view returns(uint256) {
return uintStorage[
keccak256(abi.encode(MINTED_IN_BLOCK, _blockNumber))
];
}
function mintedTotally() public view returns(uint256) {
return uintStorage[MINTED_TOTALLY];
}
function mintedTotallyByBridge(address _bridge) public view returns(uint256) {
return uintStorage[
keccak256(abi.encode(MINTED_TOTALLY_BY_BRIDGE, _bridge))
];
}
function proxyStorage() public view returns(address) {
return addressStorage[PROXY_STORAGE];
}
function _addExtraReceiver(address _receiver) private {
addressArrayStorage[EXTRA_RECEIVERS].push(_receiver);
}
function _addMintedTotallyByBridge(uint256 _amount, address _bridge) private {
bytes32 hash = keccak256(abi.encode(MINTED_TOTALLY_BY_BRIDGE, _bridge));
uintStorage[hash] = uintStorage[hash].add(_amount);
}
function _clearExtraReceivers() private {
addressArrayStorage[EXTRA_RECEIVERS].length = 0;
}
function _getPayoutByMining(address _miningKey)
private
view
returns (address)
{
IKeysManager keysManager = IKeysManager(
IProxyStorage(proxyStorage()).getKeysManager()
);
address payoutKey = keysManager.getPayoutByMining(_miningKey);
return (payoutKey != address(0)) ? payoutKey : _miningKey;
}
function _isBridgeContract(address _addr) private pure returns(bool) {
address[bridgesAllowedLength] memory bridges = bridgesAllowed();
for (uint256 i = 0; i < bridges.length; i++) {
if (_addr == bridges[i]) {
return true;
}
}
return false;
}
function _isMiningActive(address _miningKey)
private
view
returns (bool)
{
IKeysManager keysManager = IKeysManager(
IProxyStorage(proxyStorage()).getKeysManager()
);
return keysManager.isMiningActive(_miningKey);
}
function _setBridgeAmount(uint256 _amount, address _bridge) private {
uintStorage[
keccak256(abi.encode(BRIDGE_AMOUNT, _bridge))
] = _amount;
}
function _setExtraReceiverAmount(uint256 _amount, address _receiver) private {
uintStorage[
keccak256(abi.encode(EXTRA_RECEIVER_AMOUNT, _receiver))
] = _amount;
}
function _setMinted(uint256 _amount, address _account) private {
bytes32 hash;
hash = keccak256(abi.encode(MINTED_FOR_ACCOUNT_IN_BLOCK, _account, block.number));
uintStorage[hash] = _amount;
hash = keccak256(abi.encode(MINTED_FOR_ACCOUNT, _account));
uintStorage[hash] = uintStorage[hash].add(_amount);
hash = keccak256(abi.encode(MINTED_IN_BLOCK, block.number));
uintStorage[hash] = uintStorage[hash].add(_amount);
hash = MINTED_TOTALLY;
uintStorage[hash] = uintStorage[hash].add(_amount);
}
}

Contract ABI

[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"extraReceiverAmount","inputs":[{"type":"address","name":"_receiver"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"bridgesAllowedLength","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"emissionFunds","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"blockRewardAmount","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"mintedForAccountInBlock","inputs":[{"type":"address","name":"_account"},{"type":"uint256","name":"_blockNumber"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"mintedForAccount","inputs":[{"type":"address","name":"_account"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"mintedInBlock","inputs":[{"type":"uint256","name":"_blockNumber"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"mintedTotally","inputs":[],"constant":true},{"type":"function","stateMutability":"pure","payable":false,"outputs":[{"type":"address[3]","name":""}],"name":"bridgesAllowed","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"addExtraReceiver","inputs":[{"type":"uint256","name":"_amount"},{"type":"address","name":"_receiver"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"proxyStorage","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"mintedTotallyByBridge","inputs":[{"type":"address","name":"_bridge"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"extraReceiverByIndex","inputs":[{"type":"uint256","name":"_index"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"bridgeAmount","inputs":[{"type":"address","name":"_bridge"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"emissionFundsAmount","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"extraReceiversLength","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"address[]","name":""},{"type":"uint256[]","name":""}],"name":"reward","inputs":[{"type":"address[]","name":"benefactors"},{"type":"uint16[]","name":"kind"}],"constant":false},{"type":"event","name":"AddedReceiver","inputs":[{"type":"uint256","name":"amount","indexed":false},{"type":"address","name":"receiver","indexed":true},{"type":"address","name":"bridge","indexed":true}],"anonymous":false},{"type":"event","name":"Rewarded","inputs":[{"type":"address[]","name":"receivers","indexed":false},{"type":"uint256[]","name":"rewards","indexed":false}],"anonymous":false}]
            

Contract Byte Code

0x6080604052600436106100d75763ffffffff60e060020a6000350416630f3a053381146100dc57806310f2ee7c1461010f5780631f4356e41461012457806326cc22561461015557806330f6eb161461016a5780633d84b8c11461018e5780634476d66a146101af578063553a5c85146101c7578063899ca7fc146101dc578063aa9fa27414610229578063ae4b1b5b1461024f578063b4a523e814610264578063db456f7714610285578063e73b9e2f1461029d578063ee8d75ff14610155578063efdc4d01146102be578063f91c2898146102d3575b600080fd5b3480156100e857600080fd5b506100fd600160a060020a0360043516610398565b60408051918252519081900360200190f35b34801561011b57600080fd5b506100fd61045b565b34801561013057600080fd5b50610139610460565b60408051600160a060020a039092168252519081900360200190f35b34801561016157600080fd5b506100fd610478565b34801561017657600080fd5b506100fd600160a060020a0360043516602435610484565b34801561019a57600080fd5b506100fd600160a060020a0360043516610551565b3480156101bb57600080fd5b506100fd6004356105d2565b3480156101d357600080fd5b506100fd61064b565b3480156101e857600080fd5b506101f161068d565b6040518082606080838360005b838110156102165781810151838201526020016101fe565b5050505090500191505060405180910390f35b34801561023557600080fd5b5061024d600435600160a060020a03602435166106b6565b005b34801561025b57600080fd5b50610139610788565b34801561027057600080fd5b506100fd600160a060020a03600435166107d2565b34801561029157600080fd5b50610139600435610853565b3480156102a957600080fd5b506100fd600160a060020a03600435166108a7565b3480156102ca57600080fd5b506100fd610928565b3480156102df57600080fd5b506102ff6024600480358281019290820135918135918201910135610957565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561034357818101518382015260200161032b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561038257818101518382015260200161036a565b5050505090500194505050505060405180910390f35b604080517f65787472615265636569766572416d6f756e7400000000000000000000000000602080830191909152600160a060020a0384168284015282518083038401815260609092019283905281516000936002938593909282918401908083835b6020831061041a5780518252601f1990920191602091820191016103fb565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b600381565b73548806f2215f44571431292f2314480c3f51904481565b670de0b6b3a764000081565b604080517f6d696e746564466f724163636f756e74496e426c6f636b000000000000000000602080830191909152600160a060020a0385168284015260608083018590528351808403909101815260809092019283905281516000936002938593909282918401908083835b6020831061050f5780518252601f1990920191602091820191016104f0565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020549695505050505050565b604080517f6d696e746564466f724163636f756e7400000000000000000000000000000000602080830191909152600160a060020a0384168284015282518083038401815260609092019283905281516000936002938593909282918401908083836020831061041a5780518252601f1990920191602091820191016103fb565b604080517f6d696e746564496e426c6f636b0000000000000000000000000000000000000060208083019190915281830184905282518083038401815260609092019283905281516000936002938593909282918401908083836020831061041a5780518252601f1990920191602091820191016103fb565b604080517f6d696e746564546f74616c6c79000000000000000000000000000000000000008152815190819003600d0190206000908152600260205220545b90565b610695611562565b50604080516060810182526000808252602082018190529181019190915290565b60006106c133610d39565b15156106cc57600080fd5b8215156106d857600080fd5b600160a060020a03821615156106ed57600080fd5b6106f682610398565b90508015156107085761070882610da4565b61072161071b828563ffffffff610e1016565b83610e26565b61074361073d84610731336108a7565b9063ffffffff610e1016565b33610eea565b6040805184815290513391600160a060020a038516917f3c798bbcf33115b42c728b8504cff11dd58736e9fa789f1cda2738db7d696b2a9181900360200190a3505050565b604080517f70726f787953746f7261676500000000000000000000000000000000000000008152815190819003600c019020600090815260046020522054600160a060020a031690565b604080517f6d696e746564546f74616c6c7942794272696467650000000000000000000000602080830191909152600160a060020a0384168284015282518083038401815260609092019283905281516000936002938593909282918401908083836020831061041a5780518252601f1990920191602091820191016103fb565b604080516000805160206115c98339815191528152815190819003600e0190206000908152600b60205290812080548390811061088c57fe5b600091825260209091200154600160a060020a031692915050565b604080517f627269646765416d6f756e740000000000000000000000000000000000000000602080830191909152600160a060020a0384168284015282518083038401815260609092019283905281516000936002938593909282918401908083836020831061041a5780518252601f1990920191602091820191016103fb565b604080516000805160206115c98339815191528152815190819003600e0190206000908152600b602052205490565b6060806000808280828080808073fffffffffffffffffffffffffffffffffffffffe331461098457600080fd5b8d8c1461099057600080fd5b60018e1461099d57600080fd5b8c8c60008181106109aa57fe5b9050602002013561ffff1661ffff1660001415156109c757600080fd5b8e8e60008181106109d457fe5b90506020020135600160a060020a031698506109ef89610f6b565b15156109fa57600080fd5b610a02610928565b9750610a1588600263ffffffff610e1016565b604051908082528060200260200182016040528015610a3e578160200160208202803883390190505b5096508651604051908082528060200260200182016040528015610a6c578160200160208202803883390190505b509550610a788961107a565b876000815181101515610a8757fe5b600160a060020a039092166020928302909101909101528551670de0b6b3a76400009087906000908110610ab757fe5b60209081029091010152865173548806f2215f44571431292f2314480c3f5190449088906001908110610ae657fe5b600160a060020a039092166020928302909101909101528551670de0b6b3a76400009087906001908110610b1657fe5b60209081029091010152600094505b87851015610bb457610b3685610853565b9350610b4184610398565b9250610b4e600085610e26565b8387610b6187600263ffffffff610e1016565b81518110610b6b57fe5b600160a060020a039092166020928302909101909101528286610b9587600263ffffffff610e1016565b81518110610b9f57fe5b60209081029091010152600190940193610b25565b600094505b8651851015610c0557610bfa8686815181101515610bd357fe5b906020019060200201518887815181101515610beb57fe5b906020019060200201516111a6565b600190940193610bb9565b600094505b6003851015610c6157610c1b61068d565b8560038110610c2657fe5b60200201519150610c36826108a7565b90506000811115610c5657610c4c600083610eea565b610c568183611462565b600190940193610c0a565b610c69611528565b7fb747d4e9a0b39cc47496d84b42e4066ba8b8a0b89776528bcec4ac2997e224538787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cd0578181015183820152602001610cb8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610d0f578181015183820152602001610cf7565b5050505090500194505050505060405180910390a150949d939c50929a5050505050505050505050565b6000610d43611562565b6000610d4d61068d565b9150600090505b6003811015610d9857818160038110610d6957fe5b6020020151600160a060020a031684600160a060020a03161415610d905760019250610d9d565b600101610d54565b600092505b5050919050565b604080516000805160206115c98339815191528152815190819003600e0190206000908152600b60209081529181208054600181018255908252919020018054600160a060020a0390921673ffffffffffffffffffffffffffffffffffffffff19909216919091179055565b600082820183811015610e1f57fe5b9392505050565b604080517f65787472615265636569766572416d6f756e7400000000000000000000000000602080830191909152600160a060020a0384168284015282518083038401815260609092019283905281518593600293600093909282918401908083835b60208310610ea85780518252601f199092019160209182019101610e89565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b604080517f627269646765416d6f756e740000000000000000000000000000000000000000602080830191909152600160a060020a03841682840152825180830384018152606090920192839052815185936002936000939092829184019080838360208310610ea85780518252601f199092019160209182019101610e89565b600080610f76610788565b600160a060020a0316639a5737866040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b5051604080517f9bc91c22000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152915192935090831691639bc91c22916024808201926020929091908290030181600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50519392505050565b6000806000611087610788565b600160a060020a0316639a5737866040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156110c457600080fd5b505af11580156110d8573d6000803e3d6000fd5b505050506040513d60208110156110ee57600080fd5b5051604080517f7cded930000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152915192945090841691637cded930916024808201926020929091908290030181600087803b15801561115857600080fd5b505af115801561116c573d6000803e3d6000fd5b505050506040513d602081101561118257600080fd5b50519050600160a060020a038116151561119c578361119e565b805b949350505050565b604080517f6d696e746564466f724163636f756e74496e426c6f636b000000000000000000602080830191909152600160a060020a0384168284015243606080840191909152835180840390910181526080909201928390528151600093918291908401908083835b6020831061122e5780518252601f19909201916020918201910161120f565b51815160209384036101000a6000190180199092169116179052604080519290940182900382206000818152600283528590208a90557f6d696e746564466f724163636f756e740000000000000000000000000000000083830152600160a060020a0389168386015284518084038601815260609093019485905282519097509195509293508392850191508083835b602083106112dd5780518252601f1990920191602091820191016112be565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526002909252929020549194506113269350909150859050610e10565b6000828152600260209081526040918290209290925580517f6d696e746564496e426c6f636b00000000000000000000000000000000000000818401524381830152815180820383018152606090910191829052805190928291908401908083835b602083106113a75780518252601f199092019160209182019101611388565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060008181526002909252929020549194506113f09350909150859050610e10565b60009182526002602081815260408085209390935582517f6d696e746564546f74616c6c79000000000000000000000000000000000000008152835190819003600d01902080855291905291205461144e908463ffffffff610e1016565b600091825260026020526040909120555050565b604080517f6d696e746564546f74616c6c7942794272696467650000000000000000000000602080830191909152600160a060020a038416828401528251808303840181526060909201928390528151600093918291908401908083835b602083106114df5780518252601f1990920191602091820191016114c0565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600081815260029092529290205491945061144e9350909150859050610e10565b604080516000805160206115c98339815191528152815190819003600e0190206000908152600b60205290812061155f9082611581565b50565b6060604051908101604052806003906020820280388339509192915050565b8154818355818111156115a5576000838152602090206115a59181019083016115aa565b505050565b61068a91905b808211156115c457600081556001016115b0565b509056006578747261526563656976657273000000000000000000000000000000000000a165627a7a7230582085a1b205e9a2daa030bc9a16254fa143d0062fe1b98a7ca7abd2c806bb460f0c0029