0 txs
1 call
constructor
constructor(address _usdt, address _engineWallet, address _marketingWallet, address _marketingWallet2)
functions
BASE
viewfunction BASE() view returns (uint256)
directReferrals
viewfunction directReferrals(address, uint256) view returns (address)
engine
viewfunction engine() view returns (address)
engineWallet
viewfunction engineWallet() view returns (address)
getActiveListings
viewfunction getActiveListings() view returns (uint256[] ids)
getGlobalStats
viewfunction getGlobalStats() view returns (uint256 _totalListings, uint256 _totalUsers, uint256 _totalMiners, uint256 _circulatingMiners)
getHighestModel
viewfunction getHighestModel(address userAddr) view returns (uint8)
getListing
viewfunction getListing(uint256 id) view returns (tuple)
getMyMiners
viewfunction getMyMiners() view returns (tuple[])
getMyMinersDetailed
viewfunction getMyMinersDetailed() view returns (tuple[])
getReferralCountAtLevel
viewfunction getReferralCountAtLevel(address userAddr, uint8 level) view returns (uint256)
getReferralCountsByLevel
viewfunction getReferralCountsByLevel(address userAddr) view returns (uint256[10])
getReferralEarnings
viewfunction getReferralEarnings(address userAddr) view returns (uint256 total)
getReferralEarningsAtLevel
viewfunction getReferralEarningsAtLevel(address userAddr, uint8 level) view returns (uint256)
getReferralEarningsByLevel
viewfunction getReferralEarningsByLevel(address userAddr) view returns (uint256[10])
getReferralsAtLevel
viewfunction getReferralsAtLevel(address userAddr, uint8 level) view returns (address[])
getTotalMined
viewfunction getTotalMined(address userAddr) view returns (uint256)
getTotalReferrals
viewfunction getTotalReferrals(address userAddr) view returns (uint256)
getUserInfo
viewfunction getUserInfo(address userAddr) view returns (address referrer, uint256 minerCount, bool exists)
hasUnlockedLevel
viewfunction hasUnlockedLevel(address userAddr, uint8 level) view returns (bool)
listingIdCounter
viewfunction listingIdCounter() view returns (uint256)
marketingWallet
viewfunction marketingWallet() view returns (address)
marketingWallet2
viewfunction marketingWallet2() view returns (address)
marketListings
viewfunction marketListings(uint256) view returns (address seller, tuple miner, uint256 price, bool active)
owner
viewfunction owner() view returns (address)
plans
viewfunction plans(uint8) view returns (uint256 price, uint256 productionPerHour, uint256 maxHours, uint8 referralLevels)
referralCountsByLevel
viewfunction referralCountsByLevel(address, uint256) view returns (uint256)
referralEarnings
viewfunction referralEarnings(address) view returns (uint256)
referralEarningsByLevel
viewfunction referralEarningsByLevel(address, uint256) view returns (uint256)
SELL_FEE
viewfunction SELL_FEE() view returns (uint256)
totalMinedPerUser
viewfunction totalMinedPerUser(address) view returns (uint256)
totalMiners
viewfunction totalMiners() view returns (uint256)
totalUsers
viewfunction totalUsers() view returns (uint256)
usdt
viewfunction usdt() view returns (address)
users
viewfunction users(address) view returns (address referrer, bool exists)
autoListMiner
nonpayablefunction autoListMiner(uint256 index)
buyMiner
nonpayablefunction buyMiner(uint8 model, address referrer)
buyMinerFromMarket
nonpayablefunction buyMinerFromMarket(uint256 listingId)
cancelListing
nonpayablefunction cancelListing(uint256 listingId)
claimProduction
nonpayablefunction claimProduction(uint256 index)
listMiner
nonpayablefunction listMiner(uint256 index, uint256 price)
renounceOwnership
nonpayablefunction renounceOwnership()
sellMinerToSystem
nonpayablefunction sellMinerToSystem(uint256 index)
setEngine
nonpayablefunction setEngine(address _wallet)
events
MinerDelisted
event MinerDelisted(address indexed seller, uint256 indexed listingId)
MinerExpired
event MinerExpired(address indexed user, uint8 model)
MinerListed
event MinerListed(address indexed seller, uint256 price)
MinerPurchased
event MinerPurchased(address indexed user, uint8 model, uint256 timestamp)
MinerPurchasedFromMarket
event MinerPurchasedFromMarket(address indexed buyer, address indexed seller, uint256 indexed listingId, uint256 price)
MinerSold
event MinerSold(address indexed seller, uint256 amountAfterFee, uint256 fee)
MinerSoldToSystem
event MinerSoldToSystem(address indexed user, uint8 model, uint256 payout, uint256 hoursRemaining)
OwnershipRenounced
event OwnershipRenounced(address previousOwner)
ProductionClaimed
event ProductionClaimed(address indexed user, uint256 amount, uint256 timestamp)
ReferralReward
event ReferralReward(address indexed from, address indexed to, uint8 level, uint256 amount)
Withdrawn
event Withdrawn(address indexed user, uint256 amount)
errors
No errors.
creation bytecode
0x60a06040526010805460ff19169055348015610019575f5ffd5b5060405161459c38038061459c83398101604081905261003891610664565b6001600160a01b038481166080908152600180546001600160a01b031990811687851690811783556002805483168887161781556003805484169688169690961786555f8054841683178155600480549094169092178355604080518087018252670de0b6b3a7640000808252662501e734690aaa602080840191825261082384860190815260608086018b8152898052600780855296517f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df5593517f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6e05590517f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6e15591517f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6e2805460ff1990811660ff938416179091558651808d01885294855266c0704bdd556aaa8584019081526108208689019081528686018a81529c8b5287855295517fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b82855517fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8295593517fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b82a5598517fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b82b80548516918b169190911790558451808b01865268056bc75e2d63100000815267018fae27693b400081830190815261081d8288019081528285019a8b5297895285835290517fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d55517fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96e5594517fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96f5595517fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb97080549190981691161790955580519586018152680d8d726b7177a80000865267040c3549bb7d2aaa918601919091526107f59085015260069184019190915291929091906007811115610350576103506106b5565b81526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908360ff1602179055509050506040518060800160405280681b1ae4d6e2ef500000815260200167083d6c7aab63600081526020016107d08152602001600760ff1681525060075f600460078111156103ea576103ea6106b5565b60078111156103fb576103fb6106b5565b81526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908360ff1602179055509050506040518060800160405280683635c9adc5dea0000081526020016710c4dcc3bf98d55581526020016107d08152602001600860ff1681525060075f60056007811115610495576104956106b5565b60078111156104a6576104a66106b5565b81526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908360ff1602179055509050506040518060800160405280686c6b935b8bbd400000815260200167221dc12450d5d55581526020016107d08152602001600960ff1681525060075f60066007811115610540576105406106b5565b6007811115610551576105516106b5565b81526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff021916908360ff160217905550905050604051806080016040528069010f0cf064dd5920000081526020016756bc75e2d631000081526020016107d08152602001600a60ff1681525060075f6007808111156105eb576105eb6106b5565b60078111156105fc576105fc6106b5565b815260208082019290925260409081015f208351815591830151600183015582015160028201556060909101516003909101805460ff191660ff909216919091179055506106c992505050565b80516001600160a01b038116811461065f575f5ffd5b919050565b5f5f5f5f60808587031215610677575f5ffd5b61068085610649565b935061068e60208601610649565b925061069c60408601610649565b91506106aa60608601610649565b905092959194509250565b634e487b7160e01b5f52602160045260245ffd5b608051613e676107355f395f818161036601528181610b95015281816114be0152818161159e0152818161167b0152818161175b01528181611d7c015281816126c001528181612c0201528181612e7a01528181612f5c0152818161303901526135720152613e675ff3fe608060405234801561000f575f5ffd5b506004361061026b575f3560e01c8063715018a61161014b578063c07b528a116100bf578063d43c89b411610084578063d43c89b4146106f3578063e643f63e14610706578063ec342ad014610719578063f939fc3e14610722578063fb9775e314610735578063fc1e62f514610748575f5ffd5b8063c07b528a14610669578063c1aff19814610688578063c285ad821461069b578063c8d4d979146106bb578063c9d4623f146106e0575f5ffd5b806387c35bc01161011057806387c35bc0146105ad578063899328f0146105c25780638da5cb5b146105e5578063a87430ba146105f7578063bff1f9e11461064b578063c007d71c14610654575f5ffd5b8063715018a61461056357806375f0a8741461056b578063764fe7d11461057e5780637695206114610587578063830834641461059a575f5ffd5b806330788952116101e25780634c90ae78116101a75780634c90ae7814610422578063513b21a3146104415780635764b7c41461045457806360a31a881461047c5780636386c1c7146104d65780636b4169c31461053b575f5ffd5b8063307889521461039b5780633e6c6fc7146103be578063405cb769146103d157806341080415146103f15780634773a6a914610419575f5ffd5b8063107a274a11610233578063107a274a146102ef5780631271fde01461030f57806313a88d4714610345578063231701e9146103585780632f48ab7d14610361578063305a67a814610388575f5ffd5b806305ad39351461026f578063079e43a51461029f5780630a76e5ed146102b25780630d0020f2146102c75780630e830e49146102da575b5f5ffd5b61028261027d3660046138c5565b61075b565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610282906001600160a01b031681565b6102ba61078f565b604051610296919061394e565b600354610282906001600160a01b031681565b6102ed6102e836600461399b565b610845565b005b6103026102fd3660046139bb565b6108fa565b60405161029691906139d2565b61033761031d36600461399b565b6001600160a01b03165f9081526009602052604090205490565b604051908152602001610296565b6102ed6103533660046139bb565b6109b7565b610337600f5481565b6102827f000000000000000000000000000000000000000000000000000000000000000081565b6102ed6103963660046139bb565b610f4f565b6103ae6103a93660046139bb565b6110c0565b6040516102969493929190613a12565b6103376103cc3660046138c5565b61114a565b6103e46103df36600461399b565b61116c565b6040516102969190613a46565b6103376103ff36600461399b565b6001600160a01b03165f908152600c602052604090205490565b6103376103e881565b61033761043036600461399b565b600c6020525f908152604090205481565b6102ed61044f366004613a85565b6111be565b61033761046236600461399b565b6001600160a01b03165f908152600b602052604090205490565b6104b361048a366004613ab6565b60076020525f908152604090208054600182015460028301546003909301549192909160ff1684565b6040805194855260208501939093529183015260ff166060820152608001610296565b6105146104e436600461399b565b6001600160a01b039081165f90815260086020526040902080546001820154600290920154921692909160ff1690565b604080516001600160a01b0390941684526020840192909252151590820152606001610296565b610543611934565b604080519485526020850193909352918301526060820152608001610296565b6102ed61198d565b600254610282906001600160a01b031681565b61033760065481565b610337610595366004613acf565b611a26565b6102ed6105a83660046139bb565b611abb565b6105b5611edd565b6040516102969190613b09565b6105d56105d0366004613acf565b612019565b6040519015158152602001610296565b5f54610282906001600160a01b031681565b61062c61060536600461399b565b60086020525f9081526040902080546002909101546001600160a01b039091169060ff1682565b604080516001600160a01b039093168352901515602083015201610296565b61033760055481565b61065c6120ef565b6040516102969190613b40565b61033761067736600461399b565b600b6020525f908152604090205481565b6103376106963660046138c5565b61234a565b6106ae6106a9366004613acf565b612363565b6040516102969190613bcd565b6106ce6106c936600461399b565b612423565b60405160ff9091168152602001610296565b600454610282906001600160a01b031681565b6103e461070136600461399b565b61243e565b6102ed610714366004613c0d565b612493565b61033761271081565b610337610730366004613acf565b612942565b6102ed6107433660046139bb565b6129b9565b6102ed6107563660046139bb565b612d0b565b6009602052815f5260405f208181548110610774575f80fd5b5f918252602090912001546001600160a01b03169150829050565b335f908152600860209081526040808320600101805482518185028101850190935280835260609492939192909184015b8282101561083c575f848152602090206040805160808101909152600484029091018054829060ff1660078111156107fa576107fa6138ed565b600781111561080b5761080b6138ed565b81526020016001820154815260200160028201548152602001600382015481525050815260200190600101906107c0565b50505050905090565b5f546001600160a01b031633146108935760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b60448201526064015b60405180910390fd5b6001600160a01b0381166108d85760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161088a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610902613836565b5f828152600a602090815260409182902082516080808201855282546001600160a01b0316825284519081019094526001820180549194929385019291829060ff166007811115610955576109556138ed565b6007811115610966576109666138ed565b81526020016001820154815260200160028201548152602001600382015481525050815260200160058201548152602001600682015f9054906101000a900460ff1615151515815250509050919050565b60105460ff16156109da5760405162461bcd60e51b815260040161088a90613c2d565b6010805460ff19166001908117909155335f908152600860205260409020908101548210610a3a5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b604482015260640161088a565b5f816001018381548110610a5057610a50613c64565b5f918252602082206004909102018054909250600790829060ff1682811115610a7b57610a7b6138ed565b6007811115610a8c57610a8c6138ed565b815260208082019290925260409081015f90812082516080810184528154815260018201549481019490945260028101549284019290925260039182015460ff1660608401529084015491925090610e1090610ae89042613c8c565b610af29190613c9f565b90508015610d24575f83600201548360400151610b0f9190613c8c565b90505f818311610b1f5782610b21565b815b90508015610d21575f818560200151610b3a9190613cbe565b9050610b4882610e10613cbe565b866003015f828254610b5a9190613cd5565b9250508190555081866002015f828254610b749190613cd5565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015610be3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c079190613ce8565b610c235760405162461bcd60e51b815260040161088a90613d07565b335f908152600c602052604081208054839290610c41908490613cd5565b90915550506040805182815242602082015233917fed97bbe70fba300581c3b5b9ff1bfeff45f9aa34c1b94d64137e08a8fd03f940910160405180910390a28460400151866002015410610d1f57610c993389613287565b855460405133917f6f110efb6a11908262f8c1c65b149539409306cd697bf13eaaf708fb2927e99791610ccf9160ff1690613d35565b60405180910390a260405162461bcd60e51b815260206004820152601e60248201527f4d696e65722065787069726564206166746572206175746f2d636c61696d0000604482015260640161088a565b505b50505b5f83600201548360400151610d399190613c8c565b90505f8111610d7e5760405162461bcd60e51b8152602060048201526011602482015270135a5b995c881a185cc8195e1c1a5c9959607a1b604482015260640161088a565b604080516080810190915284545f91908690829060ff166007811115610da657610da66138ed565b6007811115610db757610db76138ed565b8152600182015460208201526002820154604080830191909152600390920154606091820152429083015285015185519192505f91610df7908590613cbe565b610e019190613c9f565b90505f612710610e1383612328613cbe565b610e1d9190613c9f565b600f80549192505f919082610e3183613d43565b909155506040805160808101825233815260208082018881528284018790526001606084018190525f868152600a90935293909120825181546001600160a01b0319166001600160a01b03909116178155905180518285018054969750939592949193929091839160ff191690836007811115610eb057610eb06138ed565b0217905550602082015160018201556040808301516002830155606092830151600390920191909155830151600583015591909101516006909101805460ff1916911515919091179055610f04338b613287565b60405182815233907fb1c1ff2c666dcc4b834f938ce56e19c7eac74c23106e7b98b7ca42f5b01bf4179060200160405180910390a250506010805460ff191690555050505050505050565b5f818152600a60205260409020600681015460ff16610fa45760405162461bcd60e51b81526020600482015260116024820152704e6f20616374697665206c697374696e6760781b604482015260640161088a565b80546001600160a01b0316331461100b5760405162461bcd60e51b815260206004820152602560248201527f596f7520617265206e6f7420746865206f776e6572206f662074686973206c696044820152647374696e6760d81b606482015260840161088a565b60068101805460ff19908116909155335f9081526008602090815260408220600190810180548083018255908452919092208285018054600490930290910180549194909360ff9093169284929091169083600781111561106e5761106e6138ed565b02179055506001828101549082015560028083015490820155600391820154910155604051829033907f44a6e97835620dffc12642382cf0e62d7501f4994eca3a591b5c32b86abde805905f90a35050565b600a6020525f90815260409081902080548251608081019093526001820180546001600160a01b039092169391829060ff166007811115611103576111036138ed565b6007811115611114576111146138ed565b81526001820154602082015260028201546040820152600390910154606090910152600582015460069092015490919060ff1684565b600e602052815f5260405f2081600a8110611163575f80fd5b01549150829050565b61117461388b565b6001600160a01b0382165f908152600d602052604090819020815161014081019283905291600a9082845b81548152602001906001019080831161119f5750505050509050919050565b60105460ff16156111e15760405162461bcd60e51b815260040161088a90613c2d565b6010805460ff191660011790555f6007818482811115611203576112036138ed565b6007811115611214576112146138ed565b815260208082019290925260409081015f20815160808101835281548082526001830154948201949094526002820154928101929092526003015460ff166060820152915061129b5760405162461bcd60e51b81526020600482015260136024820152724d6f64656c206e6f7420617661696c61626c6560681b604482015260640161088a565b335f908152600860205260409020600281015460ff1661141c5760028101805460ff1916600117905560058054905f6112d383613d43565b909155508390506001600160a01b03811615806112f857506001600160a01b03811633145b8061131e57506001600160a01b0381165f9081526008602052604090206002015460ff16155b1561133057505f546001600160a01b03165b6001600160a01b0381161561141a5781546001600160a01b0382166001600160a01b0319918216811784555f90815260096020908152604082208054600181018255908352908220018054909216331790915581905b600a8160ff161080156113a157506001600160a01b03821615155b15611417576001600160a01b0382165f908152600d6020526040902060019060ff8316600a81106113d4576113d4613c64565b015f8282546113e39190613cd5565b90915550506001600160a01b039182165f90815260086020526040902054909116908061140f81613d5b565b915050611386565b50505b505b81515f90612710906114309061012c613cbe565b61143a9190613c9f565b90505f612710845f015161012c6114519190613cbe565b61145b9190613c9f565b90505f612710855f01516101906114729190613cbe565b61147c9190613c9f565b90505f818385885f01516114909190613c8c565b61149a9190613c8c565b6114a49190613c8c565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906114f790339030908690600401613d79565b6020604051808303815f875af1158015611513573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115379190613ce8565b6115835760405162461bcd60e51b815260206004820152601b60248201527f5472616e7366657220746f20636f6e7472616374206661696c65640000000000604482015260640161088a565b600480546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116936323b872dd936115d993339391909116918a9101613d79565b6020604051808303815f875af11580156115f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116199190613ce8565b6116615760405162461bcd60e51b8152602060048201526019602482015278151c985b9cd9995c881d1bc8195b99da5b994819985a5b1959603a1b604482015260640161088a565b6002546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926323b872dd926116b592339216908890600401613d79565b6020604051808303815f875af11580156116d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f59190613ce8565b6117415760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f206d61726b6574696e6731206661696c6564000000604482015260640161088a565b6003546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926323b872dd9261179592339216908790600401613d79565b6020604051808303815f875af11580156117b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d59190613ce8565b6118215760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f206d61726b6574696e6732206661696c6564000000604482015260640161088a565b335f908152600860205260409081902081516080810190925260010190808a6007811115611851576118516138ed565b81524260208083018290525f6040840181905260609093019190915283546001818101865594835291208251600490920201805492939092839160ff19909116908360078111156118a4576118a46138ed565b0217905550602082015160018201556040820151600282015560609091015160039091015560068054905f6118d883613d43565b9190505550336001600160a01b03167fef4fa0e215a130c1a7c7a66fe299fde753eb50f783373818e0fc215fffd0497b8942604051611918929190613d9d565b60405180910390a250506010805460ff19169055505050505050565b5f80808080805b600f54811015611974575f818152600a602052604090206006015460ff161561196c578161196881613d43565b9250505b60010161193b565b50600f5460055460065491965094509250905090919293565b5f546001600160a01b031633146119d65760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b604482015260640161088a565b5f546040516001600160a01b0390911681527ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c648209060200160405180910390a15f80546001600160a01b0319169055565b5f60018260ff1610158015611a3f5750600a8260ff1611155b611a7b5760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081b195d995b609a1b604482015260640161088a565b6001600160a01b0383165f908152600e60205260409020611a9d600184613db8565b60ff16600a8110611ab057611ab0613c64565b015490505b92915050565b60105460ff1615611ade5760405162461bcd60e51b815260040161088a90613c2d565b6010805460ff19166001908117909155335f908152600860205260409020908101548210611b445760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840dad2dccae440d2dcc8caf606b1b604482015260640161088a565b5f816001018381548110611b5a57611b5a613c64565b905f5260205f20906004020190505f816001015411611bbb5760405162461bcd60e51b815260206004820152601960248201527f496e616374697665206f722072656d6f766564206d696e657200000000000000604482015260640161088a565b5f610e10826003015442611bcf9190613c8c565b611bd99190613c9f565b90505f8111611c2a5760405162461bcd60e51b815260206004820152601d60248201527f596f75206d7573742077616974206174206c65617374203120686f7572000000604482015260640161088a565b81545f90600790829060ff1682811115611c4657611c466138ed565b6007811115611c5757611c576138ed565b815260208082019290925260409081015f90812082516080810184528154815260018201549481019490945260028082015493850184905260039091015460ff16606085015286015492935091611cad91613c8c565b90505f818411611cbd5783611cbf565b815b90505f818460200151611cd29190613cbe565b90505f8111611d235760405162461bcd60e51b815260206004820152601760248201527f4e6f2070726f64756374696f6e20617661696c61626c65000000000000000000604482015260640161088a565b611d2f82610e10613cbe565b866003015f828254611d419190613cd5565b9250508190555081866002015f828254611d5b9190613cd5565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611dca573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dee9190613ce8565b611e0a5760405162461bcd60e51b815260040161088a90613d07565b335f908152600c602052604081208054839290611e28908490613cd5565b90915550506040805182815242602082015233917fed97bbe70fba300581c3b5b9ff1bfeff45f9aa34c1b94d64137e08a8fd03f940910160405180910390a28360400151866002015410611ebf57611e803389613287565b855460405133917f6f110efb6a11908262f8c1c65b149539409306cd697bf13eaaf708fb2927e99791611eb69160ff1690613d35565b60405180910390a25b611ec933826133d4565b50506010805460ff19169055505050505050565b600f546060905f8167ffffffffffffffff811115611efd57611efd613dd1565b604051908082528060200260200182016040528015611f26578160200160208202803683370190505b5090505f805b83811015611f80575f818152600a602052604090206006015460ff1615611f7857808383611f5981613d43565b945081518110611f6b57611f6b613c64565b6020026020010181815250505b600101611f2c565b505f8167ffffffffffffffff811115611f9b57611f9b613dd1565b604051908082528060200260200182016040528015611fc4578160200160208202803683370190505b5090505f5b8281101561201057838181518110611fe357611fe3613c64565b6020026020010151828281518110611ffd57611ffd613c64565b6020908102919091010152600101611fc9565b50949350505050565b6001600160a01b0382165f9081526008602052604081206002015460ff16158061205b57506001600160a01b0383165f90815260086020526040902060010154155b1561206757505f611ab5565b5f61207184613715565b90505f60075f836007811115612089576120896138ed565b600781111561209a5761209a6138ed565b815260208082019290925260409081015f208151608081018352815481526001820154938101939093526002810154918301919091526003015460ff9081166060909201829052851611159250505092915050565b335f90815260086020526040812060018101546060928167ffffffffffffffff81111561211e5761211e613dd1565b60405190808252806020026020018201604052801561219057816020015b61217d604080516101008101909152805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b81526020019060019003908161213c5790505b5090505f5b82811015612342575f8460010182815481106121b3576121b3613c64565b5f918252602082206004909102018054909250600790829060ff16828111156121de576121de6138ed565b60078111156121ef576121ef6138ed565b815260208082019290925260409081015f90812082516080810184528154815260018201549481019490945260028101549284019290925260039182015460ff1660608401529084015491925090610e109061224b9042613c8c565b6122559190613c9f565b90505f8360020154836040015161226c9190613c8c565b90505f81831161227c578261227e565b815b90505f8185602001516122919190613cbe565b90505f866002015486602001516122a89190613cbe565b604080516101008101909152885491925090819060ff1660078111156122d0576122d06138ed565b815260200188600101548152602001886002015481526020018860030154815260200183815260200187604001518152602001876020015181526020018281525089898151811061232357612323613c64565b6020026020010181905250505050505050508080600101915050612195565b509392505050565b600d602052815f5260405f2081600a8110611163575f80fd5b60608160ff166001146123b15760405162461bcd60e51b815260206004820152601660248201527513db9b1e481b195d995b080c481a5cc81cdd1bdc995960521b604482015260640161088a565b6001600160a01b0383165f908152600960209081526040918290208054835181840281018401909452808452909183018282801561241657602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116123f8575b5050505050905092915050565b5f61242d82613715565b6007811115611ab557611ab56138ed565b61244661388b565b6001600160a01b0382165f908152600e60205260409081902081516101408101909252600a82828260200282019181548152602001906001019080831161119f5750505050509050919050565b60105460ff16156124b65760405162461bcd60e51b815260040161088a90613c2d565b6010805460ff19166001908117909155335f9081526008602052604090209081015483106125165760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b604482015260640161088a565b5f82116125655760405162461bcd60e51b815260206004820152601f60248201527f5072696365206d7573742062652067726561746572207468616e207a65726f00604482015260640161088a565b5f81600101848154811061257b5761257b613c64565b5f918252602082206004909102018054909250600790829060ff16828111156125a6576125a66138ed565b60078111156125b7576125b76138ed565b815260208082019290925260409081015f90812082516080810184528154815260018201549481019490945260028101549284019290925260039182015460ff1660608401529084015491925090610e10906126139042613c8c565b61261d9190613c9f565b905080156127c9575f8360020154836040015161263a9190613c8c565b90505f81831161264a578261264c565b815b905080156127c6575f8185602001516126659190613cbe565b905061267382610e10613cbe565b866003015f8282546126859190613cd5565b9250508190555081866002015f82825461269f9190613cd5565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af115801561270e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127329190613ce8565b61274e5760405162461bcd60e51b815260040161088a90613d07565b335f908152600c60205260408120805483929061276c908490613cd5565b90915550506040805182815242602082015233917fed97bbe70fba300581c3b5b9ff1bfeff45f9aa34c1b94d64137e08a8fd03f940910160405180910390a284604001518660020154106127c457610c99338a613287565b505b50505b604080516080810190915283545f91908590829060ff1660078111156127f1576127f16138ed565b6007811115612802576128026138ed565b815260018201546020820152600282015460408201526003909101546060918201524290820152600f80549192505f91908261283d83613d43565b909155506040805160808101825233815260208082018681528284018c90526001606084018190525f868152600a90935293909120825181546001600160a01b0319166001600160a01b03909116178155905180518285018054969750939592949193929091839160ff1916908360078111156128bc576128bc6138ed565b0217905550602082015160018201556040808301516002830155606092830151600390920191909155830151600583015591909101516006909101805460ff19169115159190911790556129103389613287565b60405187815233907fb1c1ff2c666dcc4b834f938ce56e19c7eac74c23106e7b98b7ca42f5b01bf41790602001611918565b5f60018260ff161015801561295b5750600a8260ff1611155b6129975760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081b195d995b609a1b604482015260640161088a565b6001600160a01b0383165f908152600d60205260409020611a9d600184613db8565b60105460ff16156129dc5760405162461bcd60e51b815260040161088a90613c2d565b6010805460ff19166001908117909155335f908152600860205260409020908101548210612a425760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840dad2dccae440d2dcc8caf606b1b604482015260640161088a565b5f816001018381548110612a5857612a58613c64565b5f918252602090912060408051608081019091526004909202018054829060ff166007811115612a8a57612a8a6138ed565b6007811115612a9b57612a9b6138ed565b8152602001600182015481526020016002820154815260200160038201548152505090505f60075f835f01516007811115612ad857612ad86138ed565b6007811115612ae957612ae96138ed565b815260208082019290925260409081015f908120825160808101845281548152600182015494810194909452600281015484840181905260039091015460ff166060850152918501519293509110612b41575f612b55565b82604001518260400151612b559190613c8c565b90505f8111612b9f5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c88185b1c9958591e4819195c1b195d195960521b604482015260640161088a565b5f826040015182845f0151612bb49190613cbe565b612bbe9190613c9f565b90505f612710612bd083611b58613cbe565b612bda9190613c9f565b9050612be63388613287565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015612c50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c749190613ce8565b612cb95760405162461bcd60e51b815260206004820152601660248201527514185e5bdd5d081d1c985b9cd9995c8819985a5b195960521b604482015260640161088a565b845160405133917febb8dd3e5b9fc4b5f5d5def7e0a527f8aee938fed075063ad0192010f74a700c91612cf0919085908890613de5565b60405180910390a250506010805460ff191690555050505050565b60105460ff1615612d2e5760405162461bcd60e51b815260040161088a90613c2d565b6010805460ff191660011790555f818152600a60205260409020600681015460ff16612d8e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206c697374696e6760881b604482015260640161088a565b80546001600160a01b03163303612de75760405162461bcd60e51b815260206004820152601c60248201527f596f752063616e6e6f74206275792066726f6d20796f757273656c6600000000604482015260640161088a565b5f6127106103e88360050154612dfd9190613cbe565b612e079190613c9f565b90505f818360050154612e1a9190613c8c565b90505f6127108460050154610258612e329190613cbe565b612e3c9190613c9f565b90505f6127108560050154610190612e549190613cbe565b612e5e9190613c9f565b85546040516323b872dd60e01b81529192506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926323b872dd92612eb59233929116908890600401613d79565b6020604051808303815f875af1158015612ed1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ef59190613ce8565b612f415760405162461bcd60e51b815260206004820152601960248201527f5472616e7366657220746f2073656c6c6572206661696c656400000000000000604482015260640161088a565b600480546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116936323b872dd93612f979333939190911691889101613d79565b6020604051808303815f875af1158015612fb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fd79190613ce8565b61301f5760405162461bcd60e51b8152602060048201526019602482015278151c985b9cd9995c881d1bc8195b99da5b994819985a5b1959603a1b604482015260640161088a565b6003546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926323b872dd9261307392339216908690600401613d79565b6020604051808303815f875af115801561308f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130b39190613ce8565b6130ff5760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220746f206d61726b6574696e6732206661696c6564000000604482015260640161088a565b60408051608081019091526001860180545f929190829060ff16600781111561312a5761312a6138ed565b600781111561313b5761313b6138ed565b815260018281015460208084019190915260028401546040808501919091526003909401546060938401524292850192909252335f90815260088352928320810180548083018255908452919092208351600490920201805493945084939092839160ff1916908360078111156131b4576131b46138ed565b02179055506020828101516001830155604080840151600284015560609093015160039092019190915560068801805460ff19169055875482518781529182018890526001600160a01b0316917f4f4b63627c2fa564d0caab9740ec56ab72aa298cf56adeb17bdc2173fb9831b0910160405180910390a28554600587015460405190815288916001600160a01b03169033907f65bafd5b18de2886080872242b75747f62cbaf66079addd8b1f0dec2e1eed5df9060200160405180910390a450506010805460ff191690555050505050565b6001600160a01b0382165f908152600860205260409020600181015482106132e65760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161088a565b6001818101545f916132f791613c8c565b905080831461338c5781600101818154811061331557613315613c64565b905f5260205f20906004020182600101848154811061333657613336613c64565b5f918252602090912082546004909202018054909160ff1690829060ff19166001836007811115613369576133696138ed565b021790555060018281015490820155600280830154908201556003918201549101555b8160010180548061339f5761339f613e04565b5f8281526020812060045f1990930192830201805460ff19168155600181018290556002810182905560030155905550505050565b6001600160a01b038083165f90815260086020526040812054909116905b600a8160ff1610801561340d57506001600160a01b03821615155b1561370f576001600160a01b0382165f908152600860205260408120600181015490910361344657546001600160a01b031691506136fd565b5f61345084613715565b90505f60075f836007811115613468576134686138ed565b6007811115613479576134796138ed565b815260208082019290925260409081015f20815160808101835281548152600180830154948201949094526002820154928101929092526003015460ff16606082015291506134c9908590613e18565b60ff16816060015160ff16106136ee575f8460ff165f036134ed57506103e861352c565b8460ff1660010361350157506101f461352c565b8460ff16600203613515575061012c61352c565b8460ff16600303613528575060c861352c565b5060645b5f61271061353a838a613cbe565b6135449190613c9f565b905080156136eb5760405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156135b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135dc9190613ce8565b6136285760405162461bcd60e51b815260206004820152601860248201527f526566657272616c207472616e73666572206661696c65640000000000000000604482015260640161088a565b6001600160a01b0387165f908152600b60205260408120805483929061364f908490613cd5565b90915550506001600160a01b0387165f908152600e60205260409020819060ff8816600a811061368157613681613c64565b015f8282546136909190613cd5565b90915550506001600160a01b03808816908a167f9e049ed607614d479b674dbbbd87ad8695ec902d2f960b95e7a01c5c86b2d1656136cf896001613e18565b6040805160ff9092168252602082018690520160405180910390a35b50505b5050546001600160a01b031691505b8061370781613d5b565b9150506133f2565b50505050565b6001600160a01b0381165f90815260086020526040812060018101546137725760405162461bcd60e51b81526020600482015260126024820152715573657220686173206e6f206d696e65727360701b604482015260640161088a565b5f816001015f8154811061378857613788613c64565b5f91825260209091206004909102015460ff16905060015b6001830154811015612342578160078111156137be576137be6138ed565b60ff168360010182815481106137d6576137d6613c64565b5f91825260209091206004909102015460ff1660078111156137fa576137fa6138ed565b60ff16111561382e5782600101818154811061381857613818613c64565b5f91825260209091206004909102015460ff1691505b6001016137a0565b60405180608001604052805f6001600160a01b031681526020016138786040805160808101909152805f81526020015f81526020015f81526020015f81525090565b81525f6020820181905260409091015290565b604051806101400160405280600a906020820280368337509192915050565b80356001600160a01b03811681146138c0575f5ffd5b919050565b5f5f604083850312156138d6575f5ffd5b6138df836138aa565b946020939093013593505050565b634e487b7160e01b5f52602160045260245ffd5b6008811061391d57634e487b7160e01b5f52602160045260245ffd5b9052565b61392c828251613901565b6020810151602083015260408101516040830152606081015160608301525050565b602080825282518282018190525f918401906040840190835b818110156139905761397a838551613921565b6020939093019260809290920191600101613967565b509095945050505050565b5f602082840312156139ab575f5ffd5b6139b4826138aa565b9392505050565b5f602082840312156139cb575f5ffd5b5035919050565b81516001600160a01b0316815260208083015160e08301916139f690840182613921565b50604083015160a0830152606090920151151560c09091015290565b6001600160a01b038516815260e08101613a2f6020830186613921565b8360a083015282151560c083015295945050505050565b610140810181835f5b600a811015613a6e578151835260209283019290910190600101613a4f565b50505092915050565b8035600881106138c0575f5ffd5b5f5f60408385031215613a96575f5ffd5b613a9f83613a77565b9150613aad602084016138aa565b90509250929050565b5f60208284031215613ac6575f5ffd5b6139b482613a77565b5f5f60408385031215613ae0575f5ffd5b613ae9836138aa565b9150602083013560ff81168114613afe575f5ffd5b809150509250929050565b602080825282518282018190525f918401906040840190835b81811015613990578351835260209384019390920191600101613b22565b602080825282518282018190525f918401906040840190835b81811015613990578351613b6e848251613901565b6020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c085015260e081015160e08501525061010083019250602084019350600181019050613b59565b602080825282518282018190525f918401906040840190835b818110156139905783516001600160a01b0316835260209384019390920191600101613be6565b5f5f60408385031215613c1e575f5ffd5b50508035926020909101359150565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611ab557611ab5613c78565b5f82613cb957634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417611ab557611ab5613c78565b80820180821115611ab557611ab5613c78565b5f60208284031215613cf8575f5ffd5b815180151581146139b4575f5ffd5b6020808252601490820152731554d115081d1c985b9cd9995c8819985a5b195960621b604082015260600190565b60208101611ab58284613901565b5f60018201613d5457613d54613c78565b5060010190565b5f60ff821660ff8103613d7057613d70613c78565b60010192915050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60408101613dab8285613901565b8260208301529392505050565b60ff8281168282160390811115611ab557611ab5613c78565b634e487b7160e01b5f52604160045260245ffd5b60608101613df38286613901565b602082019390935260400152919050565b634e487b7160e01b5f52603160045260245ffd5b60ff8181168382160190811115611ab557611ab5613c7856fea2646970667358221220ec4702a326396b195b1ef2e5446da1fd6f76eb05f836202fb566658f911016ae64736f6c634300081e003300000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000c625954ba808568af5d3e2150b24218ed60732a60000000000000000000000000fedcba6c29688229ac518213e8ab84dcbed2dab000000000000000000000000c8000e2b513c1a1a07f38847973762be8fd92850