aave-protocol-v2/types/ATokenFactory.ts

899 lines
41 KiB
TypeScript

/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractFactory, Signer } from "ethers";
import { Provider } from "ethers/providers";
import { UnsignedTransaction } from "ethers/utils/transaction";
import { TransactionOverrides } from ".";
import { AToken } from "./AToken";
export class ATokenFactory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
_pool: string,
_underlyingAssetAddress: string,
_tokenName: string,
_tokenSymbol: string,
overrides?: TransactionOverrides
): Promise<AToken> {
return super.deploy(
_pool,
_underlyingAssetAddress,
_tokenName,
_tokenSymbol,
overrides
) as Promise<AToken>;
}
getDeployTransaction(
_pool: string,
_underlyingAssetAddress: string,
_tokenName: string,
_tokenSymbol: string,
overrides?: TransactionOverrides
): UnsignedTransaction {
return super.getDeployTransaction(
_pool,
_underlyingAssetAddress,
_tokenName,
_tokenSymbol,
overrides
);
}
attach(address: string): AToken {
return super.attach(address) as AToken;
}
connect(signer: Signer): ATokenFactory {
return super.connect(signer) as ATokenFactory;
}
static connect(address: string, signerOrProvider: Signer | Provider): AToken {
return new Contract(address, _abi, signerOrProvider) as AToken;
}
}
const _abi = [
{
inputs: [
{
internalType: "contract LendingPool",
name: "_pool",
type: "address"
},
{
internalType: "address",
name: "_underlyingAssetAddress",
type: "address"
},
{
internalType: "string",
name: "_tokenName",
type: "string"
},
{
internalType: "string",
name: "_tokenSymbol",
type: "string"
}
],
stateMutability: "nonpayable",
type: "constructor"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "spender",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256"
}
],
name: "Approval",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_toBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_toIndex",
type: "uint256"
}
],
name: "BalanceTransfer",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "BurnOnLiquidation",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
}
],
name: "InterestRedirectionAllowanceChanged",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalance",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "InterestStreamRedirected",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "MintOnDeposit",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "Redeem",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_targetAddress",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_targetBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_targetIndex",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalanceAdded",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalanceRemoved",
type: "uint256"
}
],
name: "RedirectedBalanceUpdated",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256"
}
],
name: "Transfer",
type: "event"
},
{
inputs: [],
name: "ATOKEN_REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "UINT_MAX_VALUE",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "allowInterestRedirectionTo",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address"
},
{
internalType: "address",
name: "spender",
type: "address"
}
],
name: "allowance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
name: "approve",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_account",
type: "address"
},
{
internalType: "uint256",
name: "_value",
type: "uint256"
}
],
name: "burnOnLiquidation",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "decimals",
outputs: [
{
internalType: "uint8",
name: "",
type: "uint8"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address"
},
{
internalType: "uint256",
name: "subtractedValue",
type: "uint256"
}
],
name: "decreaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getInterestRedirectionAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getRedirectedBalance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserIndex",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address"
},
{
internalType: "uint256",
name: "addedValue",
type: "uint256"
}
],
name: "increaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "uint8",
name: "_underlyingAssetDecimals",
type: "uint8"
},
{
internalType: "string",
name: "_tokenName",
type: "string"
},
{
internalType: "string",
name: "_tokenSymbol",
type: "string"
}
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "isTransferAllowed",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "mintOnDeposit",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "name",
outputs: [
{
internalType: "string",
name: "",
type: "string"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "principalBalanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "redeem",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "redirectInterestStream",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address"
},
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "redirectInterestStreamOf",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "symbol",
outputs: [
{
internalType: "string",
name: "",
type: "string"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "totalSupply",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "recipient",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
name: "transfer",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "sender",
type: "address"
},
{
internalType: "address",
name: "recipient",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
name: "transferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address"
},
{
internalType: "address",
name: "_to",
type: "address"
},
{
internalType: "uint256",
name: "_value",
type: "uint256"
}
],
name: "transferOnLiquidation",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_target",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "transferUnderlyingTo",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "underlyingAssetAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
stateMutability: "payable",
type: "receive"
}
];
const _bytecode =
"0x60c0604052600080553480156200001557600080fd5b506040516200309e3803806200309e833981810160405260808110156200003b57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006757600080fd5b9083019060208201858111156200007d57600080fd5b82516401000000008111828201881017156200009857600080fd5b82525081516020918201929091019080838360005b83811015620000c7578181015183820152602001620000ad565b50505050905090810190601f168015620000f55780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011957600080fd5b9083019060208201858111156200012f57600080fd5b82516401000000008111828201881017156200014a57600080fd5b82525081516020918201929091019080838360005b83811015620001795781810151838201526020016200015f565b50505050905090810190601f168015620001a75780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001c79060379060208501906200020e565b508051620001dd9060389060208401906200020e565b50506039805460ff191660121790555050506001600160601b0319606092831b811660a052911b16608052620002b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025157805160ff191683800117855562000281565b8280016001018555821562000281579182015b828111156200028157825182559160200191906001019062000264565b506200028f92915062000293565b5090565b620002b091905b808211156200028f57600081556001016200029a565b90565b60805160601c60a05160601c612d6762000337600039806109e25280610d005280610e335280610f23528061107e52806110ed52806114c0528061159f52806117195280611c8d5280612116525080610a115280610e9c5280610ee75280611051528061111c52806114ef52806115c65280611cbc52806121455250612d676000f3fe6080604052600436106101bb5760003560e01c80634efecaa5116100ec578063a9059cbb1161008a578063db006a7511610064578063db006a751461077d578063dd62ed3e146107a7578063ee9907a4146107e2578063f866c31914610815576101c5565b8063a9059cbb146106fc578063c634dfaa14610735578063d0fc81d214610768576101c5565b806389d1a0fc116100c657806389d1a0fc1461066057806394362e8b1461067557806395d89b41146106ae578063a457c2d7146106c3576101c5565b80634efecaa5146105bb5780635eae177c146105f457806370a082311461062d576101c5565b806323b872dd11610159578063325a9b1311610133578063325a9b13146104bf57806339509351146104fa5780633edb7cb814610533578063445e80101461056c576101c5565b806323b872dd146103785780633118724e146103bb578063313ce56714610494576101c5565b80630e49072d116101955780630e49072d146102c857806312c87c2d146102fd57806318160ddd146103305780631d51e7cf14610345576101c5565b806306fdde03146101ca578063095ea7b3146102545780630bd7ad3b146102a1576101c5565b366101c557600080fd5b600080fd5b3480156101d657600080fd5b506101df610858565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026057600080fd5b5061028d6004803603604081101561027757600080fd5b506001600160a01b0381351690602001356108ef565b604080519115158252519081900360200190f35b3480156102ad57600080fd5b506102b661090d565b60408051918252519081900360200190f35b3480156102d457600080fd5b506102fb600480360360208110156102eb57600080fd5b50356001600160a01b0316610912565b005b34801561030957600080fd5b506102fb6004803603602081101561032057600080fd5b50356001600160a01b031661091f565b34801561033c57600080fd5b506102b66109be565b34801561035157600080fd5b506102b66004803603602081101561036857600080fd5b50356001600160a01b0316610ac2565b34801561038457600080fd5b5061028d6004803603606081101561039b57600080fd5b506001600160a01b03813581169160208101359091169060400135610ae1565b3480156103c757600080fd5b506102fb600480360360608110156103de57600080fd5b60ff823516919081019060408101602082013564010000000081111561040357600080fd5b82018360208201111561041557600080fd5b8035906020019184600183028401116401000000008311171561043757600080fd5b91939092909160208101903564010000000081111561045557600080fd5b82018360208201111561046757600080fd5b8035906020019184600183028401116401000000008311171561048957600080fd5b509092509050610b6e565b3480156104a057600080fd5b506104a9610c32565b6040805160ff9092168252519081900360200190f35b3480156104cb57600080fd5b506102fb600480360360408110156104e257600080fd5b506001600160a01b0381358116916020013516610c3b565b34801561050657600080fd5b5061028d6004803603604081101561051d57600080fd5b506001600160a01b038135169060200135610ca1565b34801561053f57600080fd5b506102fb6004803603604081101561055657600080fd5b506001600160a01b038135169060200135610cf5565b34801561057857600080fd5b5061059f6004803603602081101561058f57600080fd5b50356001600160a01b0316610e08565b604080516001600160a01b039092168252519081900360200190f35b3480156105c757600080fd5b506102b6600480360360408110156105de57600080fd5b506001600160a01b038135169060200135610e26565b34801561060057600080fd5b5061028d6004803603604081101561061757600080fd5b506001600160a01b038135169060200135610ecf565b34801561063957600080fd5b506102b66004803603602081101561065057600080fd5b50356001600160a01b0316610f9c565b34801561066c57600080fd5b5061059f61104f565b34801561068157600080fd5b506102fb6004803603604081101561069857600080fd5b506001600160a01b038135169060200135611073565b3480156106ba57600080fd5b506101df611250565b3480156106cf57600080fd5b5061028d600480360360408110156106e657600080fd5b506001600160a01b0381351690602001356112b1565b34801561070857600080fd5b5061028d6004803603604081101561071f57600080fd5b506001600160a01b03813516906020013561131f565b34801561074157600080fd5b506102b66004803603602081101561075857600080fd5b50356001600160a01b0316611333565b34801561077457600080fd5b506102b661133e565b34801561078957600080fd5b506102fb600480360360208110156107a057600080fd5b5035611344565b3480156107b357600080fd5b506102b6600480360360408110156107ca57600080fd5b506001600160a01b03813581169160200135166116c8565b3480156107ee57600080fd5b506102b66004803603602081101561080557600080fd5b50356001600160a01b03166116f3565b34801561082157600080fd5b506102fb6004803603606081101561083857600080fd5b506001600160a01b0381358116916020810135909116906040013561170e565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b505050505090505b90565b60006109036108fc611785565b8484611789565b5060015b92915050565b600181565b61091c3382611875565b50565b6001600160a01b0381163314156109675760405162461bcd60e51b8152600401808060200182810382526025815260200180612ad56025913960400191505060405180910390fd5b336000818152603d602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b6000806109c9611a64565b9050806109da5760009150506108ec565b610abc610ab77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610a7657600080fd5b505afa158015610a8a573d6000803e3d6000fd5b505050506040513d6020811015610aa057600080fd5b5051610aab84611a6a565b9063ffffffff611a8016565b611acb565b91505090565b6001600160a01b0381166000908152603c60205260409020545b919050565b6000610aee848484611ae4565b610b6484610afa611785565b610b5f85604051806060016040528060288152602001612b1b602891396001600160a01b038a16600090815260356020526040812090610b38611785565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611b5316565b611789565b5060019392505050565b6000610b78611bea565b60015490915060ff1680610b8f5750610b8f611bef565b80610b9b575060005481115b610bd65760405162461bcd60e51b815260040180806020018281038252602e815260200180612b6d602e913960400191505060405180910390fd5b60015460ff16158015610bf5576001805460ff19168117905560008290555b610c016037878761297d565b50610c0e6038858561297d565b50610c1887611bf5565b8015610c29576001805460ff191690555b50505050505050565b60395460ff1690565b6001600160a01b038281166000908152603d6020526040902054163314610c935760405162461bcd60e51b815260040180806020018281038252603a815260200180612cf8603a913960400191505060405180910390fd5b610c9d8282611875565b5050565b6000610903610cae611785565b84610b5f8560356000610cbf611785565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611c0b16565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d5c5760405162461bcd60e51b8152600401808060200182810382526032815260200180612ca16032913960400191505060405180910390fd5b6000806000610d6a85611c65565b93509350935050610d7c858386611d7a565b610d868585611e7a565b6000610d98848663ffffffff611f8216565b610da857610da586611fc4565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db868584610de05785610de3565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152603b60205260409020541690565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e8f5760405162461bcd60e51b8152600401808060200182810382526032815260200180612ca16032913960400191505060405180910390fd5b610ec96001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848463ffffffff61207616565b50919050565b604080516376e9d61560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015284811660248301526044820184905291516000927f000000000000000000000000000000000000000000000000000000000000000016916376e9d615916064808301926020929190829003018186803b158015610f6957600080fd5b505afa158015610f7d573d6000803e3d6000fd5b505050506040513d6020811015610f9357600080fd5b50519392505050565b600080610fa8836120c8565b6001600160a01b0384166000908152603c602052604090205490915081158015610fd0575080155b15610fe057600092505050610adc565b6001600160a01b038481166000908152603b602052604090205416611031576110288161101c86611017868463ffffffff611c0b16565b6120e3565b9063ffffffff611f8216565b92505050610adc565b6110286110428261101c87856120e3565b839063ffffffff611c0b16565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110da5760405162461bcd60e51b8152600401808060200182810382526032815260200180612ca16032913960400191505060405180910390fd5b60006110e5836121eb565b9250505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d60208110156111ab57600080fd5b50516001600160a01b0385166000908152603a6020526040902081905590506111e5846111de848663ffffffff611c0b16565b6000611d7a565b6111fe846111f9858563ffffffff611c0b16565b61222e565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108e45780601f106108b9576101008083540402835291602001916108e4565b60006109036112be611785565b84610b5f85604051806060016040528060258152602001612cd360259139603560006112e8611785565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611b5316565b600061090361132c611785565b8484611ae4565b6000610907826120c8565b60001981565b60008111611399576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806113a5336121eb565b90935091508390506000198114156113ba5750815b828111156113f95760405162461bcd60e51b8152600401808060200182810382526032815260200180612a5b6032913960400191505060405180910390fd5b6114033382610ecf565b611454576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61145f338383611d7a565b808211156114805761147b336111f9848463ffffffff611f8216565b611499565b61149933611494838563ffffffff611f8216565b611e7a565b60006114ab848363ffffffff611f8216565b6114be576114b833611fc4565b50611595565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561155457600080fd5b505afa158015611568573d6000803e3d6000fd5b505050506040513d602081101561157e57600080fd5b5051336000908152603a6020526040902081905590505b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016639895e3d87f000000000000000000000000000000000000000000000000000000000000000033856115f7898263ffffffff611f8216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b15801561166657600080fd5b505af115801561167a573d6000803e3d6000fd5b5050604080518581526020810187905280820185905290513393507fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a764692509081900360600190a25050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6001600160a01b03166000908152603a602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117755760405162461bcd60e51b8152600401808060200182810382526032815260200180612ca16032913960400191505060405180910390fd5b61178083838361232c565b505050565b3390565b6001600160a01b0383166117ce5760405162461bcd60e51b8152600401808060200182810382526024815260200180612c536024913960400191505060405180910390fd5b6001600160a01b0382166118135760405162461bcd60e51b8152600401808060200182810382526022815260200180612a8d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038083166000908152603b602052604090205481169082168114156118d25760405162461bcd60e51b815260040180806020018281038252602a815260200180612b43602a913960400191505060405180910390fd5b6000806000806118e187611c65565b9350935093509350600083116119285760405162461bcd60e51b8152600401808060200182810382526042815260200180612b9b6042913960600191505060405180910390fd5b6001600160a01b038516156119435761194387600086611d7a565b866001600160a01b0316866001600160a01b031614156119cf576001600160a01b0387166000818152603b6020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a35050505050610c9d565b6001600160a01b038781166000908152603b6020526040812080546001600160a01b03191692891692909217909155611a0b9088908590611d7a565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60365490565b600061090782633b9aca0063ffffffff61247b16565b6000611ac46b033b2e3c9fd0803ce8000000611ab8611aa5868663ffffffff61247b16565b6b019d971e4fe8401e7400000090611c0b565b9063ffffffff6124d416565b9392505050565b6000631dcd6500611ac4633b9aca00611ab88386611c0b565b8281611af08282610ecf565b611b41576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b611b4c85858561232c565b5050505050565b60008184841115611be25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ba7578181015183820152602001611b8f565b50505050905090810190601f168015611bd45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b600082820183811015611ac4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000806000611c79886121eb565b925092509250611c89888261222e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611d2157600080fd5b505afa158015611d35573d6000803e3d6000fd5b505050506040513d6020811015611d4b57600080fd5b50516001600160a01b03999099166000908152603a602052604090208990555091979096919550909350915050565b6001600160a01b038084166000908152603b60205260409020541680611da05750611780565b600080611dac83611c65565b6001600160a01b0387166000908152603c60205260409020549195509350611de2925086915061101c908863ffffffff611c0b16565b6001600160a01b038085166000908152603c6020908152604080832094909455603b90529190912054168015611e1e57611e1e84846000611d7a565b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b038216611ebf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612c0d6021913960400191505060405180910390fd5b611ecb82600083611780565b611f0e81604051806060016040528060228152602001612a39602291396001600160a01b038516600090815260346020526040902054919063ffffffff611b5316565b6001600160a01b038316600090815260346020526040902055603654611f3a908263ffffffff611f8216565b6036556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000611ac483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b53565b6001600160a01b0381166000818152603b6020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b0382166000908152603c602052604090205461206e57506001600160a01b0381166000908152603a60205260408120556001610adc565b506000610adc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611780908490612516565b6001600160a01b031660009081526034602052604090205490565b6000611ac4610ab7603a6000866001600160a01b03166001600160a01b03168152602001908152602001600020546121df7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156121aa57600080fd5b505afa1580156121be573d6000803e3d6000fd5b505050506040513d60208110156121d457600080fd5b5051610aab87611a6a565b9063ffffffff6125c716565b6000806000806121fa85610f9c565b905060008082156122235761220e876120c8565b9050612220838263ffffffff611f8216565b91505b969195509350915050565b6001600160a01b038216612289576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61229560008383611780565b6036546122a8908263ffffffff611c0b16565b6036556001600160a01b0382166000908152603460205260409020546122d4908263ffffffff611c0b16565b6001600160a01b03831660008181526034602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000811161236b5760405162461bcd60e51b8152600401808060200182810382526030815260200180612bdd6030913960400191505060405180910390fd5b600080600061237986611c65565b9350935093505060008061238c87611c65565b93509350505061239d888588611d7a565b6123b1876111de848963ffffffff611c0b16565b6123bc8888886125ff565b60006123ce868863ffffffff611f8216565b1580156123ed5750876001600160a01b0316896001600160a01b031614155b156123fe576123fb89611fc4565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde8898887866124415789612444565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b60008261248a57506000610907565b8282028284828161249757fe5b0414611ac45760405162461bcd60e51b8152600401808060200182810382526021815260200180612afa6021913960400191505060405180910390fd5b6000611ac483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612768565b606061256b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127cd9092919063ffffffff16565b8051909150156117805780806020019051602081101561258a57600080fd5b50516117805760405162461bcd60e51b815260040180806020018281038252602a815260200180612c77602a913960400191505060405180910390fd5b6000600282046125f783611ab86125ea876b033b2e3c9fd0803ce800000061247b565b849063ffffffff611c0b16565b949350505050565b6001600160a01b0383166126445760405162461bcd60e51b8152600401808060200182810382526025815260200180612c2e6025913960400191505060405180910390fd5b6001600160a01b0382166126895760405162461bcd60e51b8152600401808060200182810382526023815260200180612a166023913960400191505060405180910390fd5b612694838383611780565b6126d781604051806060016040528060268152602001612aaf602691396001600160a01b038616600090815260346020526040902054919063ffffffff611b5316565b6001600160a01b03808516600090815260346020526040808220939093559084168152205461270c908263ffffffff611c0b16565b6001600160a01b0380841660008181526034602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081836127b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ba7578181015183820152602001611b8f565b5060008385816127c357fe5b0495945050505050565b60606125f7848460008560606127e285612944565b612833576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106128725780518252601f199092019160209182019101612853565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146128d4576040519150601f19603f3d011682016040523d82523d6000602084013e6128d9565b606091505b509150915081156128ed5791506125f79050565b8051156128fd5780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611ba7578181015183820152602001611b8f565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906125f7575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129be5782800160ff198235161785556129eb565b828001600101855582156129eb579182015b828111156129eb5782358255916020019190600101906129d0565b506129f79291506129fb565b5090565b6108ec91905b808211156129f75760008155600101612a0156fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220258e8c9ec7d12c303bbae0e567d6f58b851271b041b595753e427ecd117c6ce464736f6c63430006080033";