Source Code
Overview
ETH Balance
0 ETH
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 5,572 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Close Deposit | 3492633 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Close Deposit | 3492629 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Deposit Transfer... | 3492629 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Deposit Transfer | 3492627 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Deposit Transfer | 3492625 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Close Deposit | 3492624 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Deposit Single T... | 3492621 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3492619 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Deposit Single T... | 3492616 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3492614 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3492614 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3492604 | 7 hrs ago | IN | 0 ETH | 0 | ||||
Close Deposit | 3481540 | 2 days ago | IN | 0 ETH | 0 | ||||
Close Deposit | 3481529 | 2 days ago | IN | 0 ETH | 0 | ||||
Deposit Transfer... | 3481529 | 2 days ago | IN | 0 ETH | 0 | ||||
Deposit Transfer | 3481525 | 2 days ago | IN | 0 ETH | 0 | ||||
Deposit Transfer | 3481523 | 2 days ago | IN | 0 ETH | 0 | ||||
Close Deposit | 3481523 | 2 days ago | IN | 0 ETH | 0 | ||||
Deposit Single T... | 3481522 | 2 days ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3481515 | 2 days ago | IN | 0 ETH | 0 | ||||
Deposit Single T... | 3481512 | 2 days ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3481509 | 2 days ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3481509 | 2 days ago | IN | 0 ETH | 0 | ||||
Create Deposit | 3481503 | 2 days ago | IN | 0 ETH | 0 | ||||
Close Deposit | 3476020 | 3 days ago | IN | 0 ETH | 0.00000007 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LockPayment
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-02 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; /** * Out of the IERC20 interface, only the transfer and transferFrom functions are used. */ interface IERC20 { function transfer(address to, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); } /** * Actors: * - Spender - the address that spends the funds * - Funder - the address that deposits the funds */ interface ILockPayment { struct DepositView { uint256 id; //unique id uint64 nonce; //nonce unique for each funder address funder; //address that can spend the funds provided by customer address spender; //address that can spend the funds provided by customer uint128 amount; //remaining funds locked uint64 validTo; //after this timestamp funds can be returned to customer } function closeDeposit(uint256 id) external; function terminateDeposit(uint64 nonce) external; function depositSingleTransfer(uint256 id, address addr, uint128 amount) external; function depositTransfer(uint256 id, bytes32[] calldata payments) external; function depositSingleTransferAndClose(uint256 id, address addr, uint128 amount) external; function depositTransferAndClose(uint256 id, bytes32[] calldata payments) external; function getDeposit(uint256 id) external view returns (DepositView memory); function getDepositByNonce(uint64 nonce, address funder) external view returns (DepositView memory); function getValidateDepositSignature() external pure returns (string memory); } /** * @dev This contract is part of GLM payment system. Visit https://golem.network for details. * Be careful when interacting with this contract, because it has no exit mechanism. Any assets sent directly to this contract will be lost. */ contract LockPayment is ILockPayment { IERC20 public immutable GLM; struct Deposit { address spender; //address that can spend the funds provided by customer uint64 validTo; //after this timestamp funds can be returned to customer uint128 amount; //remaining funds locked (assuming max value 1 billion GLMs <=~ 2**90 gwei) uint128 feeAmount; //fee amount locked for spender } uint64 immutable public CONTRACT_VERSION = 0x2; uint64 immutable public CONTRACT_ID = 0x167583000; //6028800000 // CONTRACT_ID_AND_VERSION = CONTRACT_ID ^ CONTRACT_VERSION // CONTRACT_ID_AND_VERSION = CONTRACT_ID | CONTRACT_VERSION // CONTRACT_ID_AND_VERSION = CONTRACT_ID + CONTRACT_VERSION uint64 immutable public CONTRACT_ID_AND_VERSION = 0x167583002; //6028800002 event DepositCreated(uint256 indexed id, address spender); event DepositExtended(uint256 indexed id, address spender); event DepositClosed(uint256 indexed id, address spender); event DepositTerminated(uint256 indexed id, address spender); event DepositFeeTransfer(uint256 indexed id, address spender, uint128 amount); event DepositTransfer(uint256 indexed id, address spender, address recipient, uint128 amount); // deposit is stored using arbitrary id // maybe should be private? But no point to hide it mapping(uint256 => Deposit) public deposits; // only strictly ERC20 compliant tokens are supported constructor(IERC20 _GLM) { require(CONTRACT_ID_AND_VERSION == CONTRACT_ID | CONTRACT_VERSION); //id has special property that CONTRACT_ID | CONTRACT_VERSION == CONTRACT_ID + CONTRACT_VERSION require(CONTRACT_ID | CONTRACT_VERSION == CONTRACT_ID + CONTRACT_VERSION); require(CONTRACT_ID ^ CONTRACT_VERSION == CONTRACT_ID + CONTRACT_VERSION); GLM = _GLM; } function idFromNonce(uint64 nonce) public view returns (uint256) { return idFromNonceAndFunder(nonce, msg.sender); } function idFromNonceAndFunder(uint64 nonce, address funder) public pure returns (uint256) { return (uint256(uint160(funder)) << 96) ^ uint256(nonce); } function nonceFromId(uint256 id) public pure returns (uint64) { return uint64(id); } function funderFromId(uint256 id) public pure returns (address) { return address(uint160(id >> 96)); } function getDeposit(uint256 id) external view returns (DepositView memory) { Deposit memory deposit = deposits[id]; return DepositView(id, nonceFromId(id), funderFromId(id), deposit.spender, deposit.amount, deposit.validTo); } function getDepositByNonce(uint64 nonce, address funder) external view returns (DepositView memory) { uint256 id = idFromNonceAndFunder(nonce, funder); Deposit memory deposit = deposits[id]; return DepositView(id, nonce, funder, deposit.spender, deposit.amount, deposit.validTo); } // createDeposit - Customer locks funds for usage by spender // // nonce - used to build unique id (from Funder address and nonce) // spender - the address that is allowed to spend the funds regardless of time // amount - amount of GLM tokens to lock // flatFeeAmount - amount of GLM tokens given to spender (non-refundable). Fee is claimed by spender when called payoutSingle or payoutMultiple first time. // validToTimestamp - time until which funds are guaranteed to be locked for spender. // Spender still can use the funds after this timestamp, // but customer can request the funds to be returned clearing deposit after (or equal to) this timestamp. function createDeposit(uint64 nonce, address spender, uint128 amount, uint128 flatFeeAmount, uint64 validToTimestamp) external returns (uint256) { //check if id is not used uint256 id = idFromNonce(nonce); //this checks if deposit is not already created with this id require(deposits[id].spender == address(0), "deposits[id].spender == address(0)"); require(amount > 0, "amount > 0"); require(spender != address(0), "spender cannot be null address"); require(msg.sender != spender, "spender cannot be funder"); deposits[id] = Deposit(spender, validToTimestamp, amount, flatFeeAmount); emit DepositCreated(id, spender); require(GLM.transferFrom(msg.sender, address(this), amount + flatFeeAmount), "transferFrom failed"); return id; } function extendDeposit(uint64 nonce, uint128 additionalAmount, uint128 additionalFlatFee, uint64 validToTimestamp) external { uint256 id = idFromNonce(nonce); Deposit memory deposit = deposits[id]; emit DepositExtended(id, deposit.spender); require(deposit.validTo <= validToTimestamp, "deposit.validTo <= validTo"); deposit.amount += additionalAmount; deposit.feeAmount += additionalFlatFee; deposit.validTo = validToTimestamp; deposits[id] = deposit; require(GLM.transferFrom(msg.sender, address(this), additionalAmount + additionalFlatFee), "transferFrom failed"); } // Spender can close deposit anytime claiming fee and returning rest of funds to Funder function closeDeposit(uint256 id) public { Deposit memory deposit = deposits[id]; // customer cannot return funds before block_no // sender can return funds at any time require(msg.sender == deposit.spender); emit DepositClosed(id, deposit.spender); require(GLM.transfer(funderFromId(id), deposit.amount), "return transfer failed"); if (deposit.feeAmount > 0) { emit DepositFeeTransfer(id, deposit.spender, deposit.feeAmount); require(GLM.transfer(deposit.spender, deposit.feeAmount), "fee transfer failed"); } deposits[id].feeAmount = 0; deposits[id].amount = 0; //leave this in deposit to prevent recreating deposit with the same id deposits[id].spender = 0x0000000000000000000000000000000000000Bad; } // Funder can terminate deposit after validTo date elapses function terminateDeposit(uint64 nonce) external { uint256 id = idFromNonce(nonce); Deposit memory deposit = deposits[id]; //The following check is not needed (Funder is in id), but added for clarity require(funderFromId(id) == msg.sender, "funderFromId(id) == msg.sender"); // Check for time condition require(deposit.validTo < block.timestamp, "deposit.validTo < block.timestamp"); emit DepositTerminated(id, deposit.spender); require(GLM.transfer(msg.sender, deposit.amount + deposit.feeAmount), "transfer failed"); deposits[id].amount = 0; deposits[id].feeAmount = 0; //leave this in deposit to prevent recreating deposit with the same id deposits[id].spender = 0x0000000000000000000000000000000000000Bad; } function depositSingleTransfer(uint256 id, address addr, uint128 amount) public { Deposit memory deposit = deposits[id]; require(msg.sender == deposit.spender, "msg.sender == deposit.spender"); require(addr != deposit.spender, "cannot transfer to spender"); require(deposit.amount >= amount, "deposit.amount >= amount"); emit DepositTransfer(id, deposit.spender, addr, amount); require(GLM.transfer(addr, amount), "GLM transfer failed"); deposit.amount -= amount; deposits[id].amount = deposit.amount; } function depositTransfer(uint256 id, bytes32[] calldata payments) public { Deposit memory deposit = deposits[id]; require(msg.sender == deposit.spender, "msg.sender == deposit.spender"); for (uint32 i = 0; i < payments.length; ++i) { // A payment contains compressed data: // first 160 bits (20 bytes) is an address. // following 96 bits (12 bytes) is a value, bytes32 payment = payments[i]; address addr = address(bytes20(payment)); uint128 amount = uint128(uint256(payment) % 2 ** 96); require(addr != deposit.spender, "cannot transfer to spender"); emit DepositTransfer(id, deposit.spender, addr, amount); require(GLM.transfer(addr, amount), "GLM transfer failed"); require(deposit.amount >= amount, "deposit.amount >= amount"); deposit.amount -= amount; } deposits[id].amount = deposit.amount; } function depositSingleTransferAndClose(uint256 id, address addr, uint128 amount) external { depositSingleTransfer(id, addr, amount); closeDeposit(id); } function depositTransferAndClose(uint256 id, bytes32[] calldata payments) external { depositTransfer(id, payments); closeDeposit(id); } //validateDeposit - validate extra fields not covered by common validation function validateDeposit(uint256 id, uint128 flatFeeAmount) external view returns (string memory) { Deposit memory deposit = deposits[id]; if (deposit.spender == address(0)) { return "failed due to wrong deposit id"; } if (flatFeeAmount != deposit.feeAmount) { return "failed due to flatFeeAmount mismatch"; } return "valid"; } function getValidateDepositSignature() external pure returns (string memory) { // this signature may be different if other compatible fee scheme is deployed return '[{"type": "uint256", "name": "id"}, {"type": "uint128", "name": "flatFeeAmount"}]'; } }
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_GLM","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"}],"name":"DepositFeeTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"}],"name":"DepositTransfer","type":"event"},{"inputs":[],"name":"CONTRACT_ID","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_ID_AND_VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GLM","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"closeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"flatFeeAmount","type":"uint128"},{"internalType":"uint64","name":"validToTimestamp","type":"uint64"}],"name":"createDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"depositSingleTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"depositSingleTransferAndClose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32[]","name":"payments","type":"bytes32[]"}],"name":"depositTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32[]","name":"payments","type":"bytes32[]"}],"name":"depositTransferAndClose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposits","outputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint64","name":"validTo","type":"uint64"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"feeAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"uint128","name":"additionalAmount","type":"uint128"},{"internalType":"uint128","name":"additionalFlatFee","type":"uint128"},{"internalType":"uint64","name":"validToTimestamp","type":"uint64"}],"name":"extendDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"funderFromId","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getDeposit","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint64","name":"validTo","type":"uint64"}],"internalType":"struct ILockPayment.DepositView","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"}],"name":"getDepositByNonce","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint64","name":"validTo","type":"uint64"}],"internalType":"struct ILockPayment.DepositView","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getValidateDepositSignature","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"idFromNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"}],"name":"idFromNonceAndFunder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"nonceFromId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"terminateDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"flatFeeAmount","type":"uint128"}],"name":"validateDeposit","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
610100604052600260a05264016758300060c05264016758300260e052348015610027575f80fd5b50604051612176380380612176833981016040819052610046916100e0565b60a05160c051176001600160401b031660e0516001600160401b03161461006b575f80fd5b60a05160c05161007b919061010d565b6001600160401b031660a05160c051176001600160401b03161461009d575f80fd5b60a05160c0516100ad919061010d565b6001600160401b031660a05160c051186001600160401b0316146100cf575f80fd5b6001600160a01b031660805261013e565b5f602082840312156100f0575f80fd5b81516001600160a01b0381168114610106575f80fd5b9392505050565b6001600160401b03818116838216019081111561013857634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e051611fd46101a25f395f61054301525f61022201525f6101c101525f818161044c015281816107db01528181610c0101528181610ef60152818161109101528181611346015281816117730152611aad0152611fd45ff3fe608060405234801561000f575f80fd5b506004361061016e575f3560e01c8063841dbca6116100d2578063ac658a4811610088578063d61a095611610063578063d61a095614610565578063ee7b7ad814610578578063fbe1e3311461058b575f80fd5b8063ac658a4814610492578063b02c43d0146104a5578063d56052571461053e575f80fd5b80638c338c86116100b85780638c338c86146104475780639e40a5cf1461046e5780639f9fb9681461047f575f80fd5b8063841dbca6146102c65780638853a8de146102d9575f80fd5b80634ed5ddb011610127578063540469b81161010d578063540469b81461026c57806373930ff81461027f57806383b24c52146102b3575f80fd5b80634ed5ddb014610244578063519f5dad14610259575f80fd5b806338b903331161015757806338b90333146101bc5780633a14b91f146101fc5780633e35487c1461021d575f80fd5b80631ae023701461017257806330edc21d14610190575b5f80fd5b61017a61059e565b6040516101879190611bd8565b60405180910390f35b6101a461019e366004611c2b565b60601c90565b6040516001600160a01b039091168152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610187565b61020f61020a366004611c5e565b6105be565b604051908152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000081565b610257610252366004611c7e565b6105e5565b005b61020f610267366004611d24565b61097a565b61017a61027a366004611d85565b610d1e565b61020f61028d366004611daf565b6bffffffffffffffffffffffff19606082901b1667ffffffffffffffff83161892915050565b6102576102c1366004611c2b565b610e43565b6102576102d4366004611c5e565b6111af565b6103cd6102e7366004611daf565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a095860184905267ffffffffffffffff98891688831b6bffffffffffffffffffffffff191681188086528585529488902088518084018a5281546001600160a01b038082168352600160a01b9091048d168288019081526001909301546001600160801b03808216848e01908152600160801b9092048116848901528c519a8b018d52988a52968901939093529982169887019890985297519097169084015251169381019390935290519092169181019190915290565b60405161018791905f60c0820190508251825267ffffffffffffffff60208401511660208301526001600160a01b0360408401511660408301526001600160a01b0360608401511660608301526001600160801b03608084015116608083015267ffffffffffffffff60a08401511660a083015292915050565b6101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101e361047c366004611c2b565b90565b6103cd61048d366004611c2b565b6114a4565b6102576104a0366004611dd7565b6115a3565b6104fc6104b3366004611c2b565b5f60208190529081526040902080546001909101546001600160a01b03821691600160a01b900467ffffffffffffffff16906001600160801b0380821691600160801b90041684565b604080516001600160a01b03909516855267ffffffffffffffff90931660208501526001600160801b0391821692840192909252166060820152608001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000081565b610257610573366004611c7e565b611890565b610257610586366004611e28565b6118a9565b610257610599366004611e28565b611bcd565b6060604051806080016040528060518152602001611f2a60519139905090565b5f67ffffffffffffffff82163360601b6bffffffffffffffffffffffff1916185b92915050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461069e5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e64657200000060448201526064015b60405180910390fd5b5f5b63ffffffff811683111561092b575f84848363ffffffff168181106106c7576106c7611e61565b6020029190910135915050606081901c5f6106ef6c0100000000000000000000000084611e75565b9050845f01516001600160a01b0316826001600160a01b0316036107555760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b8451604080516001600160a01b03928316815291841660208301526001600160801b0383169082015288907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0383811660048301526001600160801b03831660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015610821573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108459190611e94565b6108915760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b806001600160801b031685604001516001600160801b031610156108f75760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b80856040018181516109099190611ec7565b6001600160801b03169052506109249250839150611ee69050565b90506106a0565b506040908101515f9485526020859052932060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b03909416939093179092555050565b5f80610985876105be565b5f818152602081905260409020549091506001600160a01b031615610a125760405162461bcd60e51b815260206004820152602260248201527f6465706f736974735b69645d2e7370656e646572203d3d20616464726573732860448201527f30290000000000000000000000000000000000000000000000000000000000006064820152608401610695565b5f856001600160801b031611610a6a5760405162461bcd60e51b815260206004820152600a60248201527f616d6f756e74203e2030000000000000000000000000000000000000000000006044820152606401610695565b6001600160a01b038616610ac05760405162461bcd60e51b815260206004820152601e60248201527f7370656e6465722063616e6e6f74206265206e756c6c206164647265737300006044820152606401610695565b6001600160a01b0386163303610b185760405162461bcd60e51b815260206004820152601860248201527f7370656e6465722063616e6e6f742062652066756e64657200000000000000006044820152606401610695565b604080516080810182526001600160a01b0388811680835267ffffffffffffffff87811660208086019182526001600160801b038c81168789019081528c8216606089019081525f8b81528085528a9020985189549551909616600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009095169590971694909417929092178655915193518116600160801b02931692909217600190930192909255915190815282917f788f62f195987bb297862ea62b31d08e6c02dd48c82691e3690b2a32b8fb759b910160405180910390a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166323b872dd3330610c32888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611e94565b610d145760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b9695505050505050565b5f8281526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060808401919091529190610dc957505060408051808201909152601e81527f6661696c65642064756520746f2077726f6e67206465706f736974206964000060208201526105df565b80606001516001600160801b0316836001600160801b031614610e0757604051806060016040528060248152602001611f7b602491399150506105df565b505060408051808201909152600581527f76616c6964000000000000000000000000000000000000000000000000000000602082015292915050565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b900490921660608301523314610eb3575f80fd5b80516040516001600160a01b03909116815282907f8ac07cc6e38c6222dd0309c80353c1962354bacf222b825d7401cc80e93ff3cc9060200160405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610f2d8460601c90565b60408085015190517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af1158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbf9190611e94565b61100b5760405162461bcd60e51b815260206004820152601660248201527f72657475726e207472616e73666572206661696c6564000000000000000000006044820152606401610695565b60608101516001600160801b03161561116d5780516060820151604080516001600160a01b0390931683526001600160801b03909116602083015283917fed2c74ec5ee17d93f94a64e9ca42f75d33868e90f338237709b611ac1810a40f910160405180910390a28051606082015160405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263a9059cbb926110e1926004016001600160a01b039290921682526001600160801b0316602082015260400190565b6020604051808303815f875af11580156110fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111219190611e94565b61116d5760405162461bcd60e51b815260206004820152601360248201527f666565207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad179055565b5f6111b9826105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116825267ffffffffffffffff600160a01b9091041692810192909252600101546001600160801b0380821693830193909352600160801b900490911660608201529091503361122a8360601c90565b6001600160a01b0316146112805760405162461bcd60e51b815260206004820152601e60248201527f66756e64657246726f6d496428696429203d3d206d73672e73656e64657200006044820152606401610695565b42816020015167ffffffffffffffff16106113035760405162461bcd60e51b815260206004820152602160248201527f6465706f7369742e76616c6964546f203c20626c6f636b2e74696d657374616d60448201527f70000000000000000000000000000000000000000000000000000000000000006064820152608401610695565b80516040516001600160a01b03909116815282907f843d1bd667ac549c763b55fefb74223882ce415856e0e243f24ed3b97f572f109060200160405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb33836060015184604001516113889190611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af11580156113f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114159190611e94565b6114615760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c656400000000000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad17905550565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a08601849052878452838352928690208651938401875280546001600160a01b038116855267ffffffffffffffff600160a01b9091041684840152600101546001600160801b0380821685890152600160801b90910416908301528451928301909452848252919281018467ffffffffffffffff1681526020016115568560601c90565b6001600160a01b03168152602001825f01516001600160a01b0316815260200182604001516001600160801b03168152602001826020015167ffffffffffffffff16815250915050919050565b5f6115ad856105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16828501526001909201546001600160801b0380821683870152600160801b9091041660608201529251908152929350909183917f28b2e97799d08959c3ff7a213e5de97fe58327ecbfdb497e039d5b45b85c4627910160405180910390a28267ffffffffffffffff16816020015167ffffffffffffffff1611156116ab5760405162461bcd60e51b815260206004820152601a60248201527f6465706f7369742e76616c6964546f203c3d2076616c6964546f0000000000006044820152606401610695565b84816040018181516116bd9190611f0a565b6001600160801b03169052506060810180518591906116dd908390611f0a565b6001600160801b0390811690915267ffffffffffffffff80861660208086019182525f87815290819052604090819020865181549351909416600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009093166001600160a01b039485161792909217825585015160608601518416600160801b029316929092176001909201919091557f00000000000000000000000000000000000000000000000000000000000000001690506323b872dd33306117a6888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015611818573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c9190611e94565b6118885760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b505050505050565b61189b8383836105e5565b6118a483610e43565b505050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461195d5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e6465720000006044820152606401610695565b805f01516001600160a01b0316836001600160a01b0316036119c15760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b816001600160801b031681604001516001600160801b03161015611a275760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b8051604080516001600160a01b03928316815291851660208301526001600160801b0384169082015284907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0384811660048301526001600160801b03841660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015611af3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b179190611e94565b611b635760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b8181604001818151611b759190611ec7565b6001600160801b039081169091526040928301515f96875260208790529290952060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169290951691909117909355505050565b61189b8383836118a9565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215611c3b575f80fd5b5035919050565b803567ffffffffffffffff81168114611c59575f80fd5b919050565b5f60208284031215611c6e575f80fd5b611c7782611c42565b9392505050565b5f805f60408486031215611c90575f80fd5b83359250602084013567ffffffffffffffff811115611cad575f80fd5b8401601f81018613611cbd575f80fd5b803567ffffffffffffffff811115611cd3575f80fd5b8660208260051b8401011115611ce7575f80fd5b939660209190910195509293505050565b80356001600160a01b0381168114611c59575f80fd5b80356001600160801b0381168114611c59575f80fd5b5f805f805f60a08688031215611d38575f80fd5b611d4186611c42565b9450611d4f60208701611cf8565b9350611d5d60408701611d0e565b9250611d6b60608701611d0e565b9150611d7960808701611c42565b90509295509295909350565b5f8060408385031215611d96575f80fd5b82359150611da660208401611d0e565b90509250929050565b5f8060408385031215611dc0575f80fd5b611dc983611c42565b9150611da660208401611cf8565b5f805f8060808587031215611dea575f80fd5b611df385611c42565b9350611e0160208601611d0e565b9250611e0f60408601611d0e565b9150611e1d60608601611c42565b905092959194509250565b5f805f60608486031215611e3a575f80fd5b83359250611e4a60208501611cf8565b9150611e5860408501611d0e565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82611e8f57634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215611ea4575f80fd5b81518015158114611c77575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b0382811682821603908111156105df576105df611eb3565b5f63ffffffff821663ffffffff8103611f0157611f01611eb3565b60010192915050565b6001600160801b0381811683821601908111156105df576105df611eb356fe5b7b2274797065223a202275696e74323536222c20226e616d65223a20226964227d2c207b2274797065223a202275696e74313238222c20226e616d65223a2022666c6174466565416d6f756e74227d5d6661696c65642064756520746f20666c6174466565416d6f756e74206d69736d61746368a2646970667358221220f7bb42799dc6a5452f7c4fadcb18a1be32e6ab84701a98cd4950c7db9617ee5c64736f6c634300081a00330000000000000000000000008888888815bf4db87e57b609a50f938311eed068
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061016e575f3560e01c8063841dbca6116100d2578063ac658a4811610088578063d61a095611610063578063d61a095614610565578063ee7b7ad814610578578063fbe1e3311461058b575f80fd5b8063ac658a4814610492578063b02c43d0146104a5578063d56052571461053e575f80fd5b80638c338c86116100b85780638c338c86146104475780639e40a5cf1461046e5780639f9fb9681461047f575f80fd5b8063841dbca6146102c65780638853a8de146102d9575f80fd5b80634ed5ddb011610127578063540469b81161010d578063540469b81461026c57806373930ff81461027f57806383b24c52146102b3575f80fd5b80634ed5ddb014610244578063519f5dad14610259575f80fd5b806338b903331161015757806338b90333146101bc5780633a14b91f146101fc5780633e35487c1461021d575f80fd5b80631ae023701461017257806330edc21d14610190575b5f80fd5b61017a61059e565b6040516101879190611bd8565b60405180910390f35b6101a461019e366004611c2b565b60601c90565b6040516001600160a01b039091168152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000281565b60405167ffffffffffffffff9091168152602001610187565b61020f61020a366004611c5e565b6105be565b604051908152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000016758300081565b610257610252366004611c7e565b6105e5565b005b61020f610267366004611d24565b61097a565b61017a61027a366004611d85565b610d1e565b61020f61028d366004611daf565b6bffffffffffffffffffffffff19606082901b1667ffffffffffffffff83161892915050565b6102576102c1366004611c2b565b610e43565b6102576102d4366004611c5e565b6111af565b6103cd6102e7366004611daf565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a095860184905267ffffffffffffffff98891688831b6bffffffffffffffffffffffff191681188086528585529488902088518084018a5281546001600160a01b038082168352600160a01b9091048d168288019081526001909301546001600160801b03808216848e01908152600160801b9092048116848901528c519a8b018d52988a52968901939093529982169887019890985297519097169084015251169381019390935290519092169181019190915290565b60405161018791905f60c0820190508251825267ffffffffffffffff60208401511660208301526001600160a01b0360408401511660408301526001600160a01b0360608401511660608301526001600160801b03608084015116608083015267ffffffffffffffff60a08401511660a083015292915050565b6101a47f0000000000000000000000008888888815bf4db87e57b609a50f938311eed06881565b6101e361047c366004611c2b565b90565b6103cd61048d366004611c2b565b6114a4565b6102576104a0366004611dd7565b6115a3565b6104fc6104b3366004611c2b565b5f60208190529081526040902080546001909101546001600160a01b03821691600160a01b900467ffffffffffffffff16906001600160801b0380821691600160801b90041684565b604080516001600160a01b03909516855267ffffffffffffffff90931660208501526001600160801b0391821692840192909252166060820152608001610187565b6101e37f000000000000000000000000000000000000000000000000000000016758300281565b610257610573366004611c7e565b611890565b610257610586366004611e28565b6118a9565b610257610599366004611e28565b611bcd565b6060604051806080016040528060518152602001611f2a60519139905090565b5f67ffffffffffffffff82163360601b6bffffffffffffffffffffffff1916185b92915050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461069e5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e64657200000060448201526064015b60405180910390fd5b5f5b63ffffffff811683111561092b575f84848363ffffffff168181106106c7576106c7611e61565b6020029190910135915050606081901c5f6106ef6c0100000000000000000000000084611e75565b9050845f01516001600160a01b0316826001600160a01b0316036107555760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b8451604080516001600160a01b03928316815291841660208301526001600160801b0383169082015288907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0383811660048301526001600160801b03831660248301527f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068169063a9059cbb906044016020604051808303815f875af1158015610821573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108459190611e94565b6108915760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b806001600160801b031685604001516001600160801b031610156108f75760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b80856040018181516109099190611ec7565b6001600160801b03169052506109249250839150611ee69050565b90506106a0565b506040908101515f9485526020859052932060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b03909416939093179092555050565b5f80610985876105be565b5f818152602081905260409020549091506001600160a01b031615610a125760405162461bcd60e51b815260206004820152602260248201527f6465706f736974735b69645d2e7370656e646572203d3d20616464726573732860448201527f30290000000000000000000000000000000000000000000000000000000000006064820152608401610695565b5f856001600160801b031611610a6a5760405162461bcd60e51b815260206004820152600a60248201527f616d6f756e74203e2030000000000000000000000000000000000000000000006044820152606401610695565b6001600160a01b038616610ac05760405162461bcd60e51b815260206004820152601e60248201527f7370656e6465722063616e6e6f74206265206e756c6c206164647265737300006044820152606401610695565b6001600160a01b0386163303610b185760405162461bcd60e51b815260206004820152601860248201527f7370656e6465722063616e6e6f742062652066756e64657200000000000000006044820152606401610695565b604080516080810182526001600160a01b0388811680835267ffffffffffffffff87811660208086019182526001600160801b038c81168789019081528c8216606089019081525f8b81528085528a9020985189549551909616600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009095169590971694909417929092178655915193518116600160801b02931692909217600190930192909255915190815282917f788f62f195987bb297862ea62b31d08e6c02dd48c82691e3690b2a32b8fb759b910160405180910390a26001600160a01b037f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068166323b872dd3330610c32888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611e94565b610d145760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b9695505050505050565b5f8281526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060808401919091529190610dc957505060408051808201909152601e81527f6661696c65642064756520746f2077726f6e67206465706f736974206964000060208201526105df565b80606001516001600160801b0316836001600160801b031614610e0757604051806060016040528060248152602001611f7b602491399150506105df565b505060408051808201909152600581527f76616c6964000000000000000000000000000000000000000000000000000000602082015292915050565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b900490921660608301523314610eb3575f80fd5b80516040516001600160a01b03909116815282907f8ac07cc6e38c6222dd0309c80353c1962354bacf222b825d7401cc80e93ff3cc9060200160405180910390a27f0000000000000000000000008888888815bf4db87e57b609a50f938311eed0686001600160a01b031663a9059cbb610f2d8460601c90565b60408085015190517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af1158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbf9190611e94565b61100b5760405162461bcd60e51b815260206004820152601660248201527f72657475726e207472616e73666572206661696c6564000000000000000000006044820152606401610695565b60608101516001600160801b03161561116d5780516060820151604080516001600160a01b0390931683526001600160801b03909116602083015283917fed2c74ec5ee17d93f94a64e9ca42f75d33868e90f338237709b611ac1810a40f910160405180910390a28051606082015160405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068169263a9059cbb926110e1926004016001600160a01b039290921682526001600160801b0316602082015260400190565b6020604051808303815f875af11580156110fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111219190611e94565b61116d5760405162461bcd60e51b815260206004820152601360248201527f666565207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad179055565b5f6111b9826105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116825267ffffffffffffffff600160a01b9091041692810192909252600101546001600160801b0380821693830193909352600160801b900490911660608201529091503361122a8360601c90565b6001600160a01b0316146112805760405162461bcd60e51b815260206004820152601e60248201527f66756e64657246726f6d496428696429203d3d206d73672e73656e64657200006044820152606401610695565b42816020015167ffffffffffffffff16106113035760405162461bcd60e51b815260206004820152602160248201527f6465706f7369742e76616c6964546f203c20626c6f636b2e74696d657374616d60448201527f70000000000000000000000000000000000000000000000000000000000000006064820152608401610695565b80516040516001600160a01b03909116815282907f843d1bd667ac549c763b55fefb74223882ce415856e0e243f24ed3b97f572f109060200160405180910390a27f0000000000000000000000008888888815bf4db87e57b609a50f938311eed0686001600160a01b031663a9059cbb33836060015184604001516113889190611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af11580156113f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114159190611e94565b6114615760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c656400000000000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad17905550565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a08601849052878452838352928690208651938401875280546001600160a01b038116855267ffffffffffffffff600160a01b9091041684840152600101546001600160801b0380821685890152600160801b90910416908301528451928301909452848252919281018467ffffffffffffffff1681526020016115568560601c90565b6001600160a01b03168152602001825f01516001600160a01b0316815260200182604001516001600160801b03168152602001826020015167ffffffffffffffff16815250915050919050565b5f6115ad856105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16828501526001909201546001600160801b0380821683870152600160801b9091041660608201529251908152929350909183917f28b2e97799d08959c3ff7a213e5de97fe58327ecbfdb497e039d5b45b85c4627910160405180910390a28267ffffffffffffffff16816020015167ffffffffffffffff1611156116ab5760405162461bcd60e51b815260206004820152601a60248201527f6465706f7369742e76616c6964546f203c3d2076616c6964546f0000000000006044820152606401610695565b84816040018181516116bd9190611f0a565b6001600160801b03169052506060810180518591906116dd908390611f0a565b6001600160801b0390811690915267ffffffffffffffff80861660208086019182525f87815290819052604090819020865181549351909416600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009093166001600160a01b039485161792909217825585015160608601518416600160801b029316929092176001909201919091557f0000000000000000000000008888888815bf4db87e57b609a50f938311eed0681690506323b872dd33306117a6888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015611818573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c9190611e94565b6118885760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b505050505050565b61189b8383836105e5565b6118a483610e43565b505050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461195d5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e6465720000006044820152606401610695565b805f01516001600160a01b0316836001600160a01b0316036119c15760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b816001600160801b031681604001516001600160801b03161015611a275760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b8051604080516001600160a01b03928316815291851660208301526001600160801b0384169082015284907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0384811660048301526001600160801b03841660248301527f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068169063a9059cbb906044016020604051808303815f875af1158015611af3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b179190611e94565b611b635760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b8181604001818151611b759190611ec7565b6001600160801b039081169091526040928301515f96875260208790529290952060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169290951691909117909355505050565b61189b8383836118a9565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215611c3b575f80fd5b5035919050565b803567ffffffffffffffff81168114611c59575f80fd5b919050565b5f60208284031215611c6e575f80fd5b611c7782611c42565b9392505050565b5f805f60408486031215611c90575f80fd5b83359250602084013567ffffffffffffffff811115611cad575f80fd5b8401601f81018613611cbd575f80fd5b803567ffffffffffffffff811115611cd3575f80fd5b8660208260051b8401011115611ce7575f80fd5b939660209190910195509293505050565b80356001600160a01b0381168114611c59575f80fd5b80356001600160801b0381168114611c59575f80fd5b5f805f805f60a08688031215611d38575f80fd5b611d4186611c42565b9450611d4f60208701611cf8565b9350611d5d60408701611d0e565b9250611d6b60608701611d0e565b9150611d7960808701611c42565b90509295509295909350565b5f8060408385031215611d96575f80fd5b82359150611da660208401611d0e565b90509250929050565b5f8060408385031215611dc0575f80fd5b611dc983611c42565b9150611da660208401611cf8565b5f805f8060808587031215611dea575f80fd5b611df385611c42565b9350611e0160208601611d0e565b9250611e0f60408601611d0e565b9150611e1d60608601611c42565b905092959194509250565b5f805f60608486031215611e3a575f80fd5b83359250611e4a60208501611cf8565b9150611e5860408501611d0e565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82611e8f57634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215611ea4575f80fd5b81518015158114611c77575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b0382811682821603908111156105df576105df611eb3565b5f63ffffffff821663ffffffff8103611f0157611f01611eb3565b60010192915050565b6001600160801b0381811683821601908111156105df576105df611eb356fe5b7b2274797065223a202275696e74323536222c20226e616d65223a20226964227d2c207b2274797065223a202275696e74313238222c20226e616d65223a2022666c6174466565416d6f756e74227d5d6661696c65642064756520746f20666c6174466565416d6f756e74206d69736d61746368a2646970667358221220f7bb42799dc6a5452f7c4fadcb18a1be32e6ab84701a98cd4950c7db9617ee5c64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008888888815bf4db87e57b609a50f938311eed068
-----Decoded View---------------
Arg [0] : _GLM (address): 0x8888888815bf4DB87e57B609A50f938311EEd068
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008888888815bf4db87e57b609a50f938311eed068
Deployed Bytecode Sourcemap
1928:9807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11459:273;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4249:116;;;;;;:::i;:::-;4353:2;4347:8;;4249:116;;;;-1:-1:-1;;;;;891:55:1;;;873:74;;861:2;846:18;4249:116:0;727:226:1;2364:46:0;;;;;;;;1132:18:1;1120:31;;;1102:50;;1090:2;1075:18;2364:46:0;958:200:1;3832:130:0;;;;;;:::i;:::-;;:::i;:::-;;;1674:25:1;;;1662:2;1647:18;3832:130:0;1528:177:1;2417:49:0;;;;;9606:996;;;;;;:::i;:::-;;:::i;:::-;;5672:836;;;;;;:::i;:::-;;:::i;11039:412::-;;;;;;:::i;:::-;;:::i;3970:165::-;;;;;;:::i;:::-;-1:-1:-1;;4107:2:0;4079:30;;;;4113:14;;;4078:49;3970:165;;;;;7272:842;;;;;;:::i;:::-;;:::i;8186:824::-;;;;;;:::i;:::-;;:::i;4630:313::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4113:14:0;;;;4079:30;;;-1:-1:-1;;4079:30:0;4078:49;;4825:12;;;;;;;;;;4800:37;;;;;;;;;-1:-1:-1;;;;;4800:37:0;;;;;-1:-1:-1;;;4800:37:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4800:37:0;;;;;;;;;-1:-1:-1;;;4800:37:0;;;;;;;;;4855:80;;;;;;;;;;;;;;;;;;;;;;;;;;;4886:15;;4855:80;;;;;;;4903:14;4855:80;;;;;;;;4919:15;;4855:80;;;;;;;;;;;4630:313;;;;;;;4032:4:1;4074:3;4063:9;4059:19;4051:27;;4111:6;4105:13;4094:9;4087:32;4187:18;4179:4;4171:6;4167:17;4161:24;4157:49;4150:4;4139:9;4135:20;4128:79;-1:-1:-1;;;;;4267:4:1;4259:6;4255:17;4249:24;4245:73;4238:4;4227:9;4223:20;4216:103;-1:-1:-1;;;;;4379:4:1;4371:6;4367:17;4361:24;4357:73;4350:4;4339:9;4335:20;4328:103;-1:-1:-1;;;;;4491:4:1;4483:6;4479:17;4473:24;4469:65;4462:4;4451:9;4447:20;4440:95;4603:18;4595:4;4587:6;4583:17;4577:24;4573:49;4566:4;4555:9;4551:20;4544:79;3886:743;;;;;1972:27:0;;;;;4143:98;;;;;;:::i;:::-;4230:2;4143:98;4373:249;;;;;;:::i;:::-;;:::i;6516:655::-;;;;;;:::i;:::-;;:::i;3309:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3309:43:0;;;-1:-1:-1;;;3309:43:0;;;;;-1:-1:-1;;;;;3309:43:0;;;;-1:-1:-1;;;3309:43:0;;;;;;;;;-1:-1:-1;;;;;5535:55:1;;;5517:74;;5639:18;5627:31;;;5622:2;5607:18;;5600:59;-1:-1:-1;;;;;5695:47:1;;;5675:18;;;5668:75;;;;5779:47;5774:2;5759:18;;5752:75;5504:3;5489:19;3309:43:0;5288:545:1;2681:61:0;;;;;10793:158;;;;;;:::i;:::-;;:::i;9018:580::-;;;;;;:::i;:::-;;:::i;10610:175::-;;;;;;:::i;:::-;;:::i;11459:273::-;11521:13;11634:90;;;;;;;;;;;;;;;;;;;11459:273;:::o;3832:130::-;3888:7;4113:14;;;3943:10;4107:2;4079:30;-1:-1:-1;;4079:30:0;4078:49;3915:39;3908:46;3832:130;-1:-1:-1;;3832:130:0:o;9606:996::-;9690:22;9715:12;;;;;;;;;;;;9690:37;;;;;;;;;-1:-1:-1;;;;;9690:37:0;;;;;-1:-1:-1;;;9690:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9690:37:0;;;;;;;;;;-1:-1:-1;;;9690:37:0;;;;;;;;;9746:10;:29;9738:71;;;;-1:-1:-1;;;9738:71:0;;6419:2:1;9738:71:0;;;6401:21:1;6458:2;6438:18;;;6431:30;6497:31;6477:18;;;6470:59;6546:18;;9738:71:0;;;;;;;;;9827:8;9822:724;9841:19;;;;-1:-1:-1;9822:724:0;;;10048:15;10066:8;;10075:1;10066:11;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;10107:25:0;;;;10092:12;10172:26;10191:7;10066:11;10172:26;:::i;:::-;10147:52;;10230:7;:15;;;-1:-1:-1;;;;;10222:23:0;:4;-1:-1:-1;;;;;10222:23:0;;10214:62;;;;-1:-1:-1;;;10214:62:0;;7237:2:1;10214:62:0;;;7219:21:1;7276:2;7256:18;;;7249:30;7315:28;7295:18;;;7288:56;7361:18;;10214:62:0;7035:350:1;10214:62:0;10316:15;;10296:50;;;-1:-1:-1;;;;;7610:55:1;;;7592:74;;7702:55;;;7697:2;7682:18;;7675:83;-1:-1:-1;;;;;7794:47:1;;7774:18;;;7767:75;10312:2:0;;10296:50;;7580:2:1;7565:18;10296:50:0;;;;;;;10369:26;;-1:-1:-1;;;10369:26:0;;-1:-1:-1;;;;;8045:55:1;;;10369:26:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;;8117:18;;;8110:75;10369:3:0;:12;;;;8000:18:1;;10369:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10361:58;;;;-1:-1:-1;;;10361:58:0;;8680:2:1;10361:58:0;;;8662:21:1;8719:2;8699:18;;;8692:30;8758:21;8738:18;;;8731:49;8797:18;;10361:58:0;8478:343:1;10361:58:0;10460:6;-1:-1:-1;;;;;10442:24:0;:7;:14;;;-1:-1:-1;;;;;10442:24:0;;;10434:61;;;;-1:-1:-1;;;10434:61:0;;9028:2:1;10434:61:0;;;9010:21:1;9067:2;9047:18;;;9040:30;9106:26;9086:18;;;9079:54;9150:18;;10434:61:0;8826:348:1;10434:61:0;10528:6;10510:7;:14;;:24;;;;;;;:::i;:::-;-1:-1:-1;;;;;10510:24:0;;;-1:-1:-1;9862:3:0;;-1:-1:-1;9862:3:0;;-1:-1:-1;9862:3:0;;-1:-1:-1;9862:3:0:i;:::-;;;9822:724;;;-1:-1:-1;10580:14:0;;;;;10558:8;:12;;;;;;;;;:19;;:36;;;;-1:-1:-1;;;;;10558:36:0;;;;;;;;;;-1:-1:-1;;9606:996:0:o;5672:836::-;5808:7;5863:10;5876:18;5888:5;5876:11;:18::i;:::-;6015:1;5983:12;;;;;;;;;;:20;5863:31;;-1:-1:-1;;;;;;5983:20:0;:34;5975:81;;;;-1:-1:-1;;;5975:81:0;;10011:2:1;5975:81:0;;;9993:21:1;10050:2;10030:18;;;10023:30;10089:34;10069:18;;;10062:62;10160:4;10140:18;;;10133:32;10182:19;;5975:81:0;9809:398:1;5975:81:0;6084:1;6075:6;-1:-1:-1;;;;;6075:10:0;;6067:33;;;;-1:-1:-1;;;6067:33:0;;10414:2:1;6067:33:0;;;10396:21:1;10453:2;10433:18;;;10426:30;10492:12;10472:18;;;10465:40;10522:18;;6067:33:0;10212:334:1;6067:33:0;-1:-1:-1;;;;;6119:21:0;;6111:64;;;;-1:-1:-1;;;6111:64:0;;10753:2:1;6111:64:0;;;10735:21:1;10792:2;10772:18;;;10765:30;10831:32;10811:18;;;10804:60;10881:18;;6111:64:0;10551:354:1;6111:64:0;-1:-1:-1;;;;;6194:21:0;;:10;:21;6186:58;;;;-1:-1:-1;;;6186:58:0;;11112:2:1;6186:58:0;;;11094:21:1;11151:2;11131:18;;;11124:30;11190:26;11170:18;;;11163:54;11234:18;;6186:58:0;10910:348:1;6186:58:0;6270:57;;;;;;;;-1:-1:-1;;;;;6270:57:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6270:57:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6255:12:0;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;6255:72:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6255:72:0;;;;;;;-1:-1:-1;6255:72:0;;;;;;;6343:27;;873:74:1;;;6255:12:0;;6343:27;;846:18:1;6343:27:0;;;;;;;-1:-1:-1;;;;;6389:3:0;:16;;6406:10;6426:4;6433:22;6442:13;6433:6;:22;:::i;:::-;6389:67;;;;;;;;;;-1:-1:-1;;;;;7610:55:1;;;6389:67:0;;;7592:74:1;7702:55;;;;7682:18;;;7675:83;-1:-1:-1;;;;;7794:47:1;7774:18;;;7767:75;7565:18;;6389:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6381:99;;;;-1:-1:-1;;;6381:99:0;;12173:2:1;6381:99:0;;;12155:21:1;12212:2;12192:18;;;12185:30;12251:21;12231:18;;;12224:49;12290:18;;6381:99:0;11971:343:1;6381:99:0;6498:2;5672:836;-1:-1:-1;;;;;;5672:836:0:o;11039:412::-;11148:22;11173:12;;;;;;;;;;;;11148:37;;;;;;;;;-1:-1:-1;;;;;11148:37:0;;;;;-1:-1:-1;;;11148:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11148:37:0;;;;;;;;;;-1:-1:-1;;;11148:37:0;;;;;11122:13;11148:37;;;;;;;11122:13;11148:37;11196:101;;-1:-1:-1;;11246:39:0;;;;;;;;;;;;;;;;;;;11196:101;11328:7;:17;;;-1:-1:-1;;;;;11311:34:0;:13;-1:-1:-1;;;;;11311:34:0;;11307:112;;11362:45;;;;;;;;;;;;;;;;;;;;;;11307:112;-1:-1:-1;;11429:14:0;;;;;;;;;;;;;;;;;11039:412;;;;:::o;7272:842::-;7324:22;7349:12;;;;;;;;;;;;7324:37;;;;;;;;;-1:-1:-1;;;;;7324:37:0;;;;;-1:-1:-1;;;7324:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7324:37:0;;;;;;;;;;-1:-1:-1;;;7324:37:0;;;;;;;;;7485:10;:29;7477:38;;;;;;7549:15;;7531:34;;-1:-1:-1;;;;;891:55:1;;;873:74;;7545:2:0;;7531:34;;861:2:1;846:18;7531:34:0;;;;;;;7584:3;-1:-1:-1;;;;;7584:12:0;;7597:16;7610:2;4353;4347:8;;4249:116;7597:16;7615:14;;;;;7584:46;;;;;;;;;;-1:-1:-1;;;;;8045:55:1;;;7584:46:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;8117:18;;;8110:75;8000:18;;7584:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7576:81;;;;-1:-1:-1;;;7576:81:0;;12521:2:1;7576:81:0;;;12503:21:1;12560:2;12540:18;;;12533:30;12599:24;12579:18;;;12572:52;12641:18;;7576:81:0;12319:346:1;7576:81:0;7672:17;;;;-1:-1:-1;;;;;7672:21:0;;7668:212;;7738:15;;7755:17;;;;7715:58;;;-1:-1:-1;;;;;8045:55:1;;;8027:74;;-1:-1:-1;;;;;8137:47:1;;;8132:2;8117:18;;8110:75;7734:2:0;;7715:58;;8000:18:1;7715:58:0;;;;;;;7809:15;;7826:17;;;;7796:48;;-1:-1:-1;;;7796:48:0;;-1:-1:-1;;;;;7796:3:0;:12;;;;:48;;;;-1:-1:-1;;;;;8045:55:1;;;;8027:74;;-1:-1:-1;;;;;8137:47:1;8132:2;8117:18;;8110:75;8015:2;8000:18;;7853:338;7796:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7788:80;;;;-1:-1:-1;;;7788:80:0;;13215:2:1;7788:80:0;;;13197:21:1;13254:2;13234:18;;;13227:30;13293:21;13273:18;;;13266:49;13332:18;;7788:80:0;13013:343:1;7788:80:0;-1:-1:-1;7915:1:0;7890:12;;;;;;;;;;:22;;;7927:23;;;;8041:65;;;;8064:42;8041:65;;;7272:842::o;8186:824::-;8246:10;8259:18;8271:5;8259:11;:18::i;:::-;8288:22;8313:12;;;;;;;;;;;;8288:37;;;;;;;;;-1:-1:-1;;;;;8288:37:0;;;;;-1:-1:-1;;;8288:37:0;;;;;;;;;;;;;;-1:-1:-1;;;;;8288:37:0;;;;;;;;;;-1:-1:-1;;;8288:37:0;;;;;;;;;8246:31;;-1:-1:-1;8450:10:0;8430:16;8246:31;4353:2;4347:8;;4249:116;8430:16;-1:-1:-1;;;;;8430:30:0;;8422:73;;;;-1:-1:-1;;;8422:73:0;;13563:2:1;8422:73:0;;;13545:21:1;13602:2;13582:18;;;13575:30;13641:32;13621:18;;;13614:60;13691:18;;8422:73:0;13361:354:1;8422:73:0;8569:15;8551:7;:15;;;:33;;;8543:79;;;;-1:-1:-1;;;8543:79:0;;13922:2:1;8543:79:0;;;13904:21:1;13961:2;13941:18;;;13934:30;14000:34;13980:18;;;13973:62;14071:3;14051:18;;;14044:31;14092:19;;8543:79:0;13720:397:1;8543:79:0;8660:15;;8638:38;;-1:-1:-1;;;;;891:55:1;;;873:74;;8656:2:0;;8638:38;;861:2:1;846:18;8638:38:0;;;;;;;8695:3;-1:-1:-1;;;;;8695:12:0;;8708:10;8737:7;:17;;;8720:7;:14;;;:34;;;;:::i;:::-;8695:60;;;;;;;;;;-1:-1:-1;;;;;8045:55:1;;;8695:60:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;8117:18;;;8110:75;8000:18;;8695:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8687:88;;;;-1:-1:-1;;;8687:88:0;;14324:2:1;8687:88:0;;;14306:21:1;14363:2;14343:18;;;14336:30;14402:17;14382:18;;;14375:45;14437:18;;8687:88:0;14122:339:1;8687:88:0;-1:-1:-1;8808:1:0;8786:12;;;;;;;;;;:19;;;8820:26;;;;8937:65;;;;8960:42;8937:65;;;-1:-1:-1;8186:824:0:o;4373:249::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4484:12:0;;;;;;;;;;4459:37;;;;;;;;;-1:-1:-1;;;;;4459:37:0;;;;;-1:-1:-1;;;4459:37:0;;;;;;;;;;;-1:-1:-1;;;;;4459:37:0;;;;;;;-1:-1:-1;;;4459:37:0;;;;;;;;4514:100;;;;;;;;;;;-1:-1:-1;;4514:100:0;;4484:12;4514:100;;;;;;4547:16;4560:2;4353;4347:8;;4249:116;4547:16;-1:-1:-1;;;;;4514:100:0;;;;;4565:7;:15;;;-1:-1:-1;;;;;4514:100:0;;;;;4582:7;:14;;;-1:-1:-1;;;;;4514:100:0;;;;;4598:7;:15;;;4514:100;;;;;4507:107;;;4373:249;;;:::o;6516:655::-;6651:10;6664:18;6676:5;6664:11;:18::i;:::-;6693:22;6718:12;;;;;;;;;;;;6693:37;;;;;;;;;-1:-1:-1;;;;;6693:37:0;;;;;-1:-1:-1;;;6693:37:0;;;;;;;;;;;;;;-1:-1:-1;;;;;6693:37:0;;;;;;;-1:-1:-1;;;6693:37:0;;;;;;;;6746:36;;873:74:1;;;6718:12:0;;-1:-1:-1;6693:37:0;;6718:12;;6746:36;;846:18:1;6746:36:0;;;;;;;6820:16;6801:35;;:7;:15;;;:35;;;;6793:74;;;;-1:-1:-1;;;6793:74:0;;14668:2:1;6793:74:0;;;14650:21:1;14707:2;14687:18;;;14680:30;14746:28;14726:18;;;14719:56;14792:18;;6793:74:0;14466:350:1;6793:74:0;6896:16;6878:7;:14;;:34;;;;;;;:::i;:::-;-1:-1:-1;;;;;6878:34:0;;;-1:-1:-1;6923:17:0;;;:38;;6944:17;;6923;:38;;6944:17;;6923:38;:::i;:::-;-1:-1:-1;;;;;6923:38:0;;;;;;6972:34;;;;:15;;;;:34;;;7017:8;:12;;;;;;;;;;;;:22;;;;;;;;;-1:-1:-1;;;7017:22:0;;;;;-1:-1:-1;;;;;7017:22:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7017:22:0;;;;;;;;;;;;;;;7058:3;:16;;-1:-1:-1;7058:16:0;7075:10;7095:4;7102:36;7121:17;7102:16;:36;:::i;:::-;7058:81;;;;;;;;;;-1:-1:-1;;;;;7610:55:1;;;7058:81:0;;;7592:74:1;7702:55;;;;7682:18;;;7675:83;-1:-1:-1;;;;;7794:47:1;7774:18;;;7767:75;7565:18;;7058:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:113;;;;-1:-1:-1;;;7050:113:0;;12173:2:1;7050:113:0;;;12155:21:1;12212:2;12192:18;;;12185:30;12251:21;12231:18;;;12224:49;12290:18;;7050:113:0;11971:343:1;7050:113:0;6640:531;;6516:655;;;;:::o;10793:158::-;10887:29;10903:2;10907:8;;10887:15;:29::i;:::-;10927:16;10940:2;10927:12;:16::i;:::-;10793:158;;;:::o;9018:580::-;9109:22;9134:12;;;;;;;;;;;;9109:37;;;;;;;;;-1:-1:-1;;;;;9109:37:0;;;;;-1:-1:-1;;;9109:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9109:37:0;;;;;;;;;;-1:-1:-1;;;9109:37:0;;;;;;;;;9165:10;:29;9157:71;;;;-1:-1:-1;;;9157:71:0;;6419:2:1;9157:71:0;;;6401:21:1;6458:2;6438:18;;;6431:30;6497:31;6477:18;;;6470:59;6546:18;;9157:71:0;6217:353:1;9157:71:0;9255:7;:15;;;-1:-1:-1;;;;;9247:23:0;:4;-1:-1:-1;;;;;9247:23:0;;9239:62;;;;-1:-1:-1;;;9239:62:0;;7237:2:1;9239:62:0;;;7219:21:1;7276:2;7256:18;;;7249:30;7315:28;7295:18;;;7288:56;7361:18;;9239:62:0;7035:350:1;9239:62:0;9338:6;-1:-1:-1;;;;;9320:24:0;:7;:14;;;-1:-1:-1;;;;;9320:24:0;;;9312:61;;;;-1:-1:-1;;;9312:61:0;;9028:2:1;9312:61:0;;;9010:21:1;9067:2;9047:18;;;9040:30;9106:26;9086:18;;;9079:54;9150:18;;9312:61:0;8826:348:1;9312:61:0;9409:15;;9389:50;;;-1:-1:-1;;;;;7610:55:1;;;7592:74;;7702:55;;;7697:2;7682:18;;7675:83;-1:-1:-1;;;;;7794:47:1;;7774:18;;;7767:75;9405:2:0;;9389:50;;7580:2:1;7565:18;9389:50:0;;;;;;;9458:26;;-1:-1:-1;;;9458:26:0;;-1:-1:-1;;;;;8045:55:1;;;9458:26:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;;8117:18;;;8110:75;9458:3:0;:12;;;;8000:18:1;;9458:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9450:58;;;;-1:-1:-1;;;9450:58:0;;8680:2:1;9450:58:0;;;8662:21:1;8719:2;8699:18;;;8692:30;8758:21;8738:18;;;8731:49;8797:18;;9450:58:0;8478:343:1;9450:58:0;9537:6;9519:7;:14;;:24;;;;;;;:::i;:::-;-1:-1:-1;;;;;9519:24:0;;;;;;9576:14;;;;;9554:8;:12;;;;;;;;;;;:19;;:36;;;;;;;;;;;;;;;-1:-1:-1;;;9018:580:0:o;10610:175::-;10711:39;10733:2;10737:4;10743:6;10711:21;:39::i;14:477:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;496:226::-;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;-1:-1:-1;669:23:1;;496:226;-1:-1:-1;496:226:1:o;1163:171::-;1230:20;;1290:18;1279:30;;1269:41;;1259:69;;1324:1;1321;1314:12;1259:69;1163:171;;;:::o;1339:184::-;1397:6;1450:2;1438:9;1429:7;1425:23;1421:32;1418:52;;;1466:1;1463;1456:12;1418:52;1489:28;1507:9;1489:28;:::i;:::-;1479:38;1339:184;-1:-1:-1;;;1339:184:1:o;1710:724::-;1805:6;1813;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1935:23;;;-1:-1:-1;2033:2:1;2018:18;;2005:32;2060:18;2049:30;;2046:50;;;2092:1;2089;2082:12;2046:50;2115:22;;2168:4;2160:13;;2156:27;-1:-1:-1;2146:55:1;;2197:1;2194;2187:12;2146:55;2237:2;2224:16;2263:18;2255:6;2252:30;2249:50;;;2295:1;2292;2285:12;2249:50;2348:7;2343:2;2333:6;2330:1;2326:14;2322:2;2318:23;2314:32;2311:45;2308:65;;;2369:1;2366;2359:12;2308:65;1710:724;;2400:2;2392:11;;;;;-1:-1:-1;2422:6:1;;-1:-1:-1;;;1710:724:1:o;2439:196::-;2507:20;;-1:-1:-1;;;;;2556:54:1;;2546:65;;2536:93;;2625:1;2622;2615:12;2640:188;2708:20;;-1:-1:-1;;;;;2757:46:1;;2747:57;;2737:85;;2818:1;2815;2808:12;2833:480;2926:6;2934;2942;2950;2958;3011:3;2999:9;2990:7;2986:23;2982:33;2979:53;;;3028:1;3025;3018:12;2979:53;3051:28;3069:9;3051:28;:::i;:::-;3041:38;;3098;3132:2;3121:9;3117:18;3098:38;:::i;:::-;3088:48;;3155:38;3189:2;3178:9;3174:18;3155:38;:::i;:::-;3145:48;;3212:38;3246:2;3235:9;3231:18;3212:38;:::i;:::-;3202:48;;3269:38;3302:3;3291:9;3287:19;3269:38;:::i;:::-;3259:48;;2833:480;;;;;;;;:::o;3318:300::-;3386:6;3394;3447:2;3435:9;3426:7;3422:23;3418:32;3415:52;;;3463:1;3460;3453:12;3415:52;3508:23;;;-1:-1:-1;3574:38:1;3608:2;3593:18;;3574:38;:::i;:::-;3564:48;;3318:300;;;;;:::o;3623:258::-;3690:6;3698;3751:2;3739:9;3730:7;3726:23;3722:32;3719:52;;;3767:1;3764;3757:12;3719:52;3790:28;3808:9;3790:28;:::i;:::-;3780:38;;3837;3871:2;3860:9;3856:18;3837:38;:::i;4878:405::-;4962:6;4970;4978;4986;5039:3;5027:9;5018:7;5014:23;5010:33;5007:53;;;5056:1;5053;5046:12;5007:53;5079:28;5097:9;5079:28;:::i;:::-;5069:38;;5126;5160:2;5149:9;5145:18;5126:38;:::i;:::-;5116:48;;5183:38;5217:2;5206:9;5202:18;5183:38;:::i;:::-;5173:48;;5240:37;5273:2;5262:9;5258:18;5240:37;:::i;:::-;5230:47;;4878:405;;;;;;;:::o;5838:374::-;5915:6;5923;5931;5984:2;5972:9;5963:7;5959:23;5955:32;5952:52;;;6000:1;5997;5990:12;5952:52;6045:23;;;-1:-1:-1;6111:38:1;6145:2;6130:18;;6111:38;:::i;:::-;6101:48;;6168:38;6202:2;6191:9;6187:18;6168:38;:::i;:::-;6158:48;;5838:374;;;;;:::o;6575:184::-;-1:-1:-1;;;6624:1:1;6617:88;6724:4;6721:1;6714:15;6748:4;6745:1;6738:15;6764:266;6796:1;6822;6812:189;;-1:-1:-1;;;6854:1:1;6847:88;6958:4;6955:1;6948:15;6986:4;6983:1;6976:15;6812:189;-1:-1:-1;7015:9:1;;6764:266::o;8196:277::-;8263:6;8316:2;8304:9;8295:7;8291:23;8287:32;8284:52;;;8332:1;8329;8322:12;8284:52;8364:9;8358:16;8417:5;8410:13;8403:21;8396:5;8393:32;8383:60;;8439:1;8436;8429:12;9179:184;-1:-1:-1;;;9228:1:1;9221:88;9328:4;9325:1;9318:15;9352:4;9349:1;9342:15;9368:243;-1:-1:-1;;;;;9483:42:1;;;9439;;;9435:91;;9538:44;;9535:70;;;9585:18;;:::i;9616:188::-;9654:3;9698:10;9691:5;9687:22;9733:10;9724:7;9721:23;9718:49;;9747:18;;:::i;:::-;9796:1;9783:15;;9616:188;-1:-1:-1;;9616:188:1:o;11263:240::-;-1:-1:-1;;;;;11332:42:1;;;11376;;;11328:91;;11431:43;;11428:69;;;11477:18;;:::i
Swarm Source
ipfs://f7bb42799dc6a5452f7c4fadcb18a1be32e6ab84701a98cd4950c7db9617ee5c
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.