Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- UnirisToken
- Optimization enabled
- false
- Compiler version
- v0.5.8+commit.23d335f2
- EVM Version
- petersburg
- Verified at
- 2026-03-27T00:38:35.378491Z
Constructor Arguments
496e76616c69642064656c6976657261626c65732062656e65666963696172792061646472657373496e76616c6964206d61726b6574696e672062656e65666963696172792061646472657373526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373496e76616c69642066756e64696e6720706f6f6c2062656e65666963696172792061646472657373496e76616c696420666f756e646174696f6e2062656e65666963696172792061646472657373496e76616c6964206e6574776f726b20706f6f6c2062656e65666963696172792061646472657373496e76616c696420656e68616e63656d656e742062656e65666963696172792061646472657373496e76616c6964206578636820706f6f6c2062656e65666963696172792061646472657373000000000000000000000000c545528cb411aa971de48f5d375af27b685a7651000000000000000000000000ea9095614a40c34f2d6d62514a8b9305873e6763000000000000000000000000857ffe3a3f4d47c5459b215fd09ddd80ee0b2f00000000000000000000000000c3255e34f122f8e5ac055d308bf5898173212afc000000000000000000000000b4cf889f7f0c4de5c43dbb67c11b8f96b6cfbf910000000000000000000000002da4fddc9e610b1d5ae4340d20455d53c9481b12000000000000000000000000ebc52520ee81a0e87549ce193b3f5fc086eddc69000000000000000000000000a8b2134e17bd65427aea59d5b8aca22f3c181e97
Arg [0] (address) : 0x76657261626c65732062656e6566696369617279
Arg [1] (address) : 0x6c6964206d61726b6574696e672062656e656669
Arg [2] (address) : 0x73526f6c65733a206163636f756e742069732074
Arg [3] (address) : 0x657373496e76616c69642066756e64696e672070
Arg [4] (address) : 0x6172792061646472657373496e76616c69642066
Arg [5] (address) : 0x6e65666963696172792061646472657373496e76
Arg [6] (address) : 0x20706f6f6c2062656e6566696369617279206164
Arg [7] (address) : 0x20656e68616e63656d656e742062656e65666963
UnirisToken.sol
pragma solidity ^0.5.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract ERC20Detailed is IERC20 {
string private _name;
string private _symbol;
uint8 private _decimals;
constructor (string memory name, string memory symbol, uint8 decimals) public {
_name = name;
_symbol = symbol;
_decimals = decimals;
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
uint256 c = a / b;
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "SafeMath: modulo by zero");
return a % b;
}
}
contract ERC20 is IERC20 {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function allowance(address owner, address spender) public view returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 value) public returns (bool) {
_approve(msg.sender, spender, value);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) internal {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(amount);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 value) internal {
require(account != address(0), "ERC20: burn from the zero address");
_totalSupply = _totalSupply.sub(value);
_balances[account] = _balances[account].sub(value);
emit Transfer(account, address(0), value);
}
function _approve(address owner, address spender, uint256 value) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = value;
emit Approval(owner, spender, value);
}
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
}
}
library Roles {
struct Role {
mapping (address => bool) bearer;
}
function add(Role storage role, address account) internal {
require(!has(role, account), "Roles: account already has role");
role.bearer[account] = true;
}
function remove(Role storage role, address account) internal {
require(has(role, account), "Roles: account does not have role");
role.bearer[account] = false;
}
function has(Role storage role, address account) internal view returns (bool) {
require(account != address(0), "Roles: account is the zero address");
return role.bearer[account];
}
}
contract PauserRole {
using Roles for Roles.Role;
event PauserAdded(address indexed account);
event PauserRemoved(address indexed account);
Roles.Role private _pausers;
constructor () internal {
_addPauser(msg.sender);
}
modifier onlyPauser() {
require(isPauser(msg.sender), "PauserRole: caller does not have the Pauser role");
_;
}
function isPauser(address account) public view returns (bool) {
return _pausers.has(account);
}
function addPauser(address account) public onlyPauser {
_addPauser(account);
}
function renouncePauser() public {
_removePauser(msg.sender);
}
function _addPauser(address account) internal {
_pausers.add(account);
emit PauserAdded(account);
}
function _removePauser(address account) internal {
_pausers.remove(account);
emit PauserRemoved(account);
}
}
contract Pausable is PauserRole {
event Paused(address account);
event Unpaused(address account);
bool private _paused;
constructor () internal {
_paused = false;
}
function paused() public view returns (bool) {
return _paused;
}
modifier whenNotPaused() {
require(!_paused, "Pausable: paused");
_;
}
modifier whenPaused() {
require(_paused, "Pausable: not paused");
_;
}
function pause() public onlyPauser whenNotPaused {
_paused = true;
emit Paused(msg.sender);
}
function unpause() public onlyPauser whenPaused {
_paused = false;
emit Unpaused(msg.sender);
}
}
contract ERC20Pausable is ERC20, Pausable {
function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
return super.transfer(to, value);
}
function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
return super.transferFrom(from, to, value);
}
function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
return super.approve(spender, value);
}
function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool) {
return super.increaseAllowance(spender, addedValue);
}
function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool) {
return super.decreaseAllowance(spender, subtractedValue);
}
}
contract UnirisToken is ERC20Pausable, ERC20Detailed {
uint256 public constant funding_pool_supply = 3820000000000000000000000000;
uint256 public constant deliverable_supply = 2360000000000000000000000000;
uint256 public constant network_pool_supply = 1460000000000000000000000000;
uint256 public constant enhancement_supply = 900000000000000000000000000;
uint256 public constant team_supply = 560000000000000000000000000;
uint256 public constant exch_pool_supply = 340000000000000000000000000;
uint256 public constant marketing_supply = 340000000000000000000000000;
uint256 public constant foundation_supply = 220000000000000000000000000;
address public funding_pool_beneficiary;
address public deliverables_beneficiary;
address public network_pool_beneficiary;
address public enhancement_beneficiary;
address public team_beneficiary;
address public exch_pool_beneficiary;
address public marketing_beneficiary;
address public foundation_beneficiary;
modifier onlyUnlocked(address from, uint256 value) {
require(from != enhancement_beneficiary, "Enhancement wallet is locked forever until mainnet");
if (from == deliverables_beneficiary) {
uint256 _delivered = deliverable_supply - balanceOf(deliverables_beneficiary);
require(_delivered.add(value) <= deliverable_supply.mul(10).div(100), "Only 10% of the deliverable supply is unlocked before mainnet");
}
else if (from == network_pool_beneficiary) {
uint256 _delivered = network_pool_supply - balanceOf(network_pool_beneficiary);
require(_delivered.add(value) <= network_pool_supply.mul(10).div(100), "Only 10% of the network supply is unlocked before mainnet");
}
_;
}
constructor(
address _funding_pool_beneficiary,
address _deliverables_beneficiary,
address _network_pool_beneficiary,
address _enhancement_beneficiary,
address _team_beneficiary,
address _exch_pool_beneficiary,
address _marketing_beneficiary,
address _foundation_beneficiary
) public ERC20Detailed("UnirisToken", "UCO", 18) {
require(_funding_pool_beneficiary != address(0), "Invalid funding pool beneficiary address");
require(_deliverables_beneficiary != address(0), "Invalid deliverables beneficiary address");
require(_network_pool_beneficiary != address(0), "Invalid network pool beneficiary address");
require(_enhancement_beneficiary != address(0), "Invalid enhancement beneficiary address");
require(_team_beneficiary != address(0), "Invalid team beneficiary address");
require(_exch_pool_beneficiary != address(0), "Invalid exch pool beneficiary address");
require(_marketing_beneficiary != address(0), "Invalid marketing beneficiary address");
require(_foundation_beneficiary != address(0), "Invalid foundation beneficiary address");
funding_pool_beneficiary = _funding_pool_beneficiary;
deliverables_beneficiary = _deliverables_beneficiary;
network_pool_beneficiary = _network_pool_beneficiary;
enhancement_beneficiary = _enhancement_beneficiary;
team_beneficiary = _team_beneficiary;
exch_pool_beneficiary = _exch_pool_beneficiary;
marketing_beneficiary = _marketing_beneficiary;
foundation_beneficiary = _foundation_beneficiary;
_mint(funding_pool_beneficiary, funding_pool_supply);
_mint(deliverables_beneficiary, deliverable_supply);
_mint(network_pool_beneficiary, network_pool_supply);
_mint(enhancement_beneficiary, enhancement_supply);
_mint(team_beneficiary, team_supply);
_mint(exch_pool_beneficiary, exch_pool_supply);
_mint(marketing_beneficiary, marketing_supply);
_mint(foundation_beneficiary, foundation_supply);
}
function transfer(address _to, uint256 _value) public onlyUnlocked(msg.sender, _value) returns (bool success) {
return super.transfer(_to, _value);
}
function transferFrom(address _from, address _to, uint256 _value) public onlyUnlocked(_from, _value) returns (bool success) {
return super.transferFrom(_from, _to, _value);
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":false},"libraries":{},"evmVersion":"petersburg","compilationTarget":{"UnirisToken.sol":"UnirisToken"}}
Contract ABI
[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"approve","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"exch_pool_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"network_pool_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"success"}],"name":"transferFrom","inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"foundation_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":""}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"enhancement_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"team_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"addedValue"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"team_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unpause","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isPauser","inputs":[{"type":"address","name":"account"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"exch_pool_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"paused","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"marketing_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"deliverable_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"deliverables_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"renouncePauser","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"balanceOf","inputs":[{"type":"address","name":"account"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"funding_pool_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"enhancement_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"addPauser","inputs":[{"type":"address","name":"account"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"pause","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender"},{"type":"uint256","name":"subtractedValue"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"foundation_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"success"}],"name":"transfer","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"funding_pool_beneficiary","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"allowance","inputs":[{"type":"address","name":"owner"},{"type":"address","name":"spender"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"marketing_supply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"network_pool_beneficiary","inputs":[],"constant":true},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"address","name":"_funding_pool_beneficiary"},{"type":"address","name":"_deliverables_beneficiary"},{"type":"address","name":"_network_pool_beneficiary"},{"type":"address","name":"_enhancement_beneficiary"},{"type":"address","name":"_team_beneficiary"},{"type":"address","name":"_exch_pool_beneficiary"},{"type":"address","name":"_marketing_beneficiary"},{"type":"address","name":"_foundation_beneficiary"}]},{"type":"event","name":"Paused","inputs":[{"type":"address","name":"account","indexed":false}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"type":"address","name":"account","indexed":false}],"anonymous":false},{"type":"event","name":"PauserAdded","inputs":[{"type":"address","name":"account","indexed":true}],"anonymous":false},{"type":"event","name":"PauserRemoved","inputs":[{"type":"address","name":"account","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
Contract Creation Code
0x60806040523480156200001157600080fd5b50604051610100806200393b83398101806040526101008110156200003557600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506040518060400160405280600b81526020017f556e69726973546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f55434f000000000000000000000000000000000000000000000000000000000081525060126200010b33620009e760201b60201c565b6000600460006101000a81548160ff02191690831515021790555082600590805190602001906200013e92919062000e5f565b5081600690805190602001906200015792919062000e5f565b5080600760006101000a81548160ff021916908360ff160217905550505050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415620001fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180620038796028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141562000286576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806200380a6028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156200030e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180620038c76028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141562000396576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180620038ef6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200043a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496e76616c6964207465616d2062656e6566696369617279206164647265737381525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620004c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620039166025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620038326025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620005d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180620038a16026913960400191505060405180910390fd5b87600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200081a600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b0c57d476f1d9e9de6c00000062000a4860201b60201c565b6200085a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b07a025705a712ea43800000062000a4860201b60201c565b6200089a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b04b7af069768bb3a3400000062000a4860201b60201c565b620008da600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b02e87669c308736a0400000062000a4860201b60201c565b6200091a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b01cf389cd46047d03000000062000a4860201b60201c565b6200095a600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b01193dcceea82b99d400000062000a4860201b60201c565b6200099a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b01193dcceea82b99d400000062000a4860201b60201c565b620009d9600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166ab5facfe5b81c365c00000062000a4860201b60201c565b505050505050505062000f0e565b62000a0281600362000c1260201b620022df1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000b088160025462000cf660201b62001ae61790919060201c565b60028190555062000b66816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cf660201b62001ae61790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b62000c24828262000d7f60201b60201c565b1562000c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101562000d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620038576022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000ea257805160ff191683800117855562000ed3565b8280016001018555821562000ed3579182015b8281111562000ed257825182559160200191906001019062000eb5565b5b50905062000ee2919062000ee6565b5090565b62000f0b91905b8082111562000f0757600081600090555060010162000eed565b5090565b90565b6128ec8062000f1e6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063621005d71161011a5780638456cb59116100ad578063a9059cbb1161007c578063a9059cbb146108c6578063adcde06f1461092c578063dd62ed3e14610976578063dee28f78146109ee578063fe28a81514610a0c576101fb565b80638456cb59146107b557806395d89b41146107bf578063a457c2d714610842578063a8942ed1146108a8576101fb565b806370a08231116100e957806370a08231146106dd57806370b86f2314610735578063767c2e2d1461075357806382dc1ec414610771576101fb565b8063621005d714610621578063680a8ca51461066b5780636cc5c0fd146106895780636ef8d66d146106d3576101fb565b80633695f71c116101925780633f4ba83a116101615780633f4ba83a1461057b57806346fbf68e1461058557806353d4edba146105e15780635c975abb146105ff576101fb565b80633695f71c1461046357806336ec6b8e146104ad57806339509351146104f75780633a34b6c61461055d576101fb565b80631c5e933f116101ce5780631c5e933f1461035157806323b872dd1461036f5780632f74c82e146103f5578063313ce5671461043f576101fb565b806306fdde0314610200578063095ea7b31461028357806312d8829f146102e957806318160ddd14610333575b600080fd5b610208610a56565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024857808201518184015260208101905061022d565b50505050905090810190601f1680156102755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102cf6004803603604081101561029957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af8565b604051808215151515815260200191505060405180910390f35b6102f1610b8f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61033b610bb5565b6040518082815260200191505060405180910390f35b610359610bbf565b6040518082815260200191505060405180910390f35b6103db6004803603606081101561038557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bcf565b604051808215151515815260200191505060405180910390f35b6103fd610ef9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610447610f1f565b604051808260ff1660ff16815260200191505060405180910390f35b61046b610f36565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104b5610f5c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105436004803603604081101561050d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f82565b604051808215151515815260200191505060405180910390f35b610565611019565b6040518082815260200191505060405180910390f35b610583611029565b005b6105c76004803603602081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611189565b604051808215151515815260200191505060405180910390f35b6105e96111a6565b6040518082815260200191505060405180910390f35b6106076111b6565b604051808215151515815260200191505060405180910390f35b6106296111cd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106736111f3565b6040518082815260200191505060405180910390f35b610691611203565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106db611229565b005b61071f600480360360208110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611234565b6040518082815260200191505060405180910390f35b61073d61127c565b6040518082815260200191505060405180910390f35b61075b61128c565b6040518082815260200191505060405180910390f35b6107b36004803603602081101561078757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129c565b005b6107bd611306565b005b6107c7611467565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108075780820151818401526020810190506107ec565b50505050905090810190601f1680156108345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61088e6004803603604081101561085857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611509565b604051808215151515815260200191505060405180910390f35b6108b06115a0565b6040518082815260200191505060405180910390f35b610912600480360360408110156108dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115af565b604051808215151515815260200191505060405180910390f35b6109346118d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109d86004803603604081101561098c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118fd565b6040518082815260200191505060405180910390f35b6109f6611984565b6040518082815260200191505060405180910390f35b610a14611994565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b5050505050905090565b6000600460009054906101000a900460ff1615610b7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610b8783836119ba565b905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6b04b7af069768bb3a3400000081565b60008382600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806128096032913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610db0576000610cfd600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b07a025705a712ea438000000039050610d406064610d32600a6b07a025705a712ea4380000006119d190919063ffffffff16565b611a5790919063ffffffff16565b610d538383611ae690919063ffffffff16565b1115610daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612884603d913960400191505060405180910390fd5b50610ee3565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee2576000610e33600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b04b7af069768bb3a34000000039050610e766064610e68600a6b04b7af069768bb3a340000006119d190919063ffffffff16565b611a5790919063ffffffff16565b610e898383611ae690919063ffffffff16565b1115610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061271a6039913960400191505060405180910390fd5b505b5b610eee868686611b6e565b925050509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900460ff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900460ff1615611007576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6110118383611c07565b905092915050565b6b01cf389cd46047d03000000081565b61103233611189565b611087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127536030913960400191505060405180910390fd5b600460009054906101000a900460ff16611109576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600460006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061119f826003611cac90919063ffffffff16565b9050919050565b6b01193dcceea82b99d400000081565b6000600460009054906101000a900460ff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b07a025705a712ea43800000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61123233611d8a565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6b0c57d476f1d9e9de6c00000081565b6b02e87669c308736a0400000081565b6112a533611189565b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127536030913960400191505060405180910390fd5b61130381611de4565b50565b61130f33611189565b611364576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127536030913960400191505060405180910390fd5b600460009054906101000a900460ff16156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600460006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ff5780601f106114d4576101008083540402835291602001916114ff565b820191906000526020600020905b8154815290600101906020018083116114e257829003601f168201915b5050505050905090565b6000600460009054906101000a900460ff161561158e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6115988383611e3e565b905092915050565b6ab5facfe5b81c365c00000081565b60003382600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806128096032913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117905760006116dd600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b07a025705a712ea4380000000390506117206064611712600a6b07a025705a712ea4380000006119d190919063ffffffff16565b611a5790919063ffffffff16565b6117338383611ae690919063ffffffff16565b111561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612884603d913960400191505060405180910390fd5b506118c3565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118c2576000611813600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b04b7af069768bb3a340000000390506118566064611848600a6b04b7af069768bb3a340000006119d190919063ffffffff16565b611a5790919063ffffffff16565b6118698383611ae690919063ffffffff16565b11156118c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061271a6039913960400191505060405180910390fd5b505b5b6118cd8585611ee3565b9250505092915050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6b01193dcceea82b99d400000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119c7338484611f7a565b6001905092915050565b6000808314156119e45760009050611a51565b60008284029050828482816119f557fe5b0414611a4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806127c66021913960400191505060405180910390fd5b809150505b92915050565b6000808211611ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481611ad957fe5b0490508091505092915050565b600080828401905083811015611b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600460009054906101000a900460ff1615611bf3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611bfe848484612171565b90509392505050565b6000611ca23384611c9d85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae690919063ffffffff16565b611f7a565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127e76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d9e81600361222290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611df88160036122df90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6000611ed93384611ed485600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba90919063ffffffff16565b611f7a565b6001905092915050565b6000600460009054906101000a900460ff1615611f68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611f728383612443565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612086576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127836022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061217e84848461245a565b612217843361221285600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba90919063ffffffff16565b611f7a565b600190509392505050565b61222c8282611cac565b612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806127a56021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122e98282611cac565b1561235c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600082821115612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600061245033848461245a565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061283b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612566576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806126f76023913960400191505060405180910390fd5b6125b7816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f6e6c7920313025206f6620746865206e6574776f726b20737570706c7920697320756e6c6f636b6564206265666f7265206d61696e6e6574506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f2061646472657373526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373456e68616e63656d656e742077616c6c6574206973206c6f636b656420666f726576657220756e74696c206d61696e6e657445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734f6e6c7920313025206f66207468652064656c6976657261626c6520737570706c7920697320756e6c6f636b6564206265666f7265206d61696e6e6574a165627a7a72305820c5712b056949ac46c16de677041896df29dfaccc19584e53820b17f39421b8d40029496e76616c69642064656c6976657261626c65732062656e65666963696172792061646472657373496e76616c6964206d61726b6574696e672062656e65666963696172792061646472657373526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373496e76616c69642066756e64696e6720706f6f6c2062656e65666963696172792061646472657373496e76616c696420666f756e646174696f6e2062656e65666963696172792061646472657373496e76616c6964206e6574776f726b20706f6f6c2062656e65666963696172792061646472657373496e76616c696420656e68616e63656d656e742062656e65666963696172792061646472657373496e76616c6964206578636820706f6f6c2062656e65666963696172792061646472657373000000000000000000000000c545528cb411aa971de48f5d375af27b685a7651000000000000000000000000ea9095614a40c34f2d6d62514a8b9305873e6763000000000000000000000000857ffe3a3f4d47c5459b215fd09ddd80ee0b2f00000000000000000000000000c3255e34f122f8e5ac055d308bf5898173212afc000000000000000000000000b4cf889f7f0c4de5c43dbb67c11b8f96b6cfbf910000000000000000000000002da4fddc9e610b1d5ae4340d20455d53c9481b12000000000000000000000000ebc52520ee81a0e87549ce193b3f5fc086eddc69000000000000000000000000a8b2134e17bd65427aea59d5b8aca22f3c181e97
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063621005d71161011a5780638456cb59116100ad578063a9059cbb1161007c578063a9059cbb146108c6578063adcde06f1461092c578063dd62ed3e14610976578063dee28f78146109ee578063fe28a81514610a0c576101fb565b80638456cb59146107b557806395d89b41146107bf578063a457c2d714610842578063a8942ed1146108a8576101fb565b806370a08231116100e957806370a08231146106dd57806370b86f2314610735578063767c2e2d1461075357806382dc1ec414610771576101fb565b8063621005d714610621578063680a8ca51461066b5780636cc5c0fd146106895780636ef8d66d146106d3576101fb565b80633695f71c116101925780633f4ba83a116101615780633f4ba83a1461057b57806346fbf68e1461058557806353d4edba146105e15780635c975abb146105ff576101fb565b80633695f71c1461046357806336ec6b8e146104ad57806339509351146104f75780633a34b6c61461055d576101fb565b80631c5e933f116101ce5780631c5e933f1461035157806323b872dd1461036f5780632f74c82e146103f5578063313ce5671461043f576101fb565b806306fdde0314610200578063095ea7b31461028357806312d8829f146102e957806318160ddd14610333575b600080fd5b610208610a56565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024857808201518184015260208101905061022d565b50505050905090810190601f1680156102755780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102cf6004803603604081101561029957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af8565b604051808215151515815260200191505060405180910390f35b6102f1610b8f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61033b610bb5565b6040518082815260200191505060405180910390f35b610359610bbf565b6040518082815260200191505060405180910390f35b6103db6004803603606081101561038557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bcf565b604051808215151515815260200191505060405180910390f35b6103fd610ef9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610447610f1f565b604051808260ff1660ff16815260200191505060405180910390f35b61046b610f36565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104b5610f5c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105436004803603604081101561050d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f82565b604051808215151515815260200191505060405180910390f35b610565611019565b6040518082815260200191505060405180910390f35b610583611029565b005b6105c76004803603602081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611189565b604051808215151515815260200191505060405180910390f35b6105e96111a6565b6040518082815260200191505060405180910390f35b6106076111b6565b604051808215151515815260200191505060405180910390f35b6106296111cd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106736111f3565b6040518082815260200191505060405180910390f35b610691611203565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106db611229565b005b61071f600480360360208110156106f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611234565b6040518082815260200191505060405180910390f35b61073d61127c565b6040518082815260200191505060405180910390f35b61075b61128c565b6040518082815260200191505060405180910390f35b6107b36004803603602081101561078757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129c565b005b6107bd611306565b005b6107c7611467565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108075780820151818401526020810190506107ec565b50505050905090810190601f1680156108345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61088e6004803603604081101561085857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611509565b604051808215151515815260200191505060405180910390f35b6108b06115a0565b6040518082815260200191505060405180910390f35b610912600480360360408110156108dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115af565b604051808215151515815260200191505060405180910390f35b6109346118d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109d86004803603604081101561098c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118fd565b6040518082815260200191505060405180910390f35b6109f6611984565b6040518082815260200191505060405180910390f35b610a14611994565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b5050505050905090565b6000600460009054906101000a900460ff1615610b7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610b8783836119ba565b905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6b04b7af069768bb3a3400000081565b60008382600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806128096032913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610db0576000610cfd600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b07a025705a712ea438000000039050610d406064610d32600a6b07a025705a712ea4380000006119d190919063ffffffff16565b611a5790919063ffffffff16565b610d538383611ae690919063ffffffff16565b1115610daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612884603d913960400191505060405180910390fd5b50610ee3565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ee2576000610e33600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b04b7af069768bb3a34000000039050610e766064610e68600a6b04b7af069768bb3a340000006119d190919063ffffffff16565b611a5790919063ffffffff16565b610e898383611ae690919063ffffffff16565b1115610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061271a6039913960400191505060405180910390fd5b505b5b610eee868686611b6e565b925050509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900460ff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460009054906101000a900460ff1615611007576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6110118383611c07565b905092915050565b6b01cf389cd46047d03000000081565b61103233611189565b611087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127536030913960400191505060405180910390fd5b600460009054906101000a900460ff16611109576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600460006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061119f826003611cac90919063ffffffff16565b9050919050565b6b01193dcceea82b99d400000081565b6000600460009054906101000a900460ff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b07a025705a712ea43800000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61123233611d8a565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6b0c57d476f1d9e9de6c00000081565b6b02e87669c308736a0400000081565b6112a533611189565b6112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127536030913960400191505060405180910390fd5b61130381611de4565b50565b61130f33611189565b611364576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806127536030913960400191505060405180910390fd5b600460009054906101000a900460ff16156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600460006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ff5780601f106114d4576101008083540402835291602001916114ff565b820191906000526020600020905b8154815290600101906020018083116114e257829003601f168201915b5050505050905090565b6000600460009054906101000a900460ff161561158e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6115988383611e3e565b905092915050565b6ab5facfe5b81c365c00000081565b60003382600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806128096032913960400191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117905760006116dd600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b07a025705a712ea4380000000390506117206064611712600a6b07a025705a712ea4380000006119d190919063ffffffff16565b611a5790919063ffffffff16565b6117338383611ae690919063ffffffff16565b111561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612884603d913960400191505060405180910390fd5b506118c3565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118c2576000611813600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611234565b6b04b7af069768bb3a340000000390506118566064611848600a6b04b7af069768bb3a340000006119d190919063ffffffff16565b611a5790919063ffffffff16565b6118698383611ae690919063ffffffff16565b11156118c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061271a6039913960400191505060405180910390fd5b505b5b6118cd8585611ee3565b9250505092915050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6b01193dcceea82b99d400000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119c7338484611f7a565b6001905092915050565b6000808314156119e45760009050611a51565b60008284029050828482816119f557fe5b0414611a4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806127c66021913960400191505060405180910390fd5b809150505b92915050565b6000808211611ace576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481611ad957fe5b0490508091505092915050565b600080828401905083811015611b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600460009054906101000a900460ff1615611bf3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611bfe848484612171565b90509392505050565b6000611ca23384611c9d85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae690919063ffffffff16565b611f7a565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127e76022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d9e81600361222290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b611df88160036122df90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6000611ed93384611ed485600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba90919063ffffffff16565b611f7a565b6001905092915050565b6000600460009054906101000a900460ff1615611f68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611f728383612443565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612086576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127836022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061217e84848461245a565b612217843361221285600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba90919063ffffffff16565b611f7a565b600190509392505050565b61222c8282611cac565b612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806127a56021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122e98282611cac565b1561235c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600082821115612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600061245033848461245a565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061283b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612566576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806126f76023913960400191505060405180910390fd5b6125b7816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f6e6c7920313025206f6620746865206e6574776f726b20737570706c7920697320756e6c6f636b6564206265666f7265206d61696e6e6574506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f2061646472657373526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373456e68616e63656d656e742077616c6c6574206973206c6f636b656420666f726576657220756e74696c206d61696e6e657445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734f6e6c7920313025206f66207468652064656c6976657261626c6520737570706c7920697320756e6c6f636b6564206265666f7265206d61696e6e6574a165627a7a72305820c5712b056949ac46c16de677041896df29dfaccc19584e53820b17f39421b8d40029