UNPKG

@descent-protocol/sdk

Version:

A Typescript library for interacting with the Descent Protocol

1,020 lines 1.02 MB
{ "abi": [ { "inputs": [ { "internalType": "contract Currency", "name": "_currencyToken", "type": "address" }, { "internalType": "uint256", "name": "_baseRate", "type": "uint256" }, { "internalType": "uint256", "name": "_debtCeiling", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "BadCollateralRatio", "type": "error" }, { "inputs": [], "name": "CollateralAlreadyExists", "type": "error" }, { "inputs": [], "name": "CollateralDebtCeilingExceeded", "type": "error" }, { "inputs": [], "name": "CollateralDoesNotExist", "type": "error" }, { "inputs": [], "name": "CollateralRatioNotImproved", "type": "error" }, { "inputs": [], "name": "EthTransferFailed", "type": "error" }, { "inputs": [], "name": "GlobalDebtCeilingExceeded", "type": "error" }, { "inputs": [], "name": "InsufficientCurrencyAmountToPay", "type": "error" }, { "inputs": [], "name": "InvalidStabilityModule", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NotEnoughCollateralToPay", "type": "error" }, { "inputs": [], "name": "NotFeedContract", "type": "error" }, { "inputs": [], "name": "NotOwnerOrReliedUpon", "type": "error" }, { "inputs": [], "name": "NotPaused", "type": "error" }, { "inputs": [], "name": "Paused", "type": "error" }, { "inputs": [], "name": "PositionIsSafe", "type": "error" }, { "inputs": [], "name": "TotalUserCollateralBelowFloor", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnrecognizedParam", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroCollateral", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CollateralDeposited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "collateralAddress", "type": "address" } ], "name": "CollateralTypeAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CollateralWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CurrencyBurned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CurrencyMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FeesPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "liquidator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "currencyAmountPaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "collateralAmountCovered", "type": "uint256" } ], "name": "Liquidated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "inputs": [], "name": "CURRENCY_TOKEN", "outputs": [ { "internalType": "contract Currency", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseRateInfo", "outputs": [ { "internalType": "uint256", "name": "rate", "type": "uint256" }, { "internalType": "uint256", "name": "accumulatedRate", "type": "uint256" }, { "internalType": "uint256", "name": "lastUpdateTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burnCurrency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "", "type": "address" } ], "name": "collateralMapping", "outputs": [ { "internalType": "uint256", "name": "totalDepositedCollateral", "type": "uint256" }, { "internalType": "uint256", "name": "totalBorrowedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "liquidationThreshold", "type": "uint256" }, { "internalType": "uint256", "name": "liquidationBonus", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "rate", "type": "uint256" }, { "internalType": "uint256", "name": "accumulatedRate", "type": "uint256" }, { "internalType": "uint256", "name": "lastUpdateTime", "type": "uint256" } ], "internalType": "struct IVault.RateInfo", "name": "rateInfo", "type": "tuple" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "debtCeiling", "type": "uint256" }, { "internalType": "uint256", "name": "collateralFloorPerPosition", "type": "uint256" }, { "internalType": "uint256", "name": "additionalCollateralPrecision", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "uint256", "name": "_rate", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidationThreshold", "type": "uint256" }, { "internalType": "uint256", "name": "_liquidationBonus", "type": "uint256" }, { "internalType": "uint256", "name": "_debtCeiling", "type": "uint256" }, { "internalType": "uint256", "name": "_collateralFloorPerPosition", "type": "uint256" } ], "name": "createCollateralType", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "debt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "debtCeiling", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_reliedUpon", "type": "address" } ], "name": "deny", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "depositCollateral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feedModule", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_currencyAmountToPay", "type": "uint256" } ], "name": "liquidate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintCurrency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paidFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rateModule", "outputs": [ { "internalType": "contract IRate", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "recoverToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_relyUpon", "type": "address" } ], "name": "rely", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "relyMapping", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "stabilityModule", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "status", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_baseRate", "type": "uint256" } ], "name": "updateBaseRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "enum IVault.ModifiableParameters", "name": "_param", "type": "uint8" }, { "internalType": "uint256", "name": "_data", "type": "uint256" } ], "name": "updateCollateralData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_debtCeiling", "type": "uint256" } ], "name": "updateDebtCeiling", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_feedModule", "type": "address" } ], "name": "updateFeedModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralAddress", "type": "address" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "updatePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IRate", "name": "_rateModule", "type": "address" } ], "name": "updateRateModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_stabilityModule", "type": "address" } ], "name": "updateStabilityModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "vaultMapping", "outputs": [ { "internalType": "uint256", "name": "depositedCollateral", "type": "uint256" }, { "internalType": "uint256", "name": "borrowedAmount", "type": "uint256" }, { "internalType": "uint256", "name": "accruedFees", "type": "uint256" }, { "internalType": "uint256", "name": "lastTotalAccumulatedRate", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract ERC20Token", "name": "_collateralToken", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawCollateral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": { "object": "0x60a06040523480156200001157600080fd5b50604051620031bc380380620031bc83398101604081905262000034916200009e565b6002600055620000443362000062565b6001600160a01b0390921660805242600655600455600755620000e3565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b600080600060608486031215620000b457600080fd5b83516001600160a01b0381168114620000cc57600080fd5b602085015160409095015190969495509392505050565b60805161308c62000130600039600081816107b801528181610d4201528181611d4c01528181611de30152818161215b015281816122ff015281816124470152612abe015261308c6000f3fe6080604052600436106102855760003560e01c806365fae35e11610153578063d707eed5116100cb578063f04e283e1161007f578063f970c3b711610064578063f970c3b71461082d578063feaea5861461084d578063fee81cf41461086d57600080fd5b8063f04e283e14610807578063f2fde38b1461081a57600080fd5b8063e2c7283f116100b0578063e2c7283f14610739578063e72531c8146107a6578063ea061ad4146107da57600080fd5b8063d707eed514610703578063e1c84ea41461072357600080fd5b80639c52a7f111610122578063aab3f86811610107578063aab3f868146105da578063b80a0a77146105fa578063c665471f1461061057600080fd5b80639c52a7f11461058d578063a12ad552146105ad57600080fd5b806365fae35e1461051c578063715018a61461053c5780638456cb59146105445780638da5cb5b1461055957600080fd5b80633f4ba83a1161020157806354d1f13d116101b55780635820ba631161019a5780635820ba63146104915780635881fc33146104b1578063645ba425146104fc57600080fd5b806354d1f13d1461046957806357b35a781461047157600080fd5b8063476343ee116101e6578063476343ee1461041457806349a66ca3146104295780634fa739191461044957600080fd5b80633f4ba83a146103df578063457972de146103f457600080fd5b806313f60c9a11610258578063256929621161023d5780632569296214610365578063330283aa1461036d578063336d391e1461038d57600080fd5b806313f60c9a14610315578063200d2ed21461034f57600080fd5b80630408ccd61461028a5780630ae5ccab146102ac5780630dca59c1146102cc5780631218c5fd146102f5575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612c22565b6108a0565b005b3480156102b857600080fd5b506102aa6102c7366004612c22565b61092b565b3480156102d857600080fd5b506102e260085481565b6040519081526020015b60405180910390f35b34801561030157600080fd5b506102aa610310366004612c3f565b6109b6565b34801561032157600080fd5b5060045460055460065461033492919083565b604080519384526020840192909252908201526060016102ec565b34801561035b57600080fd5b506102e260005481565b6102aa6109ff565b34801561037957600080fd5b506102aa610388366004612c3f565b610a4f565b34801561039957600080fd5b506003546103ba9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ec565b3480156103eb57600080fd5b506102aa610b36565b34801561040057600080fd5b506102aa61040f366004612c58565b610b45565b34801561042057600080fd5b506102aa610c61565b34801561043557600080fd5b506102aa610444366004612c84565b610db4565b34801561045557600080fd5b506102aa610464366004612cd5565b61111f565b6102aa6111df565b34801561047d57600080fd5b506102aa61048c366004612d16565b61121b565b34801561049d57600080fd5b506102aa6104ac366004612c84565b61142c565b3480156104bd57600080fd5b506104ec6104cc366004612d4a565b600c60209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016102ec565b34801561050857600080fd5b506102aa610517366004612d83565b6115c5565b34801561052857600080fd5b506102aa610537366004612c22565b611786565b6102aa61181e565b34801561055057600080fd5b506102aa611826565b34801561056557600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927546103ba565b34801561059957600080fd5b506102aa6105a8366004612c22565b611835565b3480156105b957600080fd5b506002546103ba9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105e657600080fd5b506102aa6105f5366004612c84565b6118ca565b34801561060657600080fd5b506102e260095481565b34801561061c57600080fd5b506106a161062b366004612c22565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160405180606001604052908160008201548152602001600182015481526020016002820154815250509080600701549080600801549080600901549080600a0154905089565b60408051998a526020808b0199909952898101979097526060890195909552835160808901529583015160a0880152919093015160c086015260e0850192909252610100840191909152610120830191909152610140820152610160016102ec565b34801561070f57600080fd5b506102aa61071e366004612c22565b611b1d565b34801561072f57600080fd5b506102e260075481565b34801561074557600080fd5b50610786610754366004612d4a565b600b60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016102ec565b3480156107b257600080fd5b506103ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107e657600080fd5b506001546103ba9073ffffffffffffffffffffffffffffffffffffffff1681565b6102aa610815366004612c22565b611ba8565b6102aa610828366004612c22565b611be8565b34801561083957600080fd5b506102aa610848366004612cd5565b611c0f565b34801561085957600080fd5b506102aa610868366004612d4a565b611d0e565b34801561087957600080fd5b506102e2610888366004612c22565b63389a75e1600c908152600091909152602090205490565b6001600054036108dc576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108e4612043565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600160005403610967576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61096f612043565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001600054036109f2576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109fa612043565b600755565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b600160005403610a8b576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a93612043565b6003546040517fd14a27fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063d14a27fd90610ae9906004908101612dcf565b602060405180830381865afa158015610b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2a9190612df0565b60055542600655600455565b610b3e612043565b6002600055565b600160005403610b81576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a6020526040812060040154839103610be3576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025473ffffffffffffffffffffffffffffffffffffffff163314610c34576040517f16ee083800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff9091166000908152600a6020526040902060070155565b600160005403610c9d576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1680610ced576040517fd389b01000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009805460009091556040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190612e09565b505050565b600160005403610df0576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040812060040154859103610e52576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff81163314801590610eaa575073ffffffffffffffffffffffffffffffffffffffff81166000908152600c6020908152604080832033845290915290205460ff16155b15610ee1576040517fed76312100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8087166000818152600b60209081526040808320948a168352938152838220928252600a905291909120815460098201541115610f5f576040517f8464610300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075485600854610f709190612e5a565b1115610fa8576040517fdd0b23bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060080154858260010154610fbd9190612e5a565b1115610ff5576040517fa99870f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018201541561100e57611009818361207b565b6110af565b6003546040517fcf5696cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063cf5696cb9061106890600490858201908201612e6d565b602060405180830381865afa158015611085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a99190612df0565b60038301555b8673ffffffffffffffffffffffffffffffffffffffff167f2794e993350ecd3e426a1d6ba9554613ee597988342e95658e5e97a121565852866040516110f791815260200190565b60405180910390a261110b818388886120c2565b61111581836121c9565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020526040812060040154849103611181576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602090815260408083209488168352938152838220928252600a9052919091206111ca818361207b565b6111d78183873388612210565b505050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600160005403611257576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125f612043565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a60205260408120600401548491036112c1576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60205260408120908460048111156112f9576112f9612ea9565b036113ae576003546040517fd14a27fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063d14a27fd906113569060048086019101612dcf565b602060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190612df0565b600582015542600682015560048101839055611425565b60018460048111156113c2576113c2612ea9565b036113d35760088101839055611425565b60028460048111156113e7576113e7612ea9565b036113f85760098101839055611425565b600384600481111561140c5761140c612ea9565b0361141d5760038101839055611425565b600281018390555b5050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081206004015485910361148e576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff811633148015906114e6575073ffffffffffffffffffffffffffffffffffffffff81166000908152600c6020908152604080832033845290915290205460ff16155b1561151d576040517fed76312100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8087166000818152600b60209081526040808320948a168352938152838220928252600a905291909120611566818361207b565b6040805173ffffffffffffffffffffffffffffffffffffffff8881168252602082018890528916917f45892a46e6cef329bb642da6d69846d324db43d19008edc141ed82382eda1bee910160405180910390a261110b888888886124ca565b600160005403611601576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611609612043565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a6020526040902060048101541561166a576040517fbf508dc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480820187905542600683015560028201869055600382018590556008820184905560098201839055604080517f313ce567000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff8a169263313ce567928082019260209290918290030181865afa1580156116fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117219190612ed8565b61172f9060ff166012612efb565b600a82015560405173ffffffffffffffffffffffffffffffffffffffff881681527f8abd6b05a86c62b0ddaec80e50ab0326ee89a599589d4b4126cf8f94ff3d0a879060200160405180910390a150505050505050565b6001600054036117c2576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610285612043565b61182e612043565b6001600055565b600160005403611871576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081206004015485910361192c576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8086166000818152600b602090815260408083209489168352938152838220928252600a905291909120611975818361207b565b6000611981828461257c565b9050816002015481116119c0576040517f819a066c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85036119fe57826002015483600101546119fb9190612e5a565b94505b6000611a0a838761261c565b90506000611a1a6012600a61302e565b611a2590606461303a565b6003850154611a34908461303a565b611a3e9190613051565b90506000611a4c8284612e5a565b8654909150811115611a5c575084545b60408051338152602081018a905290810182905273ffffffffffffffffffffffffffffffffffffffff8b16907f1f0c6615429d1cdae0dfa233abf91d3b31cdbdd82c8081389832a61e1072f1ea9060600160405180910390a2611ac18b8b8b846124ca565b611ace85878c338c612210565b611ad8858761257c565b8411611b10576040517f07af690800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b600160005403611b59576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b61612043565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611bb0612043565b63389a75e1600c52806000526020600c208054421115611bd857636f5e88186000526004601cfd5b60009055611be581612680565b50565b611bf0612043565b8060601b611c0657637448fbae6000526004601cfd5b611be581612680565b600160005403611c4b576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020526040812060040154849103611cad576040517f0d8b6eb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167fd7243f6f8212d5188fd054141cf6ea89cfc0d91facb8c3afe2f88a135848014283604051611cf591815260200190565b60405180910390a2611d088484846126e6565b50505050565b600160005403611d4a576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ed3576009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163a9059cbb9184919084906370a0823190602401602060405180830381865afa158015611e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e599190612df0565b611e639190612efb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015610d8b573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8216611f885760008173ffffffffffffffffffffffffffffffffffffffff164760405160006040518083038185875af1925050503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b5050905080610daf576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152600a6020526040908190205490517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528492610daf9284928692906370a0823190602401602060405180830381865afa15801561200c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120309190612df0565b61203a9190612efb565b6128b1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612079576382b429006000526004601cfd5b565b6000806120888484612900565b91509150808360030181905550816000036120a35750505050565b818360020160008282546120b79190612e5a565b909155505050505050565b808360010160008282546120d69190612e5a565b92505081905550808460010160008282546120f19190612e5a565b92505081905550806008600082825461210a9190612e5a565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015b6020604051808303816000875af11580156121a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114259190612e09565b81600201546121d8838361257c565b111561203f576040517f963c7ede00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600101548111612372578084600101600082825461222f9190612efb565b925050819055508085600101600082825461224a9190612efb565b9250508190555080600860008282546122639190612efb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8416907fcb55e9f35638c4fdb4390d3a385ac1d72a8f72e4dcf0eb1f3c79d144b1023f859060200160405180910390a26040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f00000000000000000000000000000000000000000000000000000000000000001690639dc29fac906044016020604051808303816000875af1158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c9190612e09565b50611425565b600180850180546000918290559187018054839290612392908490612efb565b9250508190555080600860008282546123ab9190612efb565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8516907fcb55e9f35638c4fdb4390d3a385ac1d72a8f72e4dcf0eb1f3c79d144b1023f859060200160405180910390a26040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390527f00000000000000000000000000000000000000000000000000000000000000001690639dc29fac906044016020604051808303816000875af1158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b49190612e09565b506111d78585856124c58587612efb565b6129ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600b602090815260408083209387168352929052908120805483929061250e908490612efb565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604081208054839290612548908490612efb565b909155505073ffffffffffffffffffffffffffffffffffffffff84163b60000361257157600080fd5b611d088483836128b1565b600080826002015483600101546125939190612e5a565b9050806000036125a7576000915050612616565b82546000036125d9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915050612616565b60006125e58585612aed565b90506126116125f66012600a61302e565b61260190606461303a565b61260b908461303a565b82612b46565b925050505b92915050565b600082600a0154600a61262f919061302e565b64e8d4a510008460070154612644919061303a565b61264e919061303a565b61265a6012600a61302e565b61266590600161303a565b61266f908461303a565b6126799190613051565b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015612753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127779190612df0565b905061278584333085612b86565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090829073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128189190612df0565b6128229190612efb565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600b6020908152604080832093891683529290529081208054929350839290919061286b908490612e5a565b909155505073ffffffffffffffffffffffffffffffffffffffff85166000908152600a6020526040812080548392906128a5908490612e5a565b90915550505050505050565b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af13d1560016000511417166128f6576390b8ec186000526004601cfd5b6000603452505050565b6003546040517fcf5696cb0000000000000000000000000000000000000000000000000000000081526000918291829173ffffffffffffffffffffffffffffffffffffffff169063cf5696cb9061295f90600490898201908201612e6d565b602060405180830381865afa15801561297c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a09190612df0565b905060006129b06012600a61302e565b6129bb90606461303a565b600186015460038701546129cf9085612efb565b6129d9919061303a565b6129e39190613051565b96919550909350505050565b80846002016000828254612a039190612efb565b925050819055508060096000828254612a1c9190612e5a565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8416907f6a41f86b2a18fe00e10a9bd078e790ae82c2627a6f940166bddc2db475194a5f9060200160405180910390a26040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401612186565b600080612afc6012600a61302e565b612b0790600161303a565b64e8d4a510008560070154612b20878760000154612be3565b612b2a919061303a565b612b34919061303a565b612b3e9190613051565b949350505050565b600081600003612b5557600080fd5b82600003612b6557506000612616565b81612b71600185612efb565b612b7b9190613051565b612679906001612e5a565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af13d156001600051141716612bd557637939f4246000526004601cfd5b600060605260405250505050565b600082600a0154600a612bf6919061302e565b612679908361303a565b73ffffffffffffffffffffffffffffffffffffffff81168114611be557600080fd5b600060208284031215612c3457600080fd5b813561267981612c00565b600060208284031215612c5157600080fd5b5035919050565b60008060408385031215612c6b57600080fd5b8235612c7681612c00565b946020939093013593505050565b60008060008060808587031215612c9a57600080fd5b8435612ca581612c00565b93506020850135612cb581612c00565b92506040850135612cc581612c00565b9396929550929360600135925050565b600080600060608486031215612cea57600080fd5b8335612cf581612c00565b92506020840135612d0581612c00565b929592945050506040919091013590565b600080600060608486031215612d2b57600080fd5b8335612d3681612c00565b9250602084013560058110612d0557600080fd5b60008060408385031215612d5d57600080fd5b8235612d6881612c00565b91506020830135612d7881612c00565b809150509250929050565b60008060008060008060c08789031215612d9c57600080fd5b8635612da781612c00565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b81548152600182015460208201526002820154604082015260608101612616565b600060208284031215612e0257600080fd5b5051919050565b600060208284031215612e1b57600080fd5b8151801515811461267957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561261657612616612e2b565b82548152600183015460208201526002830154604082015260c081018254606083015260018301546080830152600283015460a0830152612679565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215612eea57600080fd5b815160ff8116811461267957600080fd5b8181038181111561261657612616612e2b565b600181815b80851115612f6757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612f4d57612f4d612e2b565b80851615612f5a57918102915b93841c9390800290612f13565b509250929050565b600082612f7e57506001612616565b81612f8b57506000612616565b8160018114612fa15760028114612fab57612fc7565b6001915050612616565b60ff841115612fbc57612fbc612e2b565b50506001821b612616565b5060208310610133831016604e8410600b8410161715612fea575081810a612616565b612ff48383612f0e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561302657613026612e2b565b029392505050565b60006126798383612f6f565b808202811582820484141761261657612616612e2b565b600082613087577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056", "sourceMap": "506:35048:38:-:0;;;1859:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;203:1:29;280:6;:13;1947:28:38;1964:10;1947:16;:28::i;:::-;-1:-1:-1;;;;;1985:31:38;;;;;2057:15;2027:27;:45;:12;2082:29;2122:11;:26;506:35048;;4883:1190:22;-1:-1:-1;;;;;5793:26:22;-1:-1:-1;;5876:29:22;;;5793:26;6031:1;5991:38;6031:1;;5980:63;4883:1190;:::o;14:430:60:-;120:6;128;136;189:2;177:9;168:7;164:23;160:32;157:52;;;205:1;202;195:12;157:52;231:16;;-1:-1:-1;;;;;276:31:60;;266:42;;256:70;;322:1;319;312:12;256:70;390:2;375:18;;369:25;434:2;419:18;;;413:25;345:5;;369:25;;-1:-1:-1;413:25:60;14:430;-1:-1:-1;;;14:430:60:o;:::-;506:35048:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106102855760003560e01c806365fae35e11610153578063d707eed5116100cb578063f04e283e1161007f578063f970c3b711610064578063f970c3b71461082d578063feaea5861461084d578063fee81cf41461086d57600080fd5b8063f04e283e14610807578063f2fde38b1461081a57600080fd5b8063e2c7283f116100b0578063e2c7283f14610739578063e72531c8146107a6578063ea061ad4146107da57600080fd5b8063d707eed514610703578063e1c84ea41461072357600080fd5b80639c52a7f111610122578063aab3f86811610107578063aab3f868146105da578063b80a0a77146105fa578063c665471f1461061057600080fd5b80639c52a7f11461058d578063a12ad552146105ad57600080fd5b806365fae35e1461051c578063715018a61461053c5780638456cb59146105445780638da5cb5b1461055957600080fd5b80633f4ba83a1161020157806354d1f13d116101b55780635820ba631161019a5780635820ba63146104915780635881fc33146104b1578063645ba425146104fc57600080fd5b806354d1f13d1461046957806357b35a781461047157600080fd5b8063476343ee116101e6578063476343ee1461041457806349a66ca3146104295780634fa739191461044957600080fd5b80633f4ba83a146103df578063457972de146103f457600080fd5b806313f60c9a11610258578063256929621161023d5780632569296214610365578063330283aa1461036d578063336d391e1461038d57600080fd5b806313f60c9a14610315578063200d2ed21461034f57600080fd5b80630408ccd61461028a5780630ae5ccab146102ac5780630dca59c1146102cc5780631218c5fd146102f5575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612c22565b6108a0565b005b3480156102b857600080fd5b506102aa6102c7366004612c22565b61092b565b3480156102d857600080fd5b506102e260085481565b6040519081526020015b60405180910390f35b34801561030157600080fd5b506102aa610310366004612c3f565b6109b6565b34801561032157600080fd5b5060045460055460065461033492919083565b604080519384526020840192909252908201526060016102ec565b34801561035b57600080fd5b506102e260005481565b6102aa6109ff565b34801561037957600080fd5b506102aa610388366004612c3f565b610a4f565b34801561039957600080fd5b506003546103ba9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ec565b3480156103eb57600080fd5b50610