UNPKG

@augmentedfinance/protocol-v1

Version:

Augmented Protocol smart contracts

1,084 lines 63.9 kB
"use strict"; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ Object.defineProperty(exports, "__esModule", { value: true }); exports.RewardBoosterV1Factory = void 0; const contracts_1 = require("@ethersproject/contracts"); class RewardBoosterV1Factory extends contracts_1.ContractFactory { constructor(signer) { super(_abi, _bytecode, signer); } deploy(overrides) { return super.deploy(overrides || {}); } getDeployTransaction(overrides) { return super.getDeployTransaction(overrides || {}); } attach(address) { return super.attach(address); } connect(signer) { return super.connect(signer); } static connect(address, signerOrProvider) { return new contracts_1.Contract(address, _abi, signerOrProvider); } } exports.RewardBoosterV1Factory = RewardBoosterV1Factory; const _abi = [ { inputs: [], stateMutability: "nonpayable", type: "constructor", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "baseline", type: "uint256", }, { indexed: false, internalType: "uint256", name: "totalRate", type: "uint256", }, { indexed: false, internalType: "uint256", name: "mask", type: "uint256", }, ], name: "BaselineUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "pool", type: "address", }, { indexed: false, internalType: "uint256", name: "mask", type: "uint256", }, { indexed: false, internalType: "uint32", name: "pctFactor", type: "uint32", }, ], name: "BoostFactorSet", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "by", type: "address", }, { indexed: false, internalType: "bool", name: "paused", type: "bool", }, ], name: "EmergencyPaused", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint16", name: "minBoostPct", type: "uint16", }, ], name: "MinBoostUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "account", type: "address", }, { indexed: false, internalType: "enum AutolockMode", name: "mode", type: "uint8", }, { indexed: false, internalType: "uint32", name: "lockDuration", type: "uint32", }, { indexed: false, internalType: "uint224", name: "param", type: "uint224", }, ], name: "RewardAutolockConfigured", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "minter", type: "address", }, ], name: "RewardMinterSet", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "pool", type: "address", }, { indexed: false, internalType: "uint256", name: "mask", type: "uint256", }, ], name: "RewardPoolAdded", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "pool", type: "address", }, { indexed: false, internalType: "uint256", name: "mask", type: "uint256", }, ], name: "RewardPoolRemoved", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "user", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, { indexed: true, internalType: "address", name: "fromPool", type: "address", }, ], name: "RewardsAllocated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "user", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "RewardsClaimed", type: "event", }, { inputs: [], name: "REVISION", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "pure", type: "function", }, { inputs: [ { internalType: "contract IManagedRewardPool", name: "pool", type: "address", }, ], name: "addRewardPool", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "holder", type: "address", }, { internalType: "uint256", name: "allocated", type: "uint256", }, { internalType: "uint32", name: "since", type: "uint32", }, { internalType: "enum AllocationMode", name: "mode", type: "uint8", }, ], name: "allocatedByPool", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "timestamp", type: "uint256", }, { internalType: "uint32", name: "lockDuration", type: "uint32", }, ], name: "autolockAccumulateTill", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "maxAmount", type: "uint256", }, { internalType: "uint32", name: "lockDuration", type: "uint32", }, ], name: "autolockAccumulateUnderlying", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "autolockDefault", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "minAmount", type: "uint256", }, { internalType: "uint32", name: "lockDuration", type: "uint32", }, ], name: "autolockKeepUpBalance", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, ], name: "autolockOf", outputs: [ { internalType: "enum AutolockMode", name: "mode", type: "uint8", }, { internalType: "uint32", name: "lockDuration", type: "uint32", }, { internalType: "uint256", name: "param", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint32", name: "minLockDuration", type: "uint32", }, ], name: "autolockProlongate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "autolockStop", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "holder", type: "address", }, ], name: "balanceOf", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "claimReward", outputs: [ { internalType: "uint256", name: "claimed", type: "uint256", }, { internalType: "uint256", name: "extra", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "receiver", type: "address", }, { internalType: "uint256", name: "includeMask", type: "uint256", }, ], name: "claimRewardTo", outputs: [ { internalType: "uint256", name: "claimed", type: "uint256", }, { internalType: "uint256", name: "extra", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "holder", type: "address", }, ], name: "claimablePools", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "holder", type: "address", }, ], name: "claimableReward", outputs: [ { internalType: "uint256", name: "claimable", type: "uint256", }, { internalType: "uint256", name: "extra", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "holder", type: "address", }, { internalType: "uint256", name: "includeMask", type: "uint256", }, ], name: "claimableRewardFor", outputs: [ { internalType: "uint256", name: "claimable", type: "uint256", }, { internalType: "uint256", name: "extra", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "disableAutolock", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "enum AutolockMode", name: "mode", type: "uint8", }, { internalType: "uint32", name: "lockDuration", type: "uint32", }, { internalType: "uint224", name: "param", type: "uint224", }, ], name: "enableAutolockAndSetDefault", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "holder", type: "address", }, { internalType: "uint32", name: "at", type: "uint32", }, ], name: "explainReward", outputs: [ { components: [ { internalType: "uint256", name: "amountClaimable", type: "uint256", }, { internalType: "uint256", name: "amountExtra", type: "uint256", }, { internalType: "uint256", name: "maxBoost", type: "uint256", }, { internalType: "uint256", name: "boostLimit", type: "uint256", }, { internalType: "uint32", name: "latestClaimAt", type: "uint32", }, { components: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "uint256", name: "extra", type: "uint256", }, { internalType: "address", name: "pool", type: "address", }, { internalType: "uint32", name: "since", type: "uint32", }, { internalType: "uint32", name: "factor", type: "uint32", }, { internalType: "enum RewardType", name: "rewardType", type: "uint8", }, ], internalType: "struct RewardExplainEntry[]", name: "allocations", type: "tuple[]", }, ], internalType: "struct RewardExplained", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getAccessController", outputs: [ { internalType: "contract IMarketAccessController", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getBoostExcessTarget", outputs: [ { internalType: "address", name: "target", type: "address", }, { internalType: "bool", name: "mintExcess", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "pool", type: "address", }, ], name: "getBoostFactor", outputs: [ { internalType: "uint32", name: "pctFactor", type: "uint32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getBoostPool", outputs: [ { internalType: "address", name: "pool", type: "address", }, { internalType: "uint256", name: "mask", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getMinBoost", outputs: [ { internalType: "uint16", name: "", type: "uint16", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "pool", type: "address", }, ], name: "getPoolMask", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getPools", outputs: [ { internalType: "contract IManagedRewardPool[]", name: "", type: "address[]", }, { internalType: "uint256", name: "ignoreMask", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "allMask", type: "uint256", }, ], name: "getPoolsByMask", outputs: [ { internalType: "address[]", name: "pools", type: "address[]", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getRewardMinter", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract IMarketAccessController", name: "ac", type: "address", }, ], name: "initialize", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "isAutolockEnabled", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "addr", type: "address", }, ], name: "isConfigAdmin", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "isPaused", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "addr", type: "address", }, ], name: "isRateAdmin", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract IManagedRewardPool", name: "pool", type: "address", }, ], name: "removeRewardPool", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "contract IManagedRewardPool[]", name: "pools", type: "address[]", }, { internalType: "uint16[]", name: "pcts", type: "uint16[]", }, { internalType: "uint256", name: "baseline", type: "uint256", }, ], name: "setBaselinePercentagesAndRate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "target", type: "address", }, { internalType: "bool", name: "mintExcess", type: "bool", }, ], name: "setBoostExcessTarget", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "pool", type: "address", }, { internalType: "uint32", name: "pctFactor", type: "uint32", }, ], name: "setBoostFactor", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "pool", type: "address", }, ], name: "setBoostPool", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "includeMask", type: "uint256", }, ], name: "setClaimablePools", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address[]", name: "accounts", type: "address[]", }, { internalType: "uint256", name: "includeMask", type: "uint256", }, ], name: "setClaimablePoolsFor", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint16", name: "minBoostPct", type: "uint16", }, ], name: "setMinBoost", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "paused", type: "bool", }, ], name: "setPaused", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "contract IRewardMinter", name: "minter", type: "address", }, ], name: "setRewardMinter", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "updateBoostPool", type: "bool", }, ], name: "setUpdateBoostPoolRate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "baseline", type: "uint256", }, ], name: "updateBaseline", outputs: [ { internalType: "uint256", name: "totalRate", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x60806040526200001360016000196200004b565b600f5560006010553480156200002857600080fd5b50600080546001600160a01b03199081169091556001805490911690556200006f565b6000828210156200006a57634e487b7160e01b81526011600452602481fd5b500390565b61479d806200007f6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80639184a75f1161015c578063c4d66de8116100ce578063d44ec8b911610087578063d44ec8b9146105fe578063d49ebe8f14610611578063dde43cba14610624578063ddebfb921461062b578063e95034251461063e578063e9cce4d31461065157600080fd5b8063c4d66de81461058a578063c7d6ad5a1461059d578063ca5b5946146105b0578063cbb207da146105b8578063ce91a059146105cb578063cf0a230a146105de57600080fd5b8063b0286b1811610120578063b0286b1814610516578063b10fb7aa14610529578063b187bd2614610551578063b6de34c91461055c578063b88a802f1461056f578063bea9a0541461057757600080fd5b80639184a75f146104b75780639cb9a554146104ca5780639d0812fe146104dd578063a6c3b8e8146104f0578063a7a0b84a1461050357600080fd5b80634b4739ea116101f557806365eea7fd116101b957806365eea7fd14610458578063673a2a1f146104605780636eb859811461047657806370a082311461048957806372463e3f1461049c5780637adab08d146104af57600080fd5b80634b4739ea146103ed5780634dfdd3e5146104005780635174c4e61461041157806352284ea11461042457806356fe702d1461043757600080fd5b806326fd27121161024757806326fd27121461032d5780632803b7b11461034d5780632fd1fc8314610375578063364c28311461038d57806339b5ea5f146103af57806345a03035146103c257600080fd5b80630ca2103d146102845780630df8b0e3146102aa57806311bf2c20146102e057806316c38b3c146102f357806316d6b5f614610308575b600080fd5b6102976102923660046141a9565b610664565b6040519081526020015b60405180910390f35b6102c1600a54600b546001600160a01b0390911691565b604080516001600160a01b0390931683526020830191909152016102a1565b6102976102ee366004613ed7565b610771565b6103066103013660046140f1565b6107be565b005b6000546001600160a01b03165b6040516001600160a01b0390911681526020016102a1565b61034061033b3660046141a9565b61083d565b6040516102a19190614323565b61036061035b366004613f47565b610992565b604080519283526020830191909152016102a1565b61037d6109b5565b60405190151581526020016102a1565b6103a061039b366004613ed7565b6109eb565b6040516102a1939291906143f4565b6103066103bd366004614206565b610b6e565b600c54604080516001600160a01b0383168152600160b01b90920460ff1615156020830152016102a1565b6103066103fb366004614080565b610c38565b6001546001600160a01b0316610315565b61030661041f36600461413a565b610e31565b610306610432366004613ed7565b610e49565b600c54600160a01b900461ffff1660405161ffff90911681526020016102a1565b610306611159565b610468611169565b6040516102a1929190614370565b61037d610484366004613ed7565b6111d6565b610297610497366004613ed7565b611209565b6103066104aa366004614187565b61124a565b61030661130f565b6103066104c5366004614206565b61131f565b6102976104d8366004613ed7565b611395565b6103066104eb366004613f0f565b6113a2565b6103066104fe366004613ed7565b6113fa565b610306610511366004613ed7565b6116da565b610306610524366004613fb4565b611730565b61053c610537366004613ed7565b611818565b60405163ffffffff90911681526020016102a1565b60075460ff1661037d565b61036061056a366004613f47565b611839565b6103606118a5565b610306610585366004614009565b6118cd565b610306610598366004613ed7565b611943565b6103066105ab3660046142a9565b611a46565b610306611a54565b6103066105c63660046140f1565b611a62565b61037d6105d9366004613ed7565b611a88565b6105f16105ec366004614009565b611ab5565b6040516102a19190614492565b61030661060c366004614206565b611b29565b61030661061f3660046141a9565b611b99565b6003610297565b610306610639366004614036565b611bb6565b61036061064c366004613ed7565b611c35565b61030661065f366004613ed7565b611c50565b600061066e611cf7565b61067a82600654611d39565b600655604080518082019091526002815261070760f31b6020820152909150828211156106c35760405162461bcd60e51b81526004016106ba9190614419565b60405180910390fd5b50600154604051637ee9914160e11b8152306004820152602481018390526001600160a01b039091169063fdd3228290604401600060405180830381600087803b15801561071057600080fd5b505af1158015610724573d6000803e3d6000fd5b5050600654604080518681526020810186905280820192909252517f18c675fa7ed56fd1568a92bfa0c5d6993152c61c09bc673f68c14f165e2820bb9350908190036060019150a1919050565b6001600160a01b038116600090815260036020526040812054806107985750600092915050565b60016107a7816201000061466a565b82166107b3919061466a565b6001901b9392505050565b6040805180820190915260028152611b9b60f11b60208201526000546107f4916001600160a01b03909116903390600190611e63565b6007805460ff191682151590811790915560405190815233907facaf4ee8e6a4949ca96787d73dfff5165ff2c555b2304b8517dc5396053add859060200160405180910390a250565b60606005541961085783600254600019600190911b011690565b1691506000825b801561088357600181161561087b578161087781614698565b9250505b60011c61085e565b508067ffffffffffffffff8111156108ab57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156108d4578160200160208202803683370190505b5091506000905080835b835183101561098a576001811615610975576002828154811061091157634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031684848151811061094f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528261097181614698565b9350505b610980826001614576565b915060011c6108de565b505050919050565b6000806109a9846109a38686611e8d565b42611ea5565b915091505b9250929050565b600080600954600160e01b900460ff1660058111156109e457634e487b7160e01b600052602160045260246000fd5b1415905090565b6001600160a01b038116600090815260086020908152604080832081516060810190925280546001600160e01b038116835284938493849390929091830190600160e01b900460ff166005811115610a5357634e487b7160e01b600052602160045260246000fd5b6005811115610a7257634e487b7160e01b600052602160045260246000fd5b81529054600160e81b900460ff166020909101529050600081602001516005811115610aae57634e487b7160e01b600052602160045260246000fd5b1415610b33576040805160608101909152600980546001600160e01b03811683526020830190600160e01b900460ff166005811115610afd57634e487b7160e01b600052602160045260246000fd5b6005811115610b1c57634e487b7160e01b600052602160045260246000fd5b81529054600160e81b900460ff1660209091015290505b60208101516040820151610b4d9060ff1662093a80614629565b915190945062ffffff90911692506001600160e01b031690505b9193909250565b60008211610bb75760405162461bcd60e51b81526020600482015260166024820152751b5a5b88185b5bdd5b9d081a5cc81c995c5d5a5c995960521b60448201526064016106ba565b60008163ffffffff1611610c0d5760405162461bcd60e51b815260206004820152601960248201527f6c6f636b206475726174696f6e2069732072657175697265640000000000000060448201526064016106ba565b6001600160e01b03821115610c27576001600160e01b0391505b610c343360058385611f0b565b5050565b610c40611cf7565b838214610c835760405162461bcd60e51b81526020600482015260116024820152700dad2e6dac2e8c6d0cac840d8cadccee8d607b1b60448201526064016106ba565b60065460005b85811015610e0f576000610ccb888884818110610cb657634e487b7160e01b600052603260045260246000fd5b90506020020160208101906102ee9190613ed7565b905080610cea5760405162461bcd60e51b81526004016106ba9061446c565b878783818110610d0a57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d1f9190613ed7565b6001600160a01b0316634800df8c878785818110610d4d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d629190614187565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506000868684818110610dd857634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610ded9190614187565b61ffff161115610dfc57918217915b5080610e0781614698565b915050610c89565b5060068190556000198214610e2957610e2782610664565b505b505050505050565b610e39612038565b610e4483838361207a565b505050565b610e51612038565b6001600160a01b038116610e9e5760405162461bcd60e51b81526020600482015260146024820152731c995dd85c99081c1bdbdb081c995c5d5a5c995960621b60448201526064016106ba565b6001600160a01b03811660009081526003602052604090205480610ec0575050565b60006001610ed1816201000061466a565b8316610edd919061466a565b9050826001600160a01b031660028281548110610f0a57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614610f5e5760405162461bcd60e51b815260206004820152600f60248201526e1d5b995e1c1958dd1959081c1bdbdb608a1b60448201526064016106ba565b600060028281548110610f8157634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918516808252600383526040808320839055600580546001871b9081179091558151630746363d60e01b815291519094630746363d926004808201939182900301818787803b158015610ffb57600080fd5b505af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103391906141c1565b90508015611105576001600160ff1b0381111561108b5760405162461bcd60e51b815260206004820152601660248201527532bc31b2b9b9b4bb32903232b0b63637b1b0ba34b7b760511b60448201526064016106ba565b6001546001600160a01b031663ab6de779866110a6846146d6565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156110ec57600080fd5b505af1158015611100573d6000803e3d6000fd5b505050505b61110e856121a5565b846001600160a01b03167ff157e68e2245c70cbc79c5da7477f57616bf886825f65d57b9ff756847672e7b8360405161114991815260200190565b60405180910390a2505050505b50565b611167336001600080611f0b565b565b606060006002600554818054806020026020016040519081016040528092919081815260200182805480156111c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111a9575b50505050509150915091509091565b600080546001600160a01b03166111f657506001600160a01b0316301490565b61120382628000106121d3565b92915050565b60006001600160a01b03821661122157506000919050565b600080611233846109a3866000611e8d565b90925090506112428183614576565b949350505050565b6112526121eb565b61125e600160646145ff565b6112699060646145ff565b61ffff168161ffff1611156112b85760405162461bcd60e51b81526020600482015260156024820152740dad2dc40c4dedee6e840d2e640e8dede40d0d2ced605b1b60448201526064016106ba565b600c805461ffff60a01b1916600160a01b61ffff8416908102919091179091556040519081527fe6770ba09738c7d37f16c136778ec1630906e7f29695a18252b372702710119a906020015b60405180910390a150565b611317612038565b611167612203565b42821161136e5760405162461bcd60e51b815260206004820152601c60248201527f6675747572652074696d657374616d702069732072657175697265640000000060448201526064016106ba565b6001600160e01b03821115611388576001600160e01b0391505b610c343360048385611f0b565b6000611203826000611e8d565b6113aa612038565b600c80546001600160a01b0319166001600160a01b0384161790558080156113da57506001600160a01b03821615155b600c8054911515600160b01b0260ff60b01b199092169190911790555050565b611402612038565b6001600160a01b03811661144f5760405162461bcd60e51b81526020600482015260146024820152731c995dd85c99081c1bdbdb081c995c5d5a5c995960621b60448201526064016106ba565b6001600160a01b038116600090815260036020526040902054156114aa5760405162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b60448201526064016106ba565b60025460ff10156114ee5760405162461bcd60e51b815260206004820152600e60248201526d746f6f206d616e7920706f6f6c7360901b60448201526064016106ba565b60028054600180820183557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace820180546001600160a01b0319166001600160a01b0386169081179091559254600084815260036020908152604080832093909355600680549490951b93841790945581516355f4f19760e01b815291519294909390926355f4f19792600480820193929182900301818787803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cc91906141c1565b90508015611692576001600160ff1b0381111561162b5760405162461bcd60e51b815260206004820152601760248201527f65786365737369766520707265616c6c6f636174696f6e00000000000000000060448201526064016106ba565b60015460405163ab6de77960e01b81526001600160a01b038581166004830152602482018490529091169063ab6de77990604401600060405180830381600087803b15801561167957600080fd5b505af115801561168d573d6000803e3d6000fd5b505050505b826001600160a01b03167f305b52f8a9bfeffbe21e94adcd199148b2e85fc8305a3d121d99d078937df7d9836040516116cd91815260200190565b60405180910390a2505050565b6116e2612038565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f2ad2d6dc5545aec43acc94f1b5c82f80a64f6c7ffae5eb863a8b3d02d1bf973e90602001611304565b336000908152600360205260408120549061174f60016201000061466a565b82169050806117705760405162461bcd60e51b81526004016106ba9061446c565b60109190911c9084156117ca576117898686848761226d565b60405185815233906001600160a01b038816907f311f9037d22bffc94ed576587a0a76d15ce73b8ae0536c7f6319477740d5e8f29060200160405180910390a35b60008360028111156117ec57634e487b7160e01b600052602160045260246000fd5b14156117f9575050611812565b610e298661180860018461466a565b6001901b8561242b565b50505050565b6001600160a01b03811660009081526003602052604081205460101c611203565b6000806118446124c7565b6001600160a01b0384166118915760405162461bcd60e51b81526020600482015260146024820152731c9958d95a5d995c881a5cc81c995c5d5a5c995960621b60448201526064016106ba565b6109a93361189f3386611e8d565b86612505565b6000806118b06124c7565b6118c5336118bf336000611e8d565b33612505565b915091509091565b6118d56121eb565b600a546001600160a01b03838116911614156119335760405162461bcd60e51b815260206004820152601960248201527f666163746f7220666f722074686520626f6f737420706f6f6c0000000000000060448201526064016106ba565b610c34828263ffffffff16612589565b6003600080600061195384612646565b92509250925080611a2f576010849055604051635c9fcd8560e11b81526210000060048201526000906001600160a01b0387169063b93f9b0a9060240160206040518083038186803b1580156119a857600080fd5b505afa1580156119bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e09190613ef3565b90506001600160a01b0381166119f557600080fd5b611a288682600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055565b50600f8490555b81611a3f57600f83905560006010555b5050505050565b611156336002836000611f0b565b611167336000806000611f0b565b611a6a612038565b600c8054911515600160b81b0260ff60b81b19909216919091179055565b600080546001600160a01b0316611aa857506001600160a01b0316301490565b61120382628000086121d3565b611af46040518060c0016040528060008152602001600081526020016000815260200160008152602001600063ffffffff168152602001606081525090565b4263ffffffff168263ffffffff161015611b0d57600080fd5b611b2283611b1c8560006128bd565b8461291e565b9392505050565b60008211611b725760405162461bcd60e51b81526020600482015260166024820152751b585e08185b5bdd5b9d081a5cc81c995c5d5a5c995960521b60448201526064016106ba565b6001600160e01b03821115611b8c576001600160e01b0391505b610c343360038385611f0b565b611ba33382611e8d565b3360009081526004602052604090205550565b611bbe612038565b815b80156118125780611bd081614681565b9150506000848483818110611bf557634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611c0a9190613ed7565b9050611c168184611e8d565b6001600160a01b03909116600090815260046020526040902055611bc0565b600080611c47836109a3856000611e8d565b91509150915091565b611c58612038565b600a546001600160a01b0382811691161415611c715750565b600a546001600160a01b031615611c9957600a54611c99906001600160a01b03166000612589565b6001600160a01b038116611cb1576000600b55611cd7565b611cc081640200000000612589565b611cc981610771565b600b819055611cd757600080fd5b600a80546001600160a01b0383166001600160a01b031990911617905550565b611d00336111d6565b60405180604001604052806002815260200161383960f01b815250906111565760405162461bcd60e51b81526004016106ba9190614419565b600080600b5460001480611d575750600c54600160b81b900460ff16155b15611d6f57611d668484612f3a565b915091506109ae565b611d7e84600b54198516612f3a565b9350915083821015611dfd57600a546001600160a01b0316631bd5ad36611da5848761466a565b6040518263ffffffff1660e01b8152600401611dc391815260200190565b600060405180830381600087803b158015611ddd57600080fd5b505af1158015611df1573d6000803e3d6000fd5b50505050839150611e5c565b600a54604051630dead69b60e11b8152600060048201526001600160a01b0390911690631bd5ad3690602401600060405180830381600087803b158015611e4357600080fd5b505af1158015611e57573d6000803e3d6000fd5b505050505b5092909150565b611e6e84848461305b565b8190611a3f5760405162461bcd60e51b81526004016106ba9190614419565b6000600b5419611e9d84846128bd565b169392505050565b6000806001600160a01b038516611ef35760405162461bcd60e51b81526020600482015260126024820152711a1bdb19195c881a5cc81c995c5d5a5c995960721b60448201526064016106ba565b611efe858585613076565b915091505b935093915050565b6040518060600160405280826001600160e01b03168152602001846005811115611f4557634e487b7160e01b600052602160045260246000fd5b8152602001611f538461331d565b60ff1690526001600160a01b0385166000908152600860209081526040909120825181546001600160e01b039091166001600160e01b031982168117835592840151919283916001600160e81b03191617600160e01b836005811115611fc957634e487b7160e01b600052602160045260246000fd5b0217905550604091820151815460ff909116600160e81b0260ff60e81b19909116179055516001600160a01b038516907f26369aeb03f92f843d03b2ab158aa7d61ff073ae0b9523458b923bdefdda53589061202a908690869086906143c1565b60405180910390a250505050565b61204133611a88565b60405180604001604052806002815260200161383160f01b815250906111565760405162461bcd60e51b81526004016106ba9190614419565b600083600581111561209c57634e487b7160e01b600052602160045260246000fd5b116120a657600080fd5b6040518060600160405280826001600160e01b031681526020018460058111156120e057634e487b7160e01b600052602160045260246000fd5b81526020016120ee8461331d565b60ff1690528051600980546001600160e01b031981166001600160e01b0390931692831782556020840151919283916001600160e81b03191617600160e01b83600581111561214d57634e487b7160e01b600052602160045260246000fd5b0217905550604091820151815460ff909116600160e81b0260ff60e81b199091161790555130907f26369aeb03f92f843d03b2ab158aa7d61ff073ae0b9523458b923bdefdda5358906116cd908690869086906143c1565b600a546001600160a01b038281169116141561115657600a80546001600160a01b03191690556000600b5550565b60008054611b22906001600160a01b0316848461305b565b6121f433611a88565b80611d005750611d00336111d6565b60408051606081018252600080825260208201819052908201819052600980546001600160f01b0319169055905130917f26369aeb03f92f843d03b2ab158aa7d61ff073ae0b9523458b923bdefdda5358916122639190819081906143c1565b60405180910390a2565b8261227757611812565b6402000000008214156122b7576001600160a01b0384166000908152600d6020526040812080548592906122ac908490614576565b909155506118129050565b6001600160a01b0384166000908152600e6020908152604091829020825160608101845290546001600160701b038082168352600160701b82041692820192909252600160e01b90910463ffffffff169181018290529061231f5763ffffffff421660408201525b80516000906123389086906001600160701b0316614576565b90506001600160701b0381111561234e57600080fd5b6001600160701b038116825283156123b7576123738563ffffffff808716906133f316565b82602001516001600160701b03160190506001600160701b0380168110156123a9576001600160701b03811660208301526123b7565b6001600160701b0360208301525b506001600160a01b0385166000908152600e60209081526040918290208351815492850151939094015163ffffffff16600160e01b026001600160e01b036001600160701b03948516600160701b026001600160e01b03199094169490951693909317919091179290921617905550505050565b6124368383836134e8565b600281600281111561245857634e487b7160e01b600052602160045260246000fd5b1415612467576124678361352d565b6001600160a01b0383166000908152600e6020526040902054600160e01b900463ffffffff16610e445750506001600160a01b03166000908152600e6020526040902080546001600160e01b0316600160e01b4263ffffffff1602179055565b600754604080518082019091526002815261393160f01b60208201529060ff16156111565760405162461bcd60e51b81526004016106ba9190614419565b600080612512858561353b565b90925090508115611f035761252885848461392f565b6125329082614576565b9050826001600160a01b0316856001600160a01b03167f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c78460405161257991815260200190565b60405180910390a3935093915050565b6001600160f01b038111156125d65760405162461bcd60e51b815260206004820152601360248201527265786365737369766520706f6f6c20696e666f60681b60448201526064016106ba565b60006125e660016201000061466a565b6001600160a01b0384166000908152600360205260409020541690508061261f5760405162461bcd60e51b81526004016106ba9061446c565b6001600160a01b03909216600090815260036020526040902060109190911b919091179055565b6003600080612658600160001961466a565b83106126a65760405162461bcd60e51b815260206004820152601960248201527f696e76616c696420636f6e7472616374207265766973696f6e0000000000000060448201526064016106ba565b600084116126f65760405162461bcd60e51b815260206004820152601e60248201527f696e636f727265637420696e697469616c697a6572207265766973696f6e000060448201526064016106ba565b828411156127465760405162461bcd60e51b815260206004820152601e60248201527f696e636f6e73697374656e7420636f6e7472616374207265766973696f6e000060448201526064016106ba565b612753600160001961466a565b600f5410156127cf57600060105411801561276f575082600f54105b9150818061277c5750303b155b806127885750600f5483115b6127ca5760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016106ba565b61283f565b6127dc600160001961466a565b600f541480156127eb5750303b155b61282d5760405162461bcd60e51b81526020600482015260136024820152721a5b9a5d1a585b1a5e995c88189b1bd8dad959606a1b60448201526064016106ba565b6000600f556010546000199350151591505b81156128965783601054116128965760405162461bcd60e51b815260206004820152601f60248201527f696e636f7272656374206f72646572206f6620696e697469616c697a6572730060448201526064016106ba565b600f5484116128b35781156128ab5760016010555b506001610b67565b5060009193909250565b6000816128e957506005546001600160a01b038316600090815260046020526040902054901916611203565b6005546001600160a01b0384166000908152600460205260409020546002549119916001901b60001901841617169392505050565b61295d6040518060c0016040528060008152602001600081526020016000815260200160008152602001600063ffffffff168152602001606081525090565b6001600160a01b0384166000908152600e6020908152604080832081516060808201845291546001600160701b03808216808452600160701b8304909116958301869052600160e01b90910463ffffffff16938201849052608087019390935290850192909252835290845b80156129ee5760018116156129e657816129e281614698565b9250505b60011c6129c9565b508067ffffffffffffffff811115612a1657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612a7d57816020015b612a6a6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b815260200190600190039081612a345790505b5060a0840152506000805b8515612ebc5760018616612a9b57612ea3565b6000612aa682613988565b604051638abc37d360e01b81526001600160a01b038a8116600483015263ffffffff89166024830152919250600091829190841690638abc37d39060440160606040518083038186803b158015612afc57600080fd5b505afa158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3491906141d9565b8960a001518881518110612b5857634e487b7160e01b600052603260045260246000fd5b60200260200101516060018163ffffffff1663ffffffff16815250819350829450505050808760a001518681518110612ba157634e487b7160e01b600052603260045260246000fd5b602002602001015160200181815250508087602001818151612bc39190614576565b90525060a0870151805184919087908110612bee57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001906001600160a01b031690816001600160a01b031681525050818760a001518681518110612c3757634e487b7160e01b600052603260045260246000fd5b602090810291909101015152600a546001600160a01b0384811691161415612d5c5760018760a001518681518110612c7f57634e487b7160e01b600052603260045260246000fd5b602002602001015160a001906