ERC-20
Education
Overview
Max Total Supply
250,000,000 DRM
Holders
8,051 (0.00%)
Market
Price
$0.00 @ 0.000001 ETH (-4.33%)
Onchain Market Cap
$926,631.40
Circulating Supply Market Cap
$694,973.55
Other Info
Token Contract (WITH 18 Decimals)
Balance
129 DRMValue
$0.48 ( ~0.000151946281958997 Eth) [0.0001%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DoDreamChain
Compiler Version
v0.5.5+commit.47a71e8f
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.5.5; import "./DoDreamChainBase.sol"; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * IMPORTANT: It is unsafe to assume that an address for which this * function returns false is an externally-owned account (EOA) and not a * contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } /** * @title DoDreamChain */ contract DoDreamChain is DoDreamChainBase { event TransferedToDRMDapp( address indexed owner, address indexed spender, address indexed to, uint256 value, DRMReceiver.DRMReceiveType receiveType); string public constant name = "DoDreamChain"; string public constant symbol = "DRM"; uint8 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 250 * 1000 * 1000 * (10 ** uint256(decimals)); // 250,000,000 DRM /** * @dev Constructor 생성자에게 DRM토큰을 보냅니다. */ constructor() public { totalSupply_ = INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; emit Transfer(address(0), msg.sender, INITIAL_SUPPLY); } function drmTransfer(address _to, uint256 _value, string memory _note) public returns (bool ret) { ret = super.drmTransfer(_to, _value, _note); postTransfer(msg.sender, msg.sender, _to, _value, DRMReceiver.DRMReceiveType.DRM_TRANSFER); } function drmTransferFrom(address _from, address _to, uint256 _value, string memory _note) public returns (bool ret) { ret = super.drmTransferFrom(_from, _to, _value, _note); postTransfer(_from, msg.sender, _to, _value, DRMReceiver.DRMReceiveType.DRM_TRANSFER); } function postTransfer(address owner, address spender, address to, uint256 value, DRMReceiver.DRMReceiveType receiveType) internal returns (bool) { if (Address.isContract(to)) { (bool callOk, bytes memory data) = address(to).call(abi.encodeWithSignature("onDRMReceived(address,address,uint256,uint8)", owner, spender, value, receiveType)); if (callOk) { emit TransferedToDRMDapp(owner, spender, to, value, receiveType); } } return true; } function drmMintTo(address to, uint256 amount, string memory note) public onlyOwner returns (bool ret) { ret = super.drmMintTo(to, amount, note); postTransfer(address(0), msg.sender, to, amount, DRMReceiver.DRMReceiveType.DRM_MINT); } function drmBurnFrom(address from, uint256 value, string memory note) public onlyOwner returns (bool ret) { ret = super.drmBurnFrom(from, value, note); postTransfer(address(0), msg.sender, from, value, DRMReceiver.DRMReceiveType.DRM_BURN); } } /** * @title DRM Receiver */ contract DRMReceiver { enum DRMReceiveType { DRM_TRANSFER, DRM_MINT, DRM_BURN } function onDRMReceived(address owner, address spender, uint256 value, DRMReceiveType receiveType) public returns (bool); }
pragma solidity ^0.5.5; import "./ERC20Basic.sol"; import "./SafeMath.sol"; /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) internal balances; uint256 internal totalSupply_; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_value <= balances[msg.sender], "The balance of account is insufficient."); require(_to != address(0), "Recipient address is zero address(0). Check the address again."); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } }
pragma solidity ^0.5.5; import "./LockableToken.sol"; /** * @title DRMBaseToken * dev 트랜잭션 실행 시 메모를 남길 수 있다. */ contract DoDreamChainBase is LockableToken { event DRMTransfer(address indexed from, address indexed to, uint256 value, string note); event DRMTransferFrom(address indexed owner, address indexed spender, address indexed to, uint256 value, string note); event DRMApproval(address indexed owner, address indexed spender, uint256 value, string note); event DRMMintTo(address indexed controller, address indexed to, uint256 amount, string note); event DRMBurnFrom(address indexed controller, address indexed from, uint256 value, string note); event DRMTransferToTeam(address indexed owner, address indexed spender, address indexed to, uint256 value, string note); event DRMTransferToPartner(address indexed owner, address indexed spender, address indexed to, uint256 value, string note); event DRMTransferToEcosystem(address indexed owner, address indexed spender, address indexed to , uint256 value, uint256 processIdHash, uint256 userIdHash, string note); // ERC20 함수들을 오버라이딩 작업 > drm~ 함수를 타게 한다. function transfer(address to, uint256 value) public returns (bool ret) { return drmTransfer(to, value, "transfer"); } function drmTransfer(address to, uint256 value, string memory note) public returns (bool ret) { require(to != address(this), "The receive address is the Contact Address of DoDreamChain."); ret = super.transfer(to, value); emit DRMTransfer(msg.sender, to, value, note); } function transferFrom(address from, address to, uint256 value) public returns (bool) { return drmTransferFrom(from, to, value, ""); } function drmTransferFrom(address from, address to, uint256 value, string memory note) public returns (bool ret) { require(to != address(this), "The receive address is the Contact Address of DoDreamChain."); ret = super.transferFrom(from, to, value); emit DRMTransferFrom(from, msg.sender, to, value, note); } function approve(address spender, uint256 value) public returns (bool) { return drmApprove(spender, value, ""); } function drmApprove(address spender, uint256 value, string memory note) public returns (bool ret) { ret = super.approve(spender, value); emit DRMApproval(msg.sender, spender, value, note); } function increaseApproval(address spender, uint256 addedValue) public returns (bool) { return drmIncreaseApproval(spender, addedValue, ""); } function drmIncreaseApproval(address spender, uint256 addedValue, string memory note) public returns (bool ret) { ret = super.increaseApproval(spender, addedValue); emit DRMApproval(msg.sender, spender, allowed[msg.sender][spender], note); } function decreaseApproval(address spender, uint256 subtractedValue) public returns (bool) { return drmDecreaseApproval(spender, subtractedValue, ""); } function drmDecreaseApproval(address spender, uint256 subtractedValue, string memory note) public returns (bool ret) { ret = super.decreaseApproval(spender, subtractedValue); emit DRMApproval(msg.sender, spender, allowed[msg.sender][spender], note); } /** * dev 신규 발행시 반드시 주석을 남길수 있도록한다. */ function mintTo(address to, uint256 amount) internal returns (bool) { require(to != address(0x0), "This address to be set is zero address(0). Check the input address."); totalSupply_ = totalSupply_.add(amount); balances[to] = balances[to].add(amount); emit Transfer(address(0), to, amount); return true; } function drmMintTo(address to, uint256 amount, string memory note) public onlyOwner returns (bool ret) { ret = mintTo(to, amount); emit DRMMintTo(msg.sender, to, amount, note); } /** * dev 화폐 소각시 반드시 주석을 남길수 있도록한다. */ function burnFrom(address from, uint256 value) internal returns (bool) { require(value <= balances[from], "Your balance is insufficient."); balances[from] = balances[from].sub(value); totalSupply_ = totalSupply_.sub(value); emit Transfer(from, address(0), value); return true; } function drmBurnFrom(address from, uint256 value, string memory note) public onlyOwner returns (bool ret) { ret = burnFrom(from, value); emit DRMBurnFrom(msg.sender, from, value, note); } /** * dev DRM 팀에게 전송하는 경우 */ function drmTransferToTeam( address from, address to, uint256 value, string memory note ) public onlyOwner returns (bool ret) { require(to != address(this), "The receive address is the Contact Address of DoDreamChain."); ret = super.transferFrom(from, to, value); emit DRMTransferToTeam(from, msg.sender, to, value, note); return ret; } /** * dev 파트너(어드바이저)에게 전송하는 경우 */ function drmTransferToPartner( address from, address to, uint256 value, string memory note ) public onlyOwner returns (bool ret) { require(to != address(this), "The receive address is the Contact Address of DoDreamChain."); ret = super.transferFrom(from, to, value); emit DRMTransferToPartner(from, msg.sender, to, value, note); } /** * dev 보상을 DRM 지급 * dev EOA가 트랜잭션을 일으켜서 처리 * 여러개 계좌를 기준으로 한다. (가스비 아끼기 위함) */ function drmBatchTransferToEcosystem( address from, address[] memory to, uint256[] memory values, uint256 processIdHash, uint256[] memory userIdHash, string memory note ) public onlyOwner returns (bool ret) { uint256 length = to.length; require(length == values.length, "The sizes of \'to\' and \'values\' arrays are different."); require(length == userIdHash.length, "The sizes of \'to\' and \'userIdHash\' arrays are different."); ret = true; for (uint256 i = 0; i < length; i++) { require(to[i] != address(this), "The receive address is the Contact Address of DoDreamChain."); ret = ret && super.transferFrom(from, to[i], values[i]); emit DRMTransferToEcosystem(from, msg.sender, to[i], values[i], processIdHash, userIdHash[i], note); } } function destroy() public onlyRoot { selfdestruct(msg.sender); } }
pragma solidity ^0.5.5; import "./ERC20Basic.sol"; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); }
pragma solidity ^0.5.5; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); }
pragma solidity ^0.5.5; import "./StandardToken.sol"; import "./MultiOwnable.sol"; /** * @title Lockable token */ contract LockableToken is StandardToken, MultiOwnable { bool public locked = true; /** * dev 락 = TRUE 이여도 거래 가능한 언락 계정 */ mapping(address => bool) public unlockAddrs; /** * dev - 계정마다 lockValue만큼 락이 걸린다. * dev - lockValue = 0 > limit이 없음 */ mapping(address => uint256) public lockValues; event Locked(bool locked, string note); event LockedTo(address indexed addr, bool locked, string note); event SetLockValue(address indexed addr, uint256 value, string note); constructor() public { unlockTo(msg.sender, ""); } modifier checkUnlock (address addr, uint256 value) { require(!locked || unlockAddrs[addr], "The account is currently locked."); require(balances[addr].sub(value) >= lockValues[addr], "Transferable limit exceeded. Check the status of the lock value."); _; } function lock(string memory note) public onlyOwner { locked = true; emit Locked(locked, note); } function unlock(string memory note) public onlyOwner { locked = false; emit Locked(locked, note); } function lockTo(address addr, string memory note) public onlyOwner { setLockValue(addr, balanceOf(addr), note); unlockAddrs[addr] = false; emit LockedTo(addr, true, note); } function unlockTo(address addr, string memory note) public onlyOwner { setLockValue(addr, 0, note); unlockAddrs[addr] = true; emit LockedTo(addr, false, note); } function setLockValue(address addr, uint256 value, string memory note) public onlyOwner { lockValues[addr] = value; if(value == 0){ unlockAddrs[addr] = true; }else{ unlockAddrs[addr] = false; } emit SetLockValue(addr, value, note); } /** * dev 이체 가능 금액 체크 */ function getMyUnlockValue() public view returns (uint256) { address addr = msg.sender; if ((!locked || unlockAddrs[addr]) ) return balances[addr].sub(lockValues[addr]); else return 0; } function transfer(address to, uint256 value) public checkUnlock(msg.sender, value) returns (bool) { return super.transfer(to, value); } function transferFrom(address from, address to, uint256 value) public checkUnlock(from, value) returns (bool) { return super.transferFrom(from, to, value); } }
pragma solidity ^0.5.5; /** * @title MultiOwnable */ contract MultiOwnable { address public root; mapping (address => address) public owners; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { root = msg.sender; owners[root] = root; } /** * @dev check owner */ modifier onlyOwner() { require(owners[msg.sender] != address(0), "permission error[onlyOwner]"); _; } modifier onlyRoot() { require(msg.sender == root, "permission error[onlyRoot]"); _; } /** * @dev add new owner */ function newOwner(address _owner) external onlyOwner returns (bool) { require(_owner != address(0), "Invalid address."); require(owners[_owner] == address(0), "permission error[onlyOwner]"); owners[_owner] = msg.sender; return true; } /** * @dev delete owner */ function deleteOwner(address _owner) external onlyOwner returns (bool) { owners[_owner] = address(0); return true; } }
pragma solidity ^0.5.5; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
pragma solidity ^0.5.5; import "./BasicToken.sol"; import "./ERC20.sol"; /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/issues/20 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public returns (bool) { require(_value <= balances[_from], "Not enough balance."); require(_value <= allowed[_from][msg.sender], "Not allowed."); require(_to != address(0), "Invalid address."); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval( address _spender, uint256 _addedValue ) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval( address _spender, uint256 _subtractedValue ) public returns (bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue >= oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"note","type":"string"}],"name":"unlockTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"},{"name":"note","type":"string"}],"name":"drmBurnFrom","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"note","type":"string"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"note","type":"string"}],"name":"drmTransferToTeam","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMyUnlockValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_note","type":"string"}],"name":"drmTransfer","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unlockAddrs","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"},{"name":"note","type":"string"}],"name":"drmDecreaseApproval","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"note","type":"string"}],"name":"lockTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"newOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"note","type":"string"}],"name":"drmMintTo","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"note","type":"string"}],"name":"drmTransferToPartner","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_note","type":"string"}],"name":"drmTransferFrom","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"note","type":"string"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"},{"name":"note","type":"string"}],"name":"drmIncreaseApproval","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"note","type":"string"}],"name":"drmApprove","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address[]"},{"name":"values","type":"uint256[]"},{"name":"processIdHash","type":"uint256"},{"name":"userIdHash","type":"uint256[]"},{"name":"note","type":"string"}],"name":"drmBatchTransferToEcosystem","outputs":[{"name":"ret","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockValues","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"deleteOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"value","type":"uint256"},{"name":"note","type":"string"}],"name":"setLockValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"root","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"receiveType","type":"uint8"}],"name":"TransferedToDRMDapp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMTransferFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"controller","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMMintTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"controller","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMBurnFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMTransferToTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMTransferToPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"processIdHash","type":"uint256"},{"indexed":false,"name":"userIdHash","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"DRMTransferToEcosystem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"locked","type":"bool"},{"indexed":false,"name":"note","type":"string"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"locked","type":"bool"},{"indexed":false,"name":"note","type":"string"}],"name":"LockedTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"note","type":"string"}],"name":"SetLockValue","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526001600560006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660046000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200015133604051806020016040528060008152506200022e60201b60201c565b601260ff16600a0a630ee6b28002600181905550601260ff16600a0a630ee6b280026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a0a630ee6b280026040518082815260200191505060405180910390a362000733565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562000333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b62000347826000836200046660201b60201c565b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4bf46282901af80a4309ce07c36d841184ce98297f8735f7769d169497ac7a4c600083604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200042657808201518184015260208101905062000409565b50505050905090810190601f168015620004545780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156200056b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082141562000617576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000670565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8273ffffffffffffffffffffffffffffffffffffffff167fb19425af6288c6bb0d88f64d6d1cfe5eb7e2d31ee92f1012798df97a9b6b011a83836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620006f2578082015181840152602081019050620006d5565b50505050905090810190601f168015620007205780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b615e2780620007436000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c806383197ef011610125578063b8fb5d1b116100ad578063cf3090121161007c578063cf309012146116d8578063d712800f146116fa578063d73dd623146117df578063dd62ed3e14611845578063ebf0c717146118bd5761021b565b8063b8fb5d1b1461126e578063c7c021731461136b578063cb619a3314611624578063cd5c4c701461167c5761021b565b80639ec5ee16116100f45780639ec5ee1614610e16578063a6b5ca4f14610f33578063a9059cbb14611050578063a96ce7aa146110b6578063affa26ca146111715761021b565b806383197ef014610c305780638595245414610c3a5780638d8496a614610c9657806395d89b4114610d935761021b565b8063320a98fd116101a8578063505450d411610177578063505450d41461093e5780635876ec671461099a5780636618846314610a975780636bd5e26a14610afd57806370a0823114610bd85761021b565b8063320a98fd1461064b57806348832f32146107065780634aa678c31461082357806350131cd4146108415761021b565b806318160ddd116101ef57806318160ddd1461046857806321e626da1461048657806323b872dd146105835780632ff2e9dc14610609578063313ce567146106275761021b565b80623078b014610220578063022914a7146102fb57806306fdde031461037f578063095ea7b314610402575b600080fd5b6102f96004803603604081101561023657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561027357600080fd5b82018360208201111561028557600080fd5b803590602001918460018302840111640100000000831117156102a757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611907565b005b61033d6004803603602081101561031157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610387611b66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c75780820151818401526020810190506103ac565b50505050905090810190601f1680156103f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61044e6004803603604081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b9f565b604051808215151515815260200191505060405180910390f35b610470611bc3565b6040518082815260200191505060405180910390f35b6105696004803603606081101561049c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104e357600080fd5b8201836020820111156104f557600080fd5b8035906020019184600183028401116401000000008311171561051757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bcd565b604051808215151515815260200191505060405180910390f35b6105ef6004803603606081101561059957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf6565b604051808215151515815260200191505060405180910390f35b610611611d1c565b6040518082815260200191505060405180910390f35b61062f611d2d565b604051808260ff1660ff16815260200191505060405180910390f35b6107046004803603602081101561066157600080fd5b810190808035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d32565b005b6108096004803603608081101561071c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561078357600080fd5b82018360208201111561079557600080fd5b803590602001918460018302840111640100000000831117156107b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611f0b565b604051808215151515815260200191505060405180910390f35b61082b612198565b6040518082815260200191505060405180910390f35b6109246004803603606081101561085757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460018302840111640100000000831117156108d257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506122a9565b604051808215151515815260200191505060405180910390f35b6109806004803603602081101561095457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122ce565b604051808215151515815260200191505060405180910390f35b610a7d600480360360608110156109b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156109f757600080fd5b820183602082011115610a0957600080fd5b80359060200191846001830284011164010000000083111715610a2b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506122ee565b604051808215151515815260200191505060405180910390f35b610ae360048036036040811015610aad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612451565b604051808215151515815260200191505060405180910390f35b610bd660048036036040811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610b5057600080fd5b820183602082011115610b6257600080fd5b80359060200191846001830284011164010000000083111715610b8457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612475565b005b610c1a60048036036020811015610bee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126a8565b6040518082815260200191505060405180910390f35b610c386126f0565b005b610c7c60048036036020811015610c5057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ce565b604051808215151515815260200191505060405180910390f35b610d7960048036036060811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610cf357600080fd5b820183602082011115610d0557600080fd5b80359060200191846001830284011164010000000083111715610d2757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612b02565b604051808215151515815260200191505060405180910390f35b610d9b612c2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ddb578082015181840152602081019050610dc0565b50505050905090810190601f168015610e085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f1960048036036080811015610e2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610e9357600080fd5b820183602082011115610ea557600080fd5b80359060200191846001830284011164010000000083111715610ec757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612c64565b604051808215151515815260200191505060405180910390f35b61103660048036036080811015610f4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610fb057600080fd5b820183602082011115610fc257600080fd5b80359060200191846001830284011164010000000083111715610fe457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612eee565b604051808215151515815260200191505060405180910390f35b61109c6004803603604081101561106657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f15565b604051808215151515815260200191505060405180910390f35b61116f600480360360208110156110cc57600080fd5b81019080803590602001906401000000008111156110e957600080fd5b8201836020820111156110fb57600080fd5b8035906020019184600183028401116401000000008311171561111d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612f5f565b005b6112546004803603606081101561118757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156111ce57600080fd5b8201836020820111156111e057600080fd5b8035906020019184600183028401116401000000008311171561120257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613138565b604051808215151515815260200191505060405180910390f35b6113516004803603606081101561128457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156112cb57600080fd5b8201836020820111156112dd57600080fd5b803590602001918460018302840111640100000000831117156112ff57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061329b565b604051808215151515815260200191505060405180910390f35b61160a600480360360c081101561138157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156113be57600080fd5b8201836020820111156113d057600080fd5b803590602001918460208302840111640100000000831117156113f257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561145257600080fd5b82018360208201111561146457600080fd5b8035906020019184602083028401116401000000008311171561148657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001906401000000008111156114f057600080fd5b82018360208201111561150257600080fd5b8035906020019184602083028401116401000000008311171561152457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561158457600080fd5b82018360208201111561159657600080fd5b803590602001918460018302840111640100000000831117156115b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613382565b604051808215151515815260200191505060405180910390f35b6116666004803603602081101561163a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061378e565b6040518082815260200191505060405180910390f35b6116be6004803603602081101561169257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137a6565b604051808215151515815260200191505060405180910390f35b6116e0613933565b604051808215151515815260200191505060405180910390f35b6117dd6004803603606081101561171057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561175757600080fd5b82018360208201111561176957600080fd5b8035906020019184600183028401116401000000008311171561178b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613946565b005b61182b600480360360408110156117f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c0d565b604051808215151515815260200191505060405180910390f35b6118a76004803603604081101561185b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c31565b6040518082815260200191505060405180910390f35b6118c5613cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b611a1782600083613946565b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4bf46282901af80a4309ce07c36d841184ce98297f8735f7769d169497ac7a4c600083604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611af4578082015181840152602081019050611ad9565b50505050905090810190601f168015611b215780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600c81526020017f446f447265616d436861696e000000000000000000000000000000000000000081525081565b6000611bbb83836040518060200160405280600081525061329b565b905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b611cdd848484613cde565b9050611cee60003386866002613ec8565b509392505050565b6000611d1384848460405180602001604052806000815250612eee565b90509392505050565b601260ff16600a0a630ee6b2800281565b601281565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507fc1086893b0a3f1d991fd25e26cd28cad11de174842b04a55cc2423ed178e4382600560009054906101000a900460ff1682604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ecd578082015181840152602081019050611eb2565b50505050905090810190601f168015611efa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b6120a2858585614149565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc156e33959f4e0f085a1d91609a1451710062ea2d393920745802a56cf3619ca86866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612152578082015181840152602081019050612137565b50505050905090810190601f16801561217f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4809050949350505050565b600080339050600560009054906101000a900460ff1615806122035750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122a057612298600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b9150506122a6565b60009150505b90565b60006122b6848484614370565b90506122c6333386866000613ec8565b509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006122fa84846144de565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77239679570d54f38632b488ca24b30b0af8d819606bf0ec18d7d99e96b19cae600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561240f5780820151818401526020810190506123f4565b50505050905090810190601f16801561243c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b600061246d8383604051806020016040528060008152506122ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b61258c82612586846126a8565b83613946565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4bf46282901af80a4309ce07c36d841184ce98297f8735f7769d169497ac7a4c600183604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561266957808201518184015260208101905061264e565b50505050905090810190601f1680156126965780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7065726d697373696f6e206572726f725b6f6e6c79526f6f745d00000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156128d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e76616c696420616464726573732e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b33600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b612c12848484614770565b9050612c2360003386866001613ec8565b509392505050565b6040518060400160405280600381526020017f44524d000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612d69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b612dfb858585614149565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f6a90205728cf0205d55880cdde56e1ad91042bdbc3bcc0b23d2c27bb5cf7d9b586866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612eab578082015181840152602081019050612e90565b50505050905090810190601f168015612ed85780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4949350505050565b6000612efc8585858561495a565b9050612f0c853386866000613ec8565b50949350505050565b6000612f5783836040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152506122a9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507fc1086893b0a3f1d991fd25e26cd28cad11de174842b04a55cc2423ed178e4382600560009054906101000a900460ff1682604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156130fa5780820151818401526020810190506130df565b50505050905090810190601f1680156131275780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150565b60006131448484614ae1565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77239679570d54f38632b488ca24b30b0af8d819606bf0ec18d7d99e96b19cae600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561325957808201518184015260208101905061323e565b50505050905090810190601f1680156132865780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b60006132a78484614cdd565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77239679570d54f38632b488ca24b30b0af8d819606bf0ec18d7d99e96b19cae85856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613340578082015181840152602081019050613325565b50505050905090810190601f16801561336d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6000865190508551811415156134e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180615d286034913960400191505060405180910390fd5b835181141515613543576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180615cb06038913960400191505060405180910390fd5b6001915060008090505b81811015613782573073ffffffffffffffffffffffffffffffffffffffff16888281518110151561357a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156135f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b828015613635575061363489898381518110151561360d57fe5b90602001906020020151898481518110151561362557fe5b90602001906020020151614149565b5b9250878181518110151561364557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f0756e9e3ca921f3b28346842dd6bdda971a88385df905bf4932d5fb592cb78de8a858151811015156136c257fe5b906020019060200201518a8a878151811015156136db57fe5b906020019060200201518a6040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561373857808201518184015260208101905061371d565b50505050905090810190601f1680156137655780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4808060010191505061354d565b50509695505050505050565b60076020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156138ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600560009054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821415613af4576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613b4d565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8273ffffffffffffffffffffffffffffffffffffffff167fb19425af6288c6bb0d88f64d6d1cfe5eb7e2d31ee92f1012798df97a9b6b011a83836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613bcd578082015181840152602081019050613bb2565b50505050905090810190601f168015613bfa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b6000613c29838360405180602001604052806000815250613138565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b613ded8484614dcf565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c8ac1e6379ab62c2a39d49981d2b551abd0dc362f89505199e901ddc1049a0685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613e86578082015181840152602081019050613e6b565b50505050905090810190601f168015613eb35780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b6000613ed384614fa5565b1561413c57600060608573ffffffffffffffffffffffffffffffffffffffff1688888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001826002811115613f7457fe5b60ff1681526020019450505050506040516020818303038152906040527fb426731e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083101515614034578051825260208201915060208101905060208303925061400f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614096576040519150601f19603f3d011682016040523d82523d6000602084013e61409b565b606091505b50915091508115614139578573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f9bc5e5b765eb3800a4f2933f7dffb732aa6f102500d615c1b9fea9af4078e71c88886040518083815260200182600281111561412457fe5b60ff1681526020019250505060405180910390a45b50505b6001905095945050505050565b60008382600560009054906101000a900460ff1615806141b25750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515614226576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546865206163636f756e742069732063757272656e746c79206c6f636b65642e81525060200191505060405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b7826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b10151515614310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526040815260200180615ce86040913960400191505060405180910390fd5b61431b868686614ff0565b925050509392505050565b600061436883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506154e6565b905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156143f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b61440384846155a8565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f274b6351ee9275e4f541cee5cc8d12ca6b722461ae93493fe8087d7e5ee3a60285856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561449c578082015181840152602081019050614481565b50505050905090810190601f1680156144c95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156145f0576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614684565b614603838261432690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515614875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b61487f8484615783565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f35aa66cfed0c0155442a4fa70e91286c72ff12c690448ca812285a85de552cbe85856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156149185780820151818401526020810190506148fd565b50505050905090810190601f1680156149455780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b60003073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156149e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b6149ee858585614149565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f117a5e08f3c9d47f1f67a5699034676b58b399d6acf924a8e8849e46561daf9986866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a9e578082015181840152602081019050614a83565b50505050905090810190601f168015614acb5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4949350505050565b6000614b7282600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515614e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f596f75722062616c616e636520697320696e73756666696369656e742e00000081525060200191505060405180910390fd5b614ed8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f2f8260015461432690919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015614fe75750808214155b92505050919050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156150a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f7567682062616c616e63652e0000000000000000000000000081525060200191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561519c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616c6c6f7765642e000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515615241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e76616c696420616464726573732e0000000000000000000000000000000081525060200191505060405180910390fd5b615292826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615325826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153f682600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008383111582901515615595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561555a57808201518184015260208101905061553f565b50505050905090810190601f1680156155875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60003382600560009054906101000a900460ff1615806156115750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515615685576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546865206163636f756e742069732063757272656e746c79206c6f636b65642e81525060200191505060405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615716826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b1015151561576f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526040815260200180615ce86040913960400191505060405180910390fd5b61577985856159b4565b9250505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561580c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526043815260200180615c6d6043913960600191505060405180910390fd5b6158218260015461592a90919063ffffffff16565b600181905550615878826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008082840190508381101515156159aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515615a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180615d9a6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515615ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615d5c603e913960400191505060405180910390fd5b615b28826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615bbb826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509291505056fe54686973206164647265737320746f20626520736574206973207a65726f20616464726573732830292e20436865636b2074686520696e70757420616464726573732e5468652073697a6573206f662027746f2720616e6420277573657249644861736827206172726179732061726520646966666572656e742e5472616e7366657261626c65206c696d69742065786365656465642e20436865636b2074686520737461747573206f6620746865206c6f636b2076616c75652e5468652073697a6573206f662027746f2720616e64202776616c75657327206172726179732061726520646966666572656e742e526563697069656e742061646472657373206973207a65726f20616464726573732830292e20436865636b20746865206164647265737320616761696e2e5468652062616c616e6365206f66206163636f756e7420697320696e73756666696369656e742e546865207265636569766520616464726573732069732074686520436f6e746163742041646472657373206f6620446f447265616d436861696e2ea165627a7a72305820985148aadbd0198d75894343f5157364982fc3c0733a4582b67b2f4188d1df190029
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021b5760003560e01c806383197ef011610125578063b8fb5d1b116100ad578063cf3090121161007c578063cf309012146116d8578063d712800f146116fa578063d73dd623146117df578063dd62ed3e14611845578063ebf0c717146118bd5761021b565b8063b8fb5d1b1461126e578063c7c021731461136b578063cb619a3314611624578063cd5c4c701461167c5761021b565b80639ec5ee16116100f45780639ec5ee1614610e16578063a6b5ca4f14610f33578063a9059cbb14611050578063a96ce7aa146110b6578063affa26ca146111715761021b565b806383197ef014610c305780638595245414610c3a5780638d8496a614610c9657806395d89b4114610d935761021b565b8063320a98fd116101a8578063505450d411610177578063505450d41461093e5780635876ec671461099a5780636618846314610a975780636bd5e26a14610afd57806370a0823114610bd85761021b565b8063320a98fd1461064b57806348832f32146107065780634aa678c31461082357806350131cd4146108415761021b565b806318160ddd116101ef57806318160ddd1461046857806321e626da1461048657806323b872dd146105835780632ff2e9dc14610609578063313ce567146106275761021b565b80623078b014610220578063022914a7146102fb57806306fdde031461037f578063095ea7b314610402575b600080fd5b6102f96004803603604081101561023657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561027357600080fd5b82018360208201111561028557600080fd5b803590602001918460018302840111640100000000831117156102a757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611907565b005b61033d6004803603602081101561031157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610387611b66565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c75780820151818401526020810190506103ac565b50505050905090810190601f1680156103f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61044e6004803603604081101561041857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b9f565b604051808215151515815260200191505060405180910390f35b610470611bc3565b6040518082815260200191505060405180910390f35b6105696004803603606081101561049c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104e357600080fd5b8201836020820111156104f557600080fd5b8035906020019184600183028401116401000000008311171561051757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bcd565b604051808215151515815260200191505060405180910390f35b6105ef6004803603606081101561059957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf6565b604051808215151515815260200191505060405180910390f35b610611611d1c565b6040518082815260200191505060405180910390f35b61062f611d2d565b604051808260ff1660ff16815260200191505060405180910390f35b6107046004803603602081101561066157600080fd5b810190808035906020019064010000000081111561067e57600080fd5b82018360208201111561069057600080fd5b803590602001918460018302840111640100000000831117156106b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d32565b005b6108096004803603608081101561071c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561078357600080fd5b82018360208201111561079557600080fd5b803590602001918460018302840111640100000000831117156107b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611f0b565b604051808215151515815260200191505060405180910390f35b61082b612198565b6040518082815260200191505060405180910390f35b6109246004803603606081101561085757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561089e57600080fd5b8201836020820111156108b057600080fd5b803590602001918460018302840111640100000000831117156108d257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506122a9565b604051808215151515815260200191505060405180910390f35b6109806004803603602081101561095457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122ce565b604051808215151515815260200191505060405180910390f35b610a7d600480360360608110156109b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156109f757600080fd5b820183602082011115610a0957600080fd5b80359060200191846001830284011164010000000083111715610a2b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506122ee565b604051808215151515815260200191505060405180910390f35b610ae360048036036040811015610aad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612451565b604051808215151515815260200191505060405180910390f35b610bd660048036036040811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610b5057600080fd5b820183602082011115610b6257600080fd5b80359060200191846001830284011164010000000083111715610b8457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612475565b005b610c1a60048036036020811015610bee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126a8565b6040518082815260200191505060405180910390f35b610c386126f0565b005b610c7c60048036036020811015610c5057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ce565b604051808215151515815260200191505060405180910390f35b610d7960048036036060811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610cf357600080fd5b820183602082011115610d0557600080fd5b80359060200191846001830284011164010000000083111715610d2757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612b02565b604051808215151515815260200191505060405180910390f35b610d9b612c2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ddb578082015181840152602081019050610dc0565b50505050905090810190601f168015610e085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f1960048036036080811015610e2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610e9357600080fd5b820183602082011115610ea557600080fd5b80359060200191846001830284011164010000000083111715610ec757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612c64565b604051808215151515815260200191505060405180910390f35b61103660048036036080811015610f4957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610fb057600080fd5b820183602082011115610fc257600080fd5b80359060200191846001830284011164010000000083111715610fe457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612eee565b604051808215151515815260200191505060405180910390f35b61109c6004803603604081101561106657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f15565b604051808215151515815260200191505060405180910390f35b61116f600480360360208110156110cc57600080fd5b81019080803590602001906401000000008111156110e957600080fd5b8201836020820111156110fb57600080fd5b8035906020019184600183028401116401000000008311171561111d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612f5f565b005b6112546004803603606081101561118757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156111ce57600080fd5b8201836020820111156111e057600080fd5b8035906020019184600183028401116401000000008311171561120257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613138565b604051808215151515815260200191505060405180910390f35b6113516004803603606081101561128457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156112cb57600080fd5b8201836020820111156112dd57600080fd5b803590602001918460018302840111640100000000831117156112ff57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061329b565b604051808215151515815260200191505060405180910390f35b61160a600480360360c081101561138157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156113be57600080fd5b8201836020820111156113d057600080fd5b803590602001918460208302840111640100000000831117156113f257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561145257600080fd5b82018360208201111561146457600080fd5b8035906020019184602083028401116401000000008311171561148657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001906401000000008111156114f057600080fd5b82018360208201111561150257600080fd5b8035906020019184602083028401116401000000008311171561152457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561158457600080fd5b82018360208201111561159657600080fd5b803590602001918460018302840111640100000000831117156115b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613382565b604051808215151515815260200191505060405180910390f35b6116666004803603602081101561163a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061378e565b6040518082815260200191505060405180910390f35b6116be6004803603602081101561169257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137a6565b604051808215151515815260200191505060405180910390f35b6116e0613933565b604051808215151515815260200191505060405180910390f35b6117dd6004803603606081101561171057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561175757600080fd5b82018360208201111561176957600080fd5b8035906020019184600183028401116401000000008311171561178b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613946565b005b61182b600480360360408110156117f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c0d565b604051808215151515815260200191505060405180910390f35b6118a76004803603604081101561185b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c31565b6040518082815260200191505060405180910390f35b6118c5613cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611a0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b611a1782600083613946565b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4bf46282901af80a4309ce07c36d841184ce98297f8735f7769d169497ac7a4c600083604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611af4578082015181840152602081019050611ad9565b50505050905090810190601f168015611b215780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600c81526020017f446f447265616d436861696e000000000000000000000000000000000000000081525081565b6000611bbb83836040518060200160405280600081525061329b565b905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b611cdd848484613cde565b9050611cee60003386866002613ec8565b509392505050565b6000611d1384848460405180602001604052806000815250612eee565b90509392505050565b601260ff16600a0a630ee6b2800281565b601281565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507fc1086893b0a3f1d991fd25e26cd28cad11de174842b04a55cc2423ed178e4382600560009054906101000a900460ff1682604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ecd578082015181840152602081019050611eb2565b50505050905090810190601f168015611efa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b6120a2858585614149565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc156e33959f4e0f085a1d91609a1451710062ea2d393920745802a56cf3619ca86866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612152578082015181840152602081019050612137565b50505050905090810190601f16801561217f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4809050949350505050565b600080339050600560009054906101000a900460ff1615806122035750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122a057612298600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b9150506122a6565b60009150505b90565b60006122b6848484614370565b90506122c6333386866000613ec8565b509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006122fa84846144de565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77239679570d54f38632b488ca24b30b0af8d819606bf0ec18d7d99e96b19cae600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561240f5780820151818401526020810190506123f4565b50505050905090810190601f16801561243c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b600061246d8383604051806020016040528060008152506122ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b61258c82612586846126a8565b83613946565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4bf46282901af80a4309ce07c36d841184ce98297f8735f7769d169497ac7a4c600183604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561266957808201518184015260208101905061264e565b50505050905090810190601f1680156126965780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7065726d697373696f6e206572726f725b6f6e6c79526f6f745d00000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156128d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612978576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e76616c696420616464726573732e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b33600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b612c12848484614770565b9050612c2360003386866001613ec8565b509392505050565b6040518060400160405280600381526020017f44524d000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515612d69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b612dfb858585614149565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f6a90205728cf0205d55880cdde56e1ad91042bdbc3bcc0b23d2c27bb5cf7d9b586866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612eab578082015181840152602081019050612e90565b50505050905090810190601f168015612ed85780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4949350505050565b6000612efc8585858561495a565b9050612f0c853386866000613ec8565b50949350505050565b6000612f5783836040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152506122a9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507fc1086893b0a3f1d991fd25e26cd28cad11de174842b04a55cc2423ed178e4382600560009054906101000a900460ff1682604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156130fa5780820151818401526020810190506130df565b50505050905090810190601f1680156131275780820380516001836020036101000a031916815260200191505b50935050505060405180910390a150565b60006131448484614ae1565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77239679570d54f38632b488ca24b30b0af8d819606bf0ec18d7d99e96b19cae600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561325957808201518184015260208101905061323e565b50505050905090810190601f1680156132865780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b60006132a78484614cdd565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f77239679570d54f38632b488ca24b30b0af8d819606bf0ec18d7d99e96b19cae85856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613340578082015181840152602081019050613325565b50505050905090810190601f16801561336d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6000865190508551811415156134e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180615d286034913960400191505060405180910390fd5b835181141515613543576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180615cb06038913960400191505060405180910390fd5b6001915060008090505b81811015613782573073ffffffffffffffffffffffffffffffffffffffff16888281518110151561357a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156135f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b828015613635575061363489898381518110151561360d57fe5b90602001906020020151898481518110151561362557fe5b90602001906020020151614149565b5b9250878181518110151561364557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f0756e9e3ca921f3b28346842dd6bdda971a88385df905bf4932d5fb592cb78de8a858151811015156136c257fe5b906020019060200201518a8a878151811015156136db57fe5b906020019060200201518a6040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561373857808201518184015260208101905061371d565b50505050905090810190601f1680156137655780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4808060010191505061354d565b50509695505050505050565b60076020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156138ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600560009054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821415613af4576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613b4d565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8273ffffffffffffffffffffffffffffffffffffffff167fb19425af6288c6bb0d88f64d6d1cfe5eb7e2d31ee92f1012798df97a9b6b011a83836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613bcd578082015181840152602081019050613bb2565b50505050905090810190601f168015613bfa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b6000613c29838360405180602001604052806000815250613138565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b613ded8484614dcf565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c8ac1e6379ab62c2a39d49981d2b551abd0dc362f89505199e901ddc1049a0685856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613e86578082015181840152602081019050613e6b565b50505050905090810190601f168015613eb35780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b6000613ed384614fa5565b1561413c57600060608573ffffffffffffffffffffffffffffffffffffffff1688888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001826002811115613f7457fe5b60ff1681526020019450505050506040516020818303038152906040527fb426731e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083101515614034578051825260208201915060208101905060208303925061400f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614096576040519150601f19603f3d011682016040523d82523d6000602084013e61409b565b606091505b50915091508115614139578573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f9bc5e5b765eb3800a4f2933f7dffb732aa6f102500d615c1b9fea9af4078e71c88886040518083815260200182600281111561412457fe5b60ff1681526020019250505060405180910390a45b50505b6001905095945050505050565b60008382600560009054906101000a900460ff1615806141b25750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515614226576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546865206163636f756e742069732063757272656e746c79206c6f636b65642e81525060200191505060405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142b7826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b10151515614310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526040815260200180615ce86040913960400191505060405180910390fd5b61431b868686614ff0565b925050509392505050565b600061436883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506154e6565b905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156143f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b61440384846155a8565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f274b6351ee9275e4f541cee5cc8d12ca6b722461ae93493fe8087d7e5ee3a60285856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561449c578082015181840152602081019050614481565b50505050905090810190601f1680156144c95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156145f0576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614684565b614603838261432690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515614875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7065726d697373696f6e206572726f725b6f6e6c794f776e65725d000000000081525060200191505060405180910390fd5b61487f8484615783565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f35aa66cfed0c0155442a4fa70e91286c72ff12c690448ca812285a85de552cbe85856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156149185780820151818401526020810190506148fd565b50505050905090810190601f1680156149455780820380516001836020036101000a031916815260200191505b50935050505060405180910390a39392505050565b60003073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156149e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180615dc1603b913960400191505060405180910390fd5b6149ee858585614149565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f117a5e08f3c9d47f1f67a5699034676b58b399d6acf924a8e8849e46561daf9986866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a9e578082015181840152602081019050614a83565b50505050905090810190601f168015614acb5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4949350505050565b6000614b7282600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515614e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f596f75722062616c616e636520697320696e73756666696369656e742e00000081525060200191505060405180910390fd5b614ed8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f2f8260015461432690919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015614fe75750808214155b92505050919050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156150a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f7567682062616c616e63652e0000000000000000000000000081525060200191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561519c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616c6c6f7765642e000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515615241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e76616c696420616464726573732e0000000000000000000000000000000081525060200191505060405180910390fd5b615292826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615325826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153f682600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008383111582901515615595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561555a57808201518184015260208101905061553f565b50505050905090810190601f1680156155875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60003382600560009054906101000a900460ff1615806156115750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1515615685576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546865206163636f756e742069732063757272656e746c79206c6f636b65642e81525060200191505060405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615716826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b1015151561576f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526040815260200180615ce86040913960400191505060405180910390fd5b61577985856159b4565b9250505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561580c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526043815260200180615c6d6043913960600191505060405180910390fd5b6158218260015461592a90919063ffffffff16565b600181905550615878826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008082840190508381101515156159aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515615a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180615d9a6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515615ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180615d5c603e913960400191505060405180910390fd5b615b28826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615bbb826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461592a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509291505056fe54686973206164647265737320746f20626520736574206973207a65726f20616464726573732830292e20436865636b2074686520696e70757420616464726573732e5468652073697a6573206f662027746f2720616e6420277573657249644861736827206172726179732061726520646966666572656e742e5472616e7366657261626c65206c696d69742065786365656465642e20436865636b2074686520737461747573206f6620746865206c6f636b2076616c75652e5468652073697a6573206f662027746f2720616e64202776616c75657327206172726179732061726520646966666572656e742e526563697069656e742061646472657373206973207a65726f20616464726573732830292e20436865636b20746865206164647265737320616761696e2e5468652062616c616e6365206f66206163636f756e7420697320696e73756666696369656e742e546865207265636569766520616464726573732069732074686520436f6e746163742041646472657373206f6620446f447265616d436861696e2ea165627a7a72305820985148aadbd0198d75894343f5157364982fc3c0733a4582b67b2f4188d1df190029
Deployed Bytecode Sourcemap
3155:2361:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3155:2361:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1566:195:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1566:195:5;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1566:195:5;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1566:195:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1566:195:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1566:195:5;;;;;;;;;;;;;;;:::i;:::-;;112:42:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;112:42:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3387:44:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3387:44:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2221:127:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2221:127:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;400:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5247:264:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5247:264:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5247:264:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5247:264:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5247:264:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5247:264:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1702:147:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1702:147:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3520:86:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3478:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1094:119:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1094:119:5;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1094:119:5;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1094:119:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1094:119:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1094:119:5;;;;;;;;;;;;;;;:::i;:::-;;4861:420:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4861:420:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4861:420:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4861:420:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4861:420:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4861:420:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2150:243:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3885:255:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3885:255:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3885:255:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3885:255:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3885:255:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3885:255:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;303:43:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;303:43:5;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3185:274:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3185:274:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3185:274:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3185:274:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3185:274:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3185:274:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3012:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3012:165:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1351:207:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1351:207:5;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1351:207:5;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1351:207:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1351:207:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1351:207:5;;;;;;;;;;;;;;;:::i;:::-;;1293:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1293:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6872:78:2;;;:::i;:::-;;658:257:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;658:257:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4982::1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4982:257:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4982:257:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4982:257:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4982:257:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4982:257:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3436:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3436:37:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5376:405:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5376:405:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5376:405:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5376:405:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5376:405:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5376:405:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4146:279:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4146:279:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4146:279:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4146:279:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4146:279:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4146:279:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1251:131:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1251:131:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1221:122:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1221:122:5;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1221:122:5;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1221:122:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1221:122:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1221:122:5;;;;;;;;;;;;;;;:::i;:::-;;2740:264:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2740:264:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2740:264:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2740:264:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2740:264:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2740:264:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2356:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2356:213:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2356:213:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2356:213:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2356:213:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2356:213:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5967:893;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5967:893:2;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5967:893:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5967:893:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5967:893:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5967:893:2;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5967:893:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5967:893:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5967:893:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5967:893:2;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5967:893:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5967:893:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5967:893:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5967:893:2;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5967:893:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5967:893:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5967:893:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5967:893:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;480:45:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;480:45:5;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;961:129:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;961:129:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;185:25:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1769:315;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1769:315:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1769:315:5;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1769:315:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1769:315:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1769:315:5;;;;;;;;;;;;;;;:::i;:::-;;2577:155:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2577:155:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2443:162:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2443:162:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;88:19:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1566:195:5;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:27:5;1659:4;1665:1;1668:4;1646:12;:27::i;:::-;1704:4;1684:11;:17;1696:4;1684:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1735:4;1726:27;;;1741:5;1748:4;1726:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1726:27:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1566:195;;:::o;112:42:6:-;;;;;;;;;;;;;;;;;;;;;;:::o;3387:44:1:-;;;;;;;;;;;;;;;;;;;:::o;2221:127:2:-;2286:4;2310:30;2321:7;2330:5;2310:30;;;;;;;;;;;;:10;:30::i;:::-;2303:37;;2221:127;;;;:::o;400:85:0:-;444:7;467:12;;460:19;;400:85;:::o;5247:264:1:-;5343:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5370:36:1;5388:4;5394:5;5401:4;5370:17;:36::i;:::-;5364:42;;5417:86;5438:1;5442:10;5454:4;5460:5;5467:35;5417:12;:86::i;:::-;;5247:264;;;;;:::o;1702:147:2:-;1781:4;1805:36;1821:4;1827:2;1831:5;1805:36;;;;;;;;;;;;:15;:36::i;:::-;1798:43;;1702:147;;;;;:::o;3520:86:1:-;3511:2;3588:17;;3582:2;:23;3561:17;:45;3520:86;:::o;3478:35::-;3511:2;3478:35;:::o;1094:119:5:-;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1165:4:5;1156:6;;:13;;;;;;;;;;;;;;;;;;1185:20;1192:6;;;;;;;;;;;1200:4;1185:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1185:20:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1094:119;:::o;4861:420:2:-;5018:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5061:4:2;5047:19;;:2;:19;;;;5039:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5149:35;5168:4;5174:2;5178:5;5149:18;:35::i;:::-;5143:41;;5236:2;5200:52;;5224:10;5200:52;;5218:4;5200:52;;;5240:5;5247:4;5200:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5200:52:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5270:3;5263:10;;4861:420;;;;;;:::o;2150:243:5:-;2199:7;2219:12;2234:10;2219:25;;2261:6;;;;;;;;;;;2260:7;:28;;;;2271:11;:17;2283:4;2271:17;;;;;;;;;;;;;;;;;;;;;;;;;2260:28;2255:130;;;2312:36;2331:10;:16;2342:4;2331:16;;;;;;;;;;;;;;;;2312:8;:14;2321:4;2312:14;;;;;;;;;;;;;;;;:18;;:36;;;;:::i;:::-;2305:43;;;;;2255:130;2384:1;2377:8;;;2150:243;;:::o;3885:255:1:-;3973:8;3998:37;4016:3;4021:6;4029:5;3998:17;:37::i;:::-;3992:43;;4044:90;4057:10;4069;4081:3;4086:6;4094:39;4044:12;:90::i;:::-;;3885:255;;;;;:::o;303:43:5:-;;;;;;;;;;;;;;;;;;;;;;:::o;3185:274:2:-;3292:8;3319:48;3342:7;3351:15;3319:22;:48::i;:::-;3313:54;;3407:7;3383:68;;3395:10;3383:68;;;3416:7;:19;3424:10;3416:19;;;;;;;;;;;;;;;:28;3436:7;3416:28;;;;;;;;;;;;;;;;3446:4;3383:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3383:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3185:274;;;;;:::o;3012:165::-;3096:4;3120:49;3140:7;3149:15;3120:49;;;;;;;;;;;;:19;:49::i;:::-;3113:56;;3012:165;;;;:::o;1351:207:5:-;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1429:41:5;1442:4;1448:15;1458:4;1448:9;:15::i;:::-;1465:4;1429:12;:41::i;:::-;1501:5;1481:11;:17;1493:4;1481:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1533:4;1524:26;;;1539:4;1545;1524:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1524:26:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1351:207;;:::o;1293:101:0:-;1349:7;1372:8;:16;1381:6;1372:16;;;;;;;;;;;;;;;;1365:23;;1293:101;;;:::o;6872:78:2:-;566:4:6;;;;;;;;;;;552:18;;:10;:18;;;544:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6931:10:2;6918:24;;;658:257:6;720:4;462:1;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;759:1;741:20;;:6;:20;;;;733:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;823:1;797:28;;:6;:14;804:6;797:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;789:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;881:10;864:6;:14;871:6;864:14;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;905:4;898:11;;658:257;;;:::o;4982::1:-;5075:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5102:33:1;5118:2;5122:6;5130:4;5102:15;:33::i;:::-;5096:39;;5146:85;5167:1;5171:10;5183:2;5187:6;5195:35;5146:12;:85::i;:::-;;4982:257;;;;;:::o;3436:37::-;;;;;;;;;;;;;;;;;;;:::o;5376:405:2:-;5536:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5579:4:2;5565:19;;:2;:19;;;;5557:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:35;5686:4;5692:2;5696:5;5667:18;:35::i;:::-;5661:41;;5757:2;5718:55;;5745:10;5718:55;;5739:4;5718:55;;;5761:5;5768:4;5718:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5718:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5376:405;;;;;;:::o;4146:279:1:-;4252:8;4277:48;4299:5;4306:3;4311:6;4319:5;4277:21;:48::i;:::-;4271:54;;4334:85;4347:5;4354:10;4366:3;4371:6;4379:39;4334:12;:85::i;:::-;;4146:279;;;;;;:::o;1251:131:2:-;1312:8;1340:34;1352:2;1356:5;1340:34;;;;;;;;;;;;;;;;;:11;:34::i;:::-;1333:41;;1251:131;;;;:::o;1221:122:5:-;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1294:5:5;1285:6;;:14;;;;;;;;;;;;;;;;;;1315:20;1322:6;;;;;;;;;;;1330:4;1315:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1315:20:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1221:122;:::o;2740:264:2:-;2842:8;2869:43;2892:7;2901:10;2869:22;:43::i;:::-;2863:49;;2952:7;2928:68;;2940:10;2928:68;;;2961:7;:19;2969:10;2961:19;;;;;;;;;;;;;;;:28;2981:7;2961:28;;;;;;;;;;;;;;;;2991:4;2928:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2928:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2740:264;;;;;:::o;2356:213::-;2444:8;2471:29;2485:7;2494:5;2471:13;:29::i;:::-;2465:35;;2540:7;2516:45;;2528:10;2516:45;;;2549:5;2556:4;2516:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2516:45:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2356:213;;;;;:::o;5967:893::-;6214:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:14:2;6252:2;:9;6235:26;;6290:6;:13;6280:6;:23;6272:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6393:10;:17;6383:6;:27;6375:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6494:4;6488:10;;6514:9;6526:1;6514:13;;6509:344;6533:6;6529:1;:10;6509:344;;;6586:4;6569:22;;:2;6572:1;6569:5;;;;;;;;;;;;;;;;;;:22;;;;6561:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6678:3;:49;;;;;6685:42;6704:4;6710:2;6713:1;6710:5;;;;;;;;;;;;;;;;;;6717:6;6724:1;6717:9;;;;;;;;;;;;;;;;;;6685:18;:42::i;:::-;6678:49;6672:55;;6788:2;6791:1;6788:5;;;;;;;;;;;;;;;;;;6747:94;;6776:10;6747:94;;6770:4;6747:94;;;6795:6;6802:1;6795:9;;;;;;;;;;;;;;;;;;6806:13;6821:10;6832:1;6821:13;;;;;;;;;;;;;;;;;;6836:4;6747:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6747:94:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6541:3;;;;;;;6509:344;;;;503:1:6;5967:893:2;;;;;;;;:::o;480:45:5:-;;;;;;;;;;;;;;;;;:::o;961:129:6:-;1026:4;462:1;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:1;1039:6;:14;1046:6;1039:14;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1080:4;1073:11;;961:129;;;:::o;185:25:5:-;;;;;;;;;;;;;:::o;1769:315::-;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:5:5;1868:10;:16;1879:4;1868:16;;;;;;;;;;;;;;;:24;;;;1915:1;1906:5;:10;1903:125;;;1952:4;1932:11;:17;1944:4;1932:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1903:125;;;2011:5;1991:11;:17;2003:4;1991:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1903:125;2058:4;2045:31;;;2064:5;2071:4;2045:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2045:31:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1769:315;;;:::o;2577:155:2:-;2656:4;2680:44;2700:7;2709:10;2680:44;;;;;;;;;;;;:19;:44::i;:::-;2673:51;;2577:155;;;;:::o;2443:162:8:-;2548:7;2574;:15;2582:6;2574:15;;;;;;;;;;;;;;;:25;2590:8;2574:25;;;;;;;;;;;;;;;;2567:32;;2443:162;;;;:::o;88:19:6:-;;;;;;;;;;;;;:::o;4575:210:2:-;4671:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4698:21:2;4707:4;4713:5;4698:8;:21::i;:::-;4692:27;;4759:4;4735:42;;4747:10;4735:42;;;4765:5;4772:4;4735:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4735:42:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:210;;;;;:::o;4431:545:1:-;4574:4;4595:22;4614:2;4595:18;:22::i;:::-;4591:354;;;4649:11;4662:17;4691:2;4683:16;;4772:5;4779:7;4788:5;4795:11;4700:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4700:107:1;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;4700:107:1;4683:125;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4683:125:1;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4648:160:1;;;;4827:6;4823:111;;;4895:2;4859:59;;4886:7;4859:59;;4879:5;4859:59;;;4899:5;4906:11;4859:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4823:111;4591:354;;;4964:4;4957:11;;4431:545;;;;;;;:::o;2558:171:5:-;2662:4;2640;2646:5;869:6;;;;;;;;;;;868:7;:28;;;;879:11;:17;891:4;879:17;;;;;;;;;;;;;;;;;;;;;;;;;868:28;860:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;981:10;:16;992:4;981:16;;;;;;;;;;;;;;;;952:25;971:5;952:8;:14;961:4;952:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;:45;;944:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2686:35;2705:4;2711:2;2715:5;2686:18;:35::i;:::-;2679:42;;2558:171;;;;;;;:::o;1315:136:7:-;1373:7;1400:43;1404:1;1407;1400:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1393:50;;1315:136;;;;:::o;1390:304:2:-;1474:8;1517:4;1503:19;;:2;:19;;;;1495:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1605:25;1620:2;1624:5;1605:14;:25::i;:::-;1599:31;;1670:2;1646:40;;1658:10;1646:40;;;1674:5;1681:4;1646:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1646:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:304;;;;;:::o;3843:447:8:-;3954:4;3970:16;3989:7;:19;3997:10;3989:19;;;;;;;;;;;;;;;:29;4009:8;3989:29;;;;;;;;;;;;;;;;3970:48;;4049:8;4029:16;:28;;4025:169;;;4100:1;4068:7;:19;4076:10;4068:19;;;;;;;;;;;;;;;:29;4088:8;4068:29;;;;;;;;;;;;;;;:33;;;;4025:169;;;4156:30;4169:16;4156:8;:12;;:30;;;;:::i;:::-;4124:7;:19;4132:10;4124:19;;;;;;;;;;;;;;;:29;4144:8;4124:29;;;;;;;;;;;;;;;:62;;;;4025:169;4226:8;4205:61;;4214:10;4205:61;;;4236:7;:19;4244:10;4236:19;;;;;;;;;;;;;;;:29;4256:8;4236:29;;;;;;;;;;;;;;;;4205:61;;;;;;;;;;;;;;;;;;4280:4;4273:11;;;3843:447;;;;:::o;3932:201:2:-;4025:8;462:1:6;432:32;;:6;:18;439:10;432:18;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;424:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4052:18:2;4059:2;4063:6;4052;:18::i;:::-;4046:24;;4108:2;4086:39;;4096:10;4086:39;;;4112:6;4120:4;4086:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4086:39:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:201;;;;;:::o;1871:342::-;1973:8;2016:4;2002:19;;:2;:19;;;;1994:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:35;2123:4;2129:2;2133:5;2104:18;:35::i;:::-;2098:41;;2189:2;2155:50;;2177:10;2155:50;;2171:4;2155:50;;;2193:5;2200:4;2155:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2155:50:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1871:342;;;;;;:::o;3068:307:8:-;3174:4;3231:46;3265:11;3231:7;:19;3239:10;3231:19;;;;;;;;;;;;;;;:29;3251:8;3231:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;3190:7;:19;3198:10;3190:19;;;;;;;;;;;;;;;:29;3210:8;3190:29;;;;;;;;;;;;;;;:88;;;;3311:8;3290:61;;3299:10;3290:61;;;3321:7;:19;3329:10;3321:19;;;;;;;;;;;;;;;:29;3341:8;3321:29;;;;;;;;;;;;;;;;3290:61;;;;;;;;;;;;;;;;;;3365:4;3358:11;;3068:307;;;;:::o;1924:192::-;1991:4;2036:6;2004:7;:19;2012:10;2004:19;;;;;;;;;;;;;;;:29;2024:8;2004:29;;;;;;;;;;;;;;;:38;;;;2075:8;2054:38;;2063:10;2054:38;;;2085:6;2054:38;;;;;;;;;;;;;;;;;;2106:4;2099:11;;1924:192;;;;:::o;4235:332:2:-;4300:4;4334:8;:14;4343:4;4334:14;;;;;;;;;;;;;;;;4325:5;:23;;4317:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4412:25;4431:5;4412:8;:14;4421:4;4412:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;4395:8;:14;4404:4;4395:14;;;;;;;;;;;;;;;:42;;;;4463:23;4480:5;4463:12;;:16;;:23;;;;:::i;:::-;4448:12;:38;;;;4527:1;4504:33;;4513:4;4504:33;;;4531:5;4504:33;;;;;;;;;;;;;;;;;;4555:4;4548:11;;4235:332;;;;:::o;612:810:1:-;672:4;1125:16;1152:19;1174:66;1152:88;;;;1343:7;1331:20;1319:32;;1383:3;1371:15;;:8;:15;;:42;;;;;1402:11;1390:8;:23;;1371:42;1363:51;;;;612:810;;;:::o;749:546:8:-;861:4;895:8;:15;904:5;895:15;;;;;;;;;;;;;;;;885:6;:25;;877:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;959:7;:14;967:5;959:14;;;;;;;;;;;;;;;:26;974:10;959:26;;;;;;;;;;;;;;;;949:6;:36;;941:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1032:1;1017:17;;:3;:17;;;;1009:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1082:27;1102:6;1082:8;:15;1091:5;1082:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;1064:8;:15;1073:5;1064:15;;;;;;;;;;;;;;;:45;;;;1132:25;1150:6;1132:8;:13;1141:3;1132:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;1116:8;:13;1125:3;1116:13;;;;;;;;;;;;;;;:41;;;;1193:38;1224:6;1193:7;:14;1201:5;1193:14;;;;;;;;;;;;;;;:26;1208:10;1193:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;1164:7;:14;1172:5;1164:14;;;;;;;;;;;;;;;:26;1179:10;1164:26;;;;;;;;;;;;;;;:67;;;;1259:3;1243:28;;1252:5;1243:28;;;1264:6;1243:28;;;;;;;;;;;;;;;;;;1285:4;1278:11;;749:546;;;;;:::o;1788:192:7:-;1874:7;1907:1;1902;:6;;1910:12;1894:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1894:29:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1934:9;1950:1;1946;:5;1934:17;;1971:1;1964:8;;;1788:192;;;;;:::o;2401:149:5:-;2493:4;2465:10;2477:5;869:6;;;;;;;;;;;868:7;:28;;;;879:11;:17;891:4;879:17;;;;;;;;;;;;;;;;;;;;;;;;;868:28;860:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;981:10;:16;992:4;981:16;;;;;;;;;;;;;;;;952:25;971:5;952:8;:14;961:4;952:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;:45;;944:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2517:25;2532:2;2536:5;2517:14;:25::i;:::-;2510:32;;2401:149;;;;;;:::o;3561:363:2:-;3623:4;3662:3;3648:18;;:2;:18;;;;3640:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3770:24;3787:6;3770:12;;:16;;:24;;;;:::i;:::-;3755:12;:39;;;;3820:24;3837:6;3820:8;:12;3829:2;3820:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;3805:8;:12;3814:2;3805:12;;;;;;;;;;;;;;;:39;;;;3883:2;3862:32;;3879:1;3862:32;;;3887:6;3862:32;;;;;;;;;;;;;;;;;;3912:4;3905:11;;3561:363;;;;:::o;859:181:7:-;917:7;937:9;953:1;949;:5;937:17;;978:1;973;:6;;965:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:1;1024:8;;;859:181;;;;:::o;646:438:0:-;709:4;740:8;:20;749:10;740:20;;;;;;;;;;;;;;;;730:6;:30;;722:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;834:1;819:17;;:3;:17;;;;811:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;935:32;960:6;935:8;:20;944:10;935:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;912:8;:20;921:10;912:20;;;;;;;;;;;;;;;:55;;;;990:25;1008:6;990:8;:13;999:3;990:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;974:8;:13;983:3;974:13;;;;;;;;;;;;;;;:41;;;;1048:3;1027:33;;1036:10;1027:33;;;1053:6;1027:33;;;;;;;;;;;;;;;;;;1074:4;1067:11;;646:438;;;;:::o
Swarm Source
bzzr://985148aadbd0198d75894343f5157364982fc3c0733a4582b67b2f4188d1df19
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.