@venusprotocol/venus-protocol 7.0.0 → 7.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +1 -1
  2. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +1 -1
  3. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +1 -1
  4. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +1 -1
  5. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +1 -1
  6. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +1 -1
  7. package/artifacts/@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +1 -1
  8. package/artifacts/@venusprotocol/solidity-utilities/contracts/TimeManagerV8.sol/TimeManagerV8.dbg.json +1 -1
  9. package/artifacts/build-info/{ddb1ade0c64d5161e7d5a6dec1e33868.json → 5158b939f09b056403dc17322b3b5c7a.json} +1 -1
  10. package/artifacts/contracts/Admin/VBNBAdmin.sol/VBNBAdmin.dbg.json +1 -1
  11. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/IProtocolShareReserve.dbg.json +1 -1
  12. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/IWBNB.dbg.json +1 -1
  13. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VBNBAdminStorage.dbg.json +1 -1
  14. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VTokenInterface.dbg.json +1 -1
  15. package/artifacts/contracts/DelegateBorrowers/MoveDebtDelegate.sol/MoveDebtDelegate.dbg.json +1 -1
  16. package/artifacts/contracts/DelegateBorrowers/MoveDebtDelegate.sol/MoveDebtDelegate.json +2 -2
  17. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/SwapDebtDelegate.dbg.json +1 -1
  18. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/SwapDebtDelegate.json +2 -2
  19. package/artifacts/contracts/Governance/TokenRedeemer.sol/TokenRedeemer.dbg.json +4 -0
  20. package/artifacts/contracts/Governance/TokenRedeemer.sol/TokenRedeemer.json +165 -0
  21. package/artifacts/contracts/InterfacesV8.sol/IComptroller.dbg.json +1 -1
  22. package/artifacts/contracts/InterfacesV8.sol/ILiquidator.dbg.json +1 -1
  23. package/artifacts/contracts/InterfacesV8.sol/IVAIController.dbg.json +1 -1
  24. package/artifacts/contracts/InterfacesV8.sol/IVBNB.dbg.json +1 -1
  25. package/artifacts/contracts/InterfacesV8.sol/IVBNB.json +19 -0
  26. package/artifacts/contracts/InterfacesV8.sol/IVBep20.dbg.json +1 -1
  27. package/artifacts/contracts/InterfacesV8.sol/IVBep20.json +19 -0
  28. package/artifacts/contracts/InterfacesV8.sol/IVToken.dbg.json +1 -1
  29. package/artifacts/contracts/InterfacesV8.sol/IVToken.json +19 -0
  30. package/artifacts/contracts/Liquidator/BUSDLiquidator.sol/BUSDLiquidator.dbg.json +1 -1
  31. package/artifacts/contracts/Liquidator/BUSDLiquidator.sol/BUSDLiquidator.json +2 -2
  32. package/artifacts/contracts/Liquidator/Liquidator.sol/Liquidator.dbg.json +1 -1
  33. package/artifacts/contracts/Liquidator/Liquidator.sol/Liquidator.json +2 -2
  34. package/artifacts/contracts/PegStability/IVAI.sol/IVAI.dbg.json +1 -1
  35. package/artifacts/contracts/PegStability/PegStability.sol/PegStability.dbg.json +1 -1
  36. package/artifacts/contracts/Swap/IRouterHelper.sol/IRouterHelper.dbg.json +1 -1
  37. package/artifacts/contracts/Swap/RouterHelper.sol/RouterHelper.dbg.json +1 -1
  38. package/artifacts/contracts/Swap/SwapRouter.sol/SwapRouter.dbg.json +1 -1
  39. package/artifacts/contracts/Swap/interfaces/IPancakePair.sol/IPancakePair.dbg.json +1 -1
  40. package/artifacts/contracts/Swap/interfaces/IPancakeSwapV2Factory.sol/IPancakeSwapV2Factory.dbg.json +1 -1
  41. package/artifacts/contracts/Swap/interfaces/IPancakeSwapV2Router.sol/IPancakeSwapV2Router.dbg.json +1 -1
  42. package/artifacts/contracts/Swap/interfaces/IVBNB.sol/IVBNB.dbg.json +1 -1
  43. package/artifacts/contracts/Swap/interfaces/IVtoken.sol/IVToken.dbg.json +1 -1
  44. package/artifacts/contracts/Swap/interfaces/IWBNB.sol/IWBNB.dbg.json +1 -1
  45. package/artifacts/contracts/Swap/interfaces/InterfaceComptroller.sol/InterfaceComptroller.dbg.json +1 -1
  46. package/artifacts/contracts/Swap/lib/PancakeLibrary.sol/PancakeLibrary.dbg.json +1 -1
  47. package/artifacts/contracts/Swap/lib/TransferHelper.sol/TransferHelper.dbg.json +1 -1
  48. package/artifacts/contracts/Tokens/Prime/Interfaces/IPoolRegistry.sol/PoolRegistryInterface.dbg.json +1 -1
  49. package/artifacts/contracts/Tokens/Prime/Interfaces/IPrime.sol/IPrime.dbg.json +1 -1
  50. package/artifacts/contracts/Tokens/Prime/Interfaces/IPrimeLiquidityProvider.sol/IPrimeLiquidityProvider.dbg.json +1 -1
  51. package/artifacts/contracts/Tokens/Prime/Interfaces/IVToken.sol/IVToken.dbg.json +1 -1
  52. package/artifacts/contracts/Tokens/Prime/Interfaces/IXVSVault.sol/IXVSVault.dbg.json +1 -1
  53. package/artifacts/contracts/Tokens/Prime/Interfaces/InterfaceComptroller.sol/InterfaceComptroller.dbg.json +1 -1
  54. package/artifacts/contracts/Tokens/Prime/Prime.sol/Prime.dbg.json +1 -1
  55. package/artifacts/contracts/Tokens/Prime/PrimeLiquidityProvider.sol/PrimeLiquidityProvider.dbg.json +1 -1
  56. package/artifacts/contracts/Tokens/Prime/PrimeLiquidityProviderStorage.sol/PrimeLiquidityProviderStorageV1.dbg.json +1 -1
  57. package/artifacts/contracts/Tokens/Prime/PrimeStorage.sol/PrimeStorageV1.dbg.json +1 -1
  58. package/artifacts/contracts/Tokens/Prime/libs/FixedMath.sol/FixedMath.dbg.json +1 -1
  59. package/artifacts/contracts/Tokens/Prime/libs/FixedMath0x.sol/FixedMath0x.dbg.json +1 -1
  60. package/artifacts/contracts/Tokens/Prime/libs/Scores.sol/Scores.dbg.json +1 -1
  61. package/artifacts/contracts/test/AccessControlManagerMock.sol/AccessControlManagerMock.dbg.json +1 -1
  62. package/artifacts/contracts/test/LiquidatorHarness.sol/LiquidatorHarness.dbg.json +1 -1
  63. package/artifacts/contracts/test/LiquidatorHarness.sol/LiquidatorHarness.json +2 -2
  64. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IComptroller.dbg.json +1 -1
  65. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IIncomeDestination.dbg.json +1 -1
  66. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IMockProtocolShareReserve.dbg.json +1 -1
  67. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IPoolRegistry.dbg.json +1 -1
  68. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IPrime.dbg.json +1 -1
  69. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IVToken.dbg.json +1 -1
  70. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MaxLoopsLimitHelper.dbg.json +1 -1
  71. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MockProtocolShareReserve.dbg.json +1 -1
  72. package/artifacts/contracts/test/PrimeScenario.sol/PrimeScenario.dbg.json +1 -1
  73. package/contracts/Governance/TokenRedeemer.sol +38 -0
  74. package/contracts/InterfacesV8.sol +2 -0
  75. package/dist/typechain/contracts/Governance/TokenRedeemer.d.ts +158 -0
  76. package/dist/typechain/contracts/Governance/TokenRedeemer.js +3 -0
  77. package/dist/typechain/contracts/Governance/index.d.ts +1 -0
  78. package/dist/typechain/contracts/InterfacesV8.sol/IVBNB.d.ts +17 -1
  79. package/dist/typechain/contracts/InterfacesV8.sol/IVBep20.d.ts +17 -1
  80. package/dist/typechain/contracts/InterfacesV8.sol/IVToken.d.ts +17 -1
  81. package/dist/typechain/factories/contracts/DelegateBorrowers/MoveDebtDelegate__factory.d.ts +1 -1
  82. package/dist/typechain/factories/contracts/DelegateBorrowers/MoveDebtDelegate__factory.js +1 -1
  83. package/dist/typechain/factories/contracts/DelegateBorrowers/SwapDebtDelegate__factory.d.ts +1 -1
  84. package/dist/typechain/factories/contracts/DelegateBorrowers/SwapDebtDelegate__factory.js +1 -1
  85. package/dist/typechain/factories/contracts/Governance/TokenRedeemer__factory.d.ts +141 -0
  86. package/dist/typechain/factories/contracts/Governance/TokenRedeemer__factory.js +194 -0
  87. package/dist/typechain/factories/contracts/Governance/index.d.ts +1 -0
  88. package/dist/typechain/factories/contracts/Governance/index.js +3 -1
  89. package/dist/typechain/factories/contracts/InterfacesV8.sol/IVBNB__factory.d.ts +14 -0
  90. package/dist/typechain/factories/contracts/InterfacesV8.sol/IVBNB__factory.js +19 -0
  91. package/dist/typechain/factories/contracts/InterfacesV8.sol/IVBep20__factory.d.ts +14 -0
  92. package/dist/typechain/factories/contracts/InterfacesV8.sol/IVBep20__factory.js +19 -0
  93. package/dist/typechain/factories/contracts/InterfacesV8.sol/IVToken__factory.d.ts +14 -0
  94. package/dist/typechain/factories/contracts/InterfacesV8.sol/IVToken__factory.js +19 -0
  95. package/dist/typechain/factories/contracts/Liquidator/BUSDLiquidator__factory.d.ts +1 -1
  96. package/dist/typechain/factories/contracts/Liquidator/BUSDLiquidator__factory.js +1 -1
  97. package/dist/typechain/factories/contracts/Liquidator/Liquidator__factory.d.ts +1 -1
  98. package/dist/typechain/factories/contracts/Liquidator/Liquidator__factory.js +1 -1
  99. package/dist/typechain/factories/contracts/test/LiquidatorHarness__factory.d.ts +1 -1
  100. package/dist/typechain/factories/contracts/test/LiquidatorHarness__factory.js +1 -1
  101. package/dist/typechain/index.d.ts +2 -0
  102. package/dist/typechain/index.js +6 -4
  103. package/package.json +1 -1
@@ -696,8 +696,8 @@
696
696
  "type": "function"
697
697
  }
698
698
  ],
699
- "bytecode": "0x6101006040523480156200001257600080fd5b5060405162002052380380620020528339810160408190526200003591620001fb565b8282826200004382620000f9565b6200004e83620000f9565b6200005981620000f9565b6001600160a01b03808316608052831660a081905260408051639254f5e560e01b81529051639254f5e5916004808201926020929091908290030181865afa158015620000aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d091906200024f565b6001600160a01b0390811660c052811660e052620000ed62000124565b50505050505062000276565b6001600160a01b03811662000121576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff1615620001915760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620001e3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200012157600080fd5b6000806000606084860312156200021157600080fd5b83516200021e81620001e5565b60208501519093506200023181620001e5565b60408501519092506200024481620001e5565b809150509250925092565b6000602082840312156200026257600080fd5b81516200026f81620001e5565b9392505050565b60805160a05160c05160e051611d55620002fd60003960008181610253015281816111d401526112710152600081816103660152818161076201528181610e3101528181610ed701528181610f0c0152610f6201526000818161021f015281816112d201526113900152600081816101d30152818161064e01526106d50152611d556000f3fe60806040526004361061012a5760003560e01c80638765adcb116100ab578063b26461de1161006f578063b26461de14610388578063bbd98d70146103b8578063e30c3978146103ed578063f2531ea11461040b578063f2fde38b1461042b578063fe4b84df1461044b57600080fd5b80638765adcb146102d257806389a2bc25146102f25780638da5cb5b146103125780638e3525fc146103305780639254f5e51461035457600080fd5b806361d027b3116100f257806361d027b31461024157806364fd707814610275578063715018a61461028857806379ba50971461029d5780637debe3fe146102b257600080fd5b806311ec4b7a1461012f57806344b3716a1461015157806347a6a971146101a15780635ba3792d146101c15780635fe3b5671461020d575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611a7a565b61046b565b005b34801561015d57600080fd5b5061018c61016c366004611a9e565b60ca60209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ad57600080fd5b5061014f6101bc366004611a9e565b610509565b3480156101cd57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610198565b34801561021957600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561024d57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b61014f610283366004611ad7565b6105c4565b34801561029457600080fd5b5061014f6108b3565b3480156102a957600080fd5b5061014f6108c7565b3480156102be57600080fd5b5061014f6102cd366004611a9e565b610941565b3480156102de57600080fd5b5061014f6102ed366004611a7a565b610a00565b3480156102fe57600080fd5b5061014f61030d366004611b2a565b610a95565b34801561031e57600080fd5b506033546001600160a01b03166101f5565b34801561033c57600080fd5b5061034660c95481565b604051908152602001610198565b34801561036057600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561039457600080fd5b5061018c6103a3366004611a7a565b60cb6020526000908152604090205460ff1681565b3480156103c457600080fd5b506103d86103d3366004611b43565b610ae7565b60408051928352602083019190915201610198565b3480156103f957600080fd5b506065546001600160a01b03166101f5565b34801561041757600080fd5b506103d8610426366004611b2a565b610b3b565b34801561043757600080fd5b5061014f610446366004611a7a565b610b50565b34801561045757600080fd5b5061014f610466366004611b2a565b610bc1565b610473610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16156104bd5760405163404fe9fb60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b038116600081815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610511610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff1661056a5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6105cc610d2e565b6105d583610d87565b6105df8333610dae565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a9190611b6f565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610738573483146106ae5760405163dd97100160e01b8152600481018490523460248201526044016104b4565b604051635572051560e11b81526001600160a01b03858116600483015283811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044016000604051808303818588803b15801561071a57600080fd5b505af115801561072e573d6000803e3d6000fd5b50505050506107b5565b34156107605760405163dd97100160e01b8152600060048201523460248201526044016104b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036107a9576107a4848484610e2d565b6107b5565b6107b585858585610fe3565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190611b6f565b9050600061082e8383611b9e565b905060008061083d868461110f565b604080518a81526001600160a01b038d811660208301529181018490526060810183905292945090925080881691908a169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a450505050506108ad6001609755565b50505050565b6108bb610cd4565b6108c560006112ac565b565b60655433906001600160a01b031681146109355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016104b4565b61093e816112ac565b50565b610949610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16156109a35760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610a08610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16610a4c57604051633bf9d98960e11b81526001600160a01b03821660048201526024016104b4565b6001600160a01b038116600081815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610a9d610cd4565b610aa6816112c5565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b600080610af4848461110f565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b9250929050565b600080610b4783611389565b91509150915091565b610b58610cd4565b606580546001600160a01b0383166001600160a01b03199091168117909155610b896033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600054610100900460ff1615808015610be15750600054600160ff909116105b80610bfb5750303b158015610bfb575060005460ff166001145b610c5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b4565b6000805460ff191660011790558015610c81576000805461ff0019166101001790555b610c8a8261143f565b8015610cd0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146108c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b4565b600260975403610d805760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b4565b6002609755565b6001600160a01b03811661093e576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038216600090815260cb602052604090205460ff168015610dfc57506001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16155b15610cd05760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016104b4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190611bb5565b9050610ec86001600160a01b03821633308661147f565b610efd6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000060006114ea565b610f316001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000856114ea565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303816000875af1158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611bd2565b509050610fdc81611604565b5050505050565b6000846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110479190611bb5565b9050600061105782333087611628565b905061106e6001600160a01b0383168760006114ea565b6110826001600160a01b03831687836114ea565b604051637af1e23160e11b81526001600160a01b038681166004830152602482018390528481166044830152611107919088169063f5e3c462906064016020604051808303816000875af11580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190611b6f565b611604565b505050505050565b60008061111b83611389565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611bf6565b6111bd5760405163241165bb60e21b8152306004820152336024820152604481018290526064016104b4565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190611bf6565b610b345760405163241165bb60e21b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820152604481018390526064016104b4565b6001609755565b606580546001600160a01b031916905561093e81611731565b6000670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113529190611b6f565b61135c9190611b9e565b905080821115610cd057604051635659cb3b60e01b815260048101829052602481018390526044016104b4565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190611b6f565b90508060c954856114219190611c18565b61142b9190611c37565b92506114378385611b9e565b915050915091565b600054610100900460ff166114665760405162461bcd60e51b81526004016104b490611c59565b61146e611783565b6114766117b2565b61093e816117e1565b6040516001600160a01b03808516602483015283166044820152606481018290526108ad9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611816565b8015806115645750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190611b6f565b155b6115cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016104b4565b6040516001600160a01b0383166024820152604481018290526115ff90849063095ea7b360e01b906064016114b3565b505050565b8061160c5750565b60405163125a96ab60e01b8152600481018290526024016104b4565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182918716906370a0823190602401602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190611b6f565b90506116ae6001600160a01b03871686868661147f565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190611b6f565b6117259190611b9e565b9150505b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166117aa5760405162461bcd60e51b81526004016104b490611c59565b6108c56118eb565b600054610100900460ff166117d95760405162461bcd60e51b81526004016104b490611c59565b6108c561191b565b600054610100900460ff166118085760405162461bcd60e51b81526004016104b490611c59565b611811816112c5565b60c955565b600061186b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119429092919063ffffffff16565b905080516000148061188c57508080602001905181019061188c9190611bf6565b6115ff5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104b4565b600054610100900460ff166119125760405162461bcd60e51b81526004016104b490611c59565b6108c5336112ac565b600054610100900460ff166112a55760405162461bcd60e51b81526004016104b490611c59565b6060611729848460008585600080866001600160a01b031685876040516119699190611cd0565b60006040518083038185875af1925050503d80600081146119a6576040519150601f19603f3d011682016040523d82523d6000602084013e6119ab565b606091505b50915091506119bc878383876119c7565b979650505050505050565b60608315611a36578251600003611a2f576001600160a01b0385163b611a2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b4565b5081611729565b6117298383815115611a4b5781518083602001fd5b8060405162461bcd60e51b81526004016104b49190611cec565b6001600160a01b038116811461093e57600080fd5b600060208284031215611a8c57600080fd5b8135611a9781611a65565b9392505050565b60008060408385031215611ab157600080fd5b8235611abc81611a65565b91506020830135611acc81611a65565b809150509250929050565b60008060008060808587031215611aed57600080fd5b8435611af881611a65565b93506020850135611b0881611a65565b9250604085013591506060850135611b1f81611a65565b939692955090935050565b600060208284031215611b3c57600080fd5b5035919050565b60008060408385031215611b5657600080fd5b8235611b6181611a65565b946020939093013593505050565b600060208284031215611b8157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611bb057611bb0611b88565b500390565b600060208284031215611bc757600080fd5b8151611a9781611a65565b60008060408385031215611be557600080fd5b505080516020909101519092909150565b600060208284031215611c0857600080fd5b81518015158114611a9757600080fd5b6000816000190483118215151615611c3257611c32611b88565b500290565b600082611c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611cbf578181015183820152602001611ca7565b838111156108ad5750506000910152565b60008251611ce2818460208701611ca4565b9190910192915050565b6020815260008251806020840152611d0b816040850160208701611ca4565b601f01601f1916919091016040019291505056fea2646970667358221220c2bf8fb23d37dda77ed8af95341d8eca024645e388818bbb0180f3c111874d1b64736f6c634300080d0033",
700
- "deployedBytecode": "0x60806040526004361061012a5760003560e01c80638765adcb116100ab578063b26461de1161006f578063b26461de14610388578063bbd98d70146103b8578063e30c3978146103ed578063f2531ea11461040b578063f2fde38b1461042b578063fe4b84df1461044b57600080fd5b80638765adcb146102d257806389a2bc25146102f25780638da5cb5b146103125780638e3525fc146103305780639254f5e51461035457600080fd5b806361d027b3116100f257806361d027b31461024157806364fd707814610275578063715018a61461028857806379ba50971461029d5780637debe3fe146102b257600080fd5b806311ec4b7a1461012f57806344b3716a1461015157806347a6a971146101a15780635ba3792d146101c15780635fe3b5671461020d575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611a7a565b61046b565b005b34801561015d57600080fd5b5061018c61016c366004611a9e565b60ca60209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ad57600080fd5b5061014f6101bc366004611a9e565b610509565b3480156101cd57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610198565b34801561021957600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561024d57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b61014f610283366004611ad7565b6105c4565b34801561029457600080fd5b5061014f6108b3565b3480156102a957600080fd5b5061014f6108c7565b3480156102be57600080fd5b5061014f6102cd366004611a9e565b610941565b3480156102de57600080fd5b5061014f6102ed366004611a7a565b610a00565b3480156102fe57600080fd5b5061014f61030d366004611b2a565b610a95565b34801561031e57600080fd5b506033546001600160a01b03166101f5565b34801561033c57600080fd5b5061034660c95481565b604051908152602001610198565b34801561036057600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561039457600080fd5b5061018c6103a3366004611a7a565b60cb6020526000908152604090205460ff1681565b3480156103c457600080fd5b506103d86103d3366004611b43565b610ae7565b60408051928352602083019190915201610198565b3480156103f957600080fd5b506065546001600160a01b03166101f5565b34801561041757600080fd5b506103d8610426366004611b2a565b610b3b565b34801561043757600080fd5b5061014f610446366004611a7a565b610b50565b34801561045757600080fd5b5061014f610466366004611b2a565b610bc1565b610473610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16156104bd5760405163404fe9fb60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b038116600081815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610511610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff1661056a5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6105cc610d2e565b6105d583610d87565b6105df8333610dae565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a9190611b6f565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610738573483146106ae5760405163dd97100160e01b8152600481018490523460248201526044016104b4565b604051635572051560e11b81526001600160a01b03858116600483015283811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044016000604051808303818588803b15801561071a57600080fd5b505af115801561072e573d6000803e3d6000fd5b50505050506107b5565b34156107605760405163dd97100160e01b8152600060048201523460248201526044016104b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036107a9576107a4848484610e2d565b6107b5565b6107b585858585610fe3565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190611b6f565b9050600061082e8383611b9e565b905060008061083d868461110f565b604080518a81526001600160a01b038d811660208301529181018490526060810183905292945090925080881691908a169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a450505050506108ad6001609755565b50505050565b6108bb610cd4565b6108c560006112ac565b565b60655433906001600160a01b031681146109355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016104b4565b61093e816112ac565b50565b610949610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16156109a35760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610a08610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16610a4c57604051633bf9d98960e11b81526001600160a01b03821660048201526024016104b4565b6001600160a01b038116600081815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610a9d610cd4565b610aa6816112c5565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b600080610af4848461110f565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b9250929050565b600080610b4783611389565b91509150915091565b610b58610cd4565b606580546001600160a01b0383166001600160a01b03199091168117909155610b896033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600054610100900460ff1615808015610be15750600054600160ff909116105b80610bfb5750303b158015610bfb575060005460ff166001145b610c5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b4565b6000805460ff191660011790558015610c81576000805461ff0019166101001790555b610c8a8261143f565b8015610cd0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146108c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b4565b600260975403610d805760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b4565b6002609755565b6001600160a01b03811661093e576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038216600090815260cb602052604090205460ff168015610dfc57506001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16155b15610cd05760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016104b4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190611bb5565b9050610ec86001600160a01b03821633308661147f565b610efd6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000060006114ea565b610f316001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000856114ea565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303816000875af1158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611bd2565b509050610fdc81611604565b5050505050565b6000846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110479190611bb5565b9050600061105782333087611628565b905061106e6001600160a01b0383168760006114ea565b6110826001600160a01b03831687836114ea565b604051637af1e23160e11b81526001600160a01b038681166004830152602482018390528481166044830152611107919088169063f5e3c462906064016020604051808303816000875af11580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190611b6f565b611604565b505050505050565b60008061111b83611389565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611bf6565b6111bd5760405163241165bb60e21b8152306004820152336024820152604481018290526064016104b4565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190611bf6565b610b345760405163241165bb60e21b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820152604481018390526064016104b4565b6001609755565b606580546001600160a01b031916905561093e81611731565b6000670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113529190611b6f565b61135c9190611b9e565b905080821115610cd057604051635659cb3b60e01b815260048101829052602481018390526044016104b4565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190611b6f565b90508060c954856114219190611c18565b61142b9190611c37565b92506114378385611b9e565b915050915091565b600054610100900460ff166114665760405162461bcd60e51b81526004016104b490611c59565b61146e611783565b6114766117b2565b61093e816117e1565b6040516001600160a01b03808516602483015283166044820152606481018290526108ad9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611816565b8015806115645750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190611b6f565b155b6115cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016104b4565b6040516001600160a01b0383166024820152604481018290526115ff90849063095ea7b360e01b906064016114b3565b505050565b8061160c5750565b60405163125a96ab60e01b8152600481018290526024016104b4565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182918716906370a0823190602401602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190611b6f565b90506116ae6001600160a01b03871686868661147f565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190611b6f565b6117259190611b9e565b9150505b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166117aa5760405162461bcd60e51b81526004016104b490611c59565b6108c56118eb565b600054610100900460ff166117d95760405162461bcd60e51b81526004016104b490611c59565b6108c561191b565b600054610100900460ff166118085760405162461bcd60e51b81526004016104b490611c59565b611811816112c5565b60c955565b600061186b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119429092919063ffffffff16565b905080516000148061188c57508080602001905181019061188c9190611bf6565b6115ff5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104b4565b600054610100900460ff166119125760405162461bcd60e51b81526004016104b490611c59565b6108c5336112ac565b600054610100900460ff166112a55760405162461bcd60e51b81526004016104b490611c59565b6060611729848460008585600080866001600160a01b031685876040516119699190611cd0565b60006040518083038185875af1925050503d80600081146119a6576040519150601f19603f3d011682016040523d82523d6000602084013e6119ab565b606091505b50915091506119bc878383876119c7565b979650505050505050565b60608315611a36578251600003611a2f576001600160a01b0385163b611a2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b4565b5081611729565b6117298383815115611a4b5781518083602001fd5b8060405162461bcd60e51b81526004016104b49190611cec565b6001600160a01b038116811461093e57600080fd5b600060208284031215611a8c57600080fd5b8135611a9781611a65565b9392505050565b60008060408385031215611ab157600080fd5b8235611abc81611a65565b91506020830135611acc81611a65565b809150509250929050565b60008060008060808587031215611aed57600080fd5b8435611af881611a65565b93506020850135611b0881611a65565b9250604085013591506060850135611b1f81611a65565b939692955090935050565b600060208284031215611b3c57600080fd5b5035919050565b60008060408385031215611b5657600080fd5b8235611b6181611a65565b946020939093013593505050565b600060208284031215611b8157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611bb057611bb0611b88565b500390565b600060208284031215611bc757600080fd5b8151611a9781611a65565b60008060408385031215611be557600080fd5b505080516020909101519092909150565b600060208284031215611c0857600080fd5b81518015158114611a9757600080fd5b6000816000190483118215151615611c3257611c32611b88565b500290565b600082611c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611cbf578181015183820152602001611ca7565b838111156108ad5750506000910152565b60008251611ce2818460208701611ca4565b9190910192915050565b6020815260008251806020840152611d0b816040850160208701611ca4565b601f01601f1916919091016040019291505056fea2646970667358221220c2bf8fb23d37dda77ed8af95341d8eca024645e388818bbb0180f3c111874d1b64736f6c634300080d0033",
699
+ "bytecode": "0x6101006040523480156200001257600080fd5b5060405162002052380380620020528339810160408190526200003591620001fb565b8282826200004382620000f9565b6200004e83620000f9565b6200005981620000f9565b6001600160a01b03808316608052831660a081905260408051639254f5e560e01b81529051639254f5e5916004808201926020929091908290030181865afa158015620000aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d091906200024f565b6001600160a01b0390811660c052811660e052620000ed62000124565b50505050505062000276565b6001600160a01b03811662000121576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff1615620001915760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620001e3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200012157600080fd5b6000806000606084860312156200021157600080fd5b83516200021e81620001e5565b60208501519093506200023181620001e5565b60408501519092506200024481620001e5565b809150509250925092565b6000602082840312156200026257600080fd5b81516200026f81620001e5565b9392505050565b60805160a05160c05160e051611d55620002fd60003960008181610253015281816111d401526112710152600081816103660152818161076201528181610e3101528181610ed701528181610f0c0152610f6201526000818161021f015281816112d201526113900152600081816101d30152818161064e01526106d50152611d556000f3fe60806040526004361061012a5760003560e01c80638765adcb116100ab578063b26461de1161006f578063b26461de14610388578063bbd98d70146103b8578063e30c3978146103ed578063f2531ea11461040b578063f2fde38b1461042b578063fe4b84df1461044b57600080fd5b80638765adcb146102d257806389a2bc25146102f25780638da5cb5b146103125780638e3525fc146103305780639254f5e51461035457600080fd5b806361d027b3116100f257806361d027b31461024157806364fd707814610275578063715018a61461028857806379ba50971461029d5780637debe3fe146102b257600080fd5b806311ec4b7a1461012f57806344b3716a1461015157806347a6a971146101a15780635ba3792d146101c15780635fe3b5671461020d575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611a7a565b61046b565b005b34801561015d57600080fd5b5061018c61016c366004611a9e565b60ca60209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ad57600080fd5b5061014f6101bc366004611a9e565b610509565b3480156101cd57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610198565b34801561021957600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561024d57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b61014f610283366004611ad7565b6105c4565b34801561029457600080fd5b5061014f6108b3565b3480156102a957600080fd5b5061014f6108c7565b3480156102be57600080fd5b5061014f6102cd366004611a9e565b610941565b3480156102de57600080fd5b5061014f6102ed366004611a7a565b610a00565b3480156102fe57600080fd5b5061014f61030d366004611b2a565b610a95565b34801561031e57600080fd5b506033546001600160a01b03166101f5565b34801561033c57600080fd5b5061034660c95481565b604051908152602001610198565b34801561036057600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561039457600080fd5b5061018c6103a3366004611a7a565b60cb6020526000908152604090205460ff1681565b3480156103c457600080fd5b506103d86103d3366004611b43565b610ae7565b60408051928352602083019190915201610198565b3480156103f957600080fd5b506065546001600160a01b03166101f5565b34801561041757600080fd5b506103d8610426366004611b2a565b610b3b565b34801561043757600080fd5b5061014f610446366004611a7a565b610b50565b34801561045757600080fd5b5061014f610466366004611b2a565b610bc1565b610473610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16156104bd5760405163404fe9fb60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b038116600081815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610511610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff1661056a5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6105cc610d2e565b6105d583610d87565b6105df8333610dae565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a9190611b6f565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610738573483146106ae5760405163dd97100160e01b8152600481018490523460248201526044016104b4565b604051635572051560e11b81526001600160a01b03858116600483015283811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044016000604051808303818588803b15801561071a57600080fd5b505af115801561072e573d6000803e3d6000fd5b50505050506107b5565b34156107605760405163dd97100160e01b8152600060048201523460248201526044016104b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036107a9576107a4848484610e2d565b6107b5565b6107b585858585610fe3565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190611b6f565b9050600061082e8383611b9e565b905060008061083d868461110f565b604080518a81526001600160a01b038d811660208301529181018490526060810183905292945090925080881691908a169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a450505050506108ad6001609755565b50505050565b6108bb610cd4565b6108c560006112ac565b565b60655433906001600160a01b031681146109355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016104b4565b61093e816112ac565b50565b610949610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16156109a35760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610a08610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16610a4c57604051633bf9d98960e11b81526001600160a01b03821660048201526024016104b4565b6001600160a01b038116600081815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610a9d610cd4565b610aa6816112c5565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b600080610af4848461110f565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b9250929050565b600080610b4783611389565b91509150915091565b610b58610cd4565b606580546001600160a01b0383166001600160a01b03199091168117909155610b896033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600054610100900460ff1615808015610be15750600054600160ff909116105b80610bfb5750303b158015610bfb575060005460ff166001145b610c5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b4565b6000805460ff191660011790558015610c81576000805461ff0019166101001790555b610c8a8261143f565b8015610cd0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146108c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b4565b600260975403610d805760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b4565b6002609755565b6001600160a01b03811661093e576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038216600090815260cb602052604090205460ff168015610dfc57506001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16155b15610cd05760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016104b4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190611bb5565b9050610ec86001600160a01b03821633308661147f565b610efd6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000060006114ea565b610f316001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000856114ea565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303816000875af1158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611bd2565b509050610fdc81611604565b5050505050565b6000846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110479190611bb5565b9050600061105782333087611628565b905061106e6001600160a01b0383168760006114ea565b6110826001600160a01b03831687836114ea565b604051637af1e23160e11b81526001600160a01b038681166004830152602482018390528481166044830152611107919088169063f5e3c462906064016020604051808303816000875af11580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190611b6f565b611604565b505050505050565b60008061111b83611389565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611bf6565b6111bd5760405163241165bb60e21b8152306004820152336024820152604481018290526064016104b4565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190611bf6565b610b345760405163241165bb60e21b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820152604481018390526064016104b4565b6001609755565b606580546001600160a01b031916905561093e81611731565b6000670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113529190611b6f565b61135c9190611b9e565b905080821115610cd057604051635659cb3b60e01b815260048101829052602481018390526044016104b4565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190611b6f565b90508060c954856114219190611c18565b61142b9190611c37565b92506114378385611b9e565b915050915091565b600054610100900460ff166114665760405162461bcd60e51b81526004016104b490611c59565b61146e611783565b6114766117b2565b61093e816117e1565b6040516001600160a01b03808516602483015283166044820152606481018290526108ad9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611816565b8015806115645750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190611b6f565b155b6115cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016104b4565b6040516001600160a01b0383166024820152604481018290526115ff90849063095ea7b360e01b906064016114b3565b505050565b8061160c5750565b60405163125a96ab60e01b8152600481018290526024016104b4565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182918716906370a0823190602401602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190611b6f565b90506116ae6001600160a01b03871686868661147f565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190611b6f565b6117259190611b9e565b9150505b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166117aa5760405162461bcd60e51b81526004016104b490611c59565b6108c56118eb565b600054610100900460ff166117d95760405162461bcd60e51b81526004016104b490611c59565b6108c561191b565b600054610100900460ff166118085760405162461bcd60e51b81526004016104b490611c59565b611811816112c5565b60c955565b600061186b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119429092919063ffffffff16565b905080516000148061188c57508080602001905181019061188c9190611bf6565b6115ff5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104b4565b600054610100900460ff166119125760405162461bcd60e51b81526004016104b490611c59565b6108c5336112ac565b600054610100900460ff166112a55760405162461bcd60e51b81526004016104b490611c59565b6060611729848460008585600080866001600160a01b031685876040516119699190611cd0565b60006040518083038185875af1925050503d80600081146119a6576040519150601f19603f3d011682016040523d82523d6000602084013e6119ab565b606091505b50915091506119bc878383876119c7565b979650505050505050565b60608315611a36578251600003611a2f576001600160a01b0385163b611a2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b4565b5081611729565b6117298383815115611a4b5781518083602001fd5b8060405162461bcd60e51b81526004016104b49190611cec565b6001600160a01b038116811461093e57600080fd5b600060208284031215611a8c57600080fd5b8135611a9781611a65565b9392505050565b60008060408385031215611ab157600080fd5b8235611abc81611a65565b91506020830135611acc81611a65565b809150509250929050565b60008060008060808587031215611aed57600080fd5b8435611af881611a65565b93506020850135611b0881611a65565b9250604085013591506060850135611b1f81611a65565b939692955090935050565b600060208284031215611b3c57600080fd5b5035919050565b60008060408385031215611b5657600080fd5b8235611b6181611a65565b946020939093013593505050565b600060208284031215611b8157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611bb057611bb0611b88565b500390565b600060208284031215611bc757600080fd5b8151611a9781611a65565b60008060408385031215611be557600080fd5b505080516020909101519092909150565b600060208284031215611c0857600080fd5b81518015158114611a9757600080fd5b6000816000190483118215151615611c3257611c32611b88565b500290565b600082611c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611cbf578181015183820152602001611ca7565b838111156108ad5750506000910152565b60008251611ce2818460208701611ca4565b9190910192915050565b6020815260008251806020840152611d0b816040850160208701611ca4565b601f01601f1916919091016040019291505056fea2646970667358221220c7f08ec557d9be6ef17ed10f285ae1ea8d95dc16d7d97cba6007e481bac3133b64736f6c634300080d0033",
700
+ "deployedBytecode": "0x60806040526004361061012a5760003560e01c80638765adcb116100ab578063b26461de1161006f578063b26461de14610388578063bbd98d70146103b8578063e30c3978146103ed578063f2531ea11461040b578063f2fde38b1461042b578063fe4b84df1461044b57600080fd5b80638765adcb146102d257806389a2bc25146102f25780638da5cb5b146103125780638e3525fc146103305780639254f5e51461035457600080fd5b806361d027b3116100f257806361d027b31461024157806364fd707814610275578063715018a61461028857806379ba50971461029d5780637debe3fe146102b257600080fd5b806311ec4b7a1461012f57806344b3716a1461015157806347a6a971146101a15780635ba3792d146101c15780635fe3b5671461020d575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611a7a565b61046b565b005b34801561015d57600080fd5b5061018c61016c366004611a9e565b60ca60209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ad57600080fd5b5061014f6101bc366004611a9e565b610509565b3480156101cd57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610198565b34801561021957600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561024d57600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b61014f610283366004611ad7565b6105c4565b34801561029457600080fd5b5061014f6108b3565b3480156102a957600080fd5b5061014f6108c7565b3480156102be57600080fd5b5061014f6102cd366004611a9e565b610941565b3480156102de57600080fd5b5061014f6102ed366004611a7a565b610a00565b3480156102fe57600080fd5b5061014f61030d366004611b2a565b610a95565b34801561031e57600080fd5b506033546001600160a01b03166101f5565b34801561033c57600080fd5b5061034660c95481565b604051908152602001610198565b34801561036057600080fd5b506101f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561039457600080fd5b5061018c6103a3366004611a7a565b60cb6020526000908152604090205460ff1681565b3480156103c457600080fd5b506103d86103d3366004611b43565b610ae7565b60408051928352602083019190915201610198565b3480156103f957600080fd5b506065546001600160a01b03166101f5565b34801561041757600080fd5b506103d8610426366004611b2a565b610b3b565b34801561043757600080fd5b5061014f610446366004611a7a565b610b50565b34801561045757600080fd5b5061014f610466366004611b2a565b610bc1565b610473610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16156104bd5760405163404fe9fb60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b038116600081815260cb6020526040808220805460ff19166001179055517f614c47c82976e8f145409efb6366fe2cefa323f389ed9354649262e38dbb35899190a250565b610511610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff1661056a5760405163435aad4360e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19169055517f6b0d38eafddac0d37e0aff8f4bbd5f3a3cfe124b8eabea27558bffc931ac05b59190a35050565b6105cc610d2e565b6105d583610d87565b6105df8333610dae565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a9190611b6f565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610738573483146106ae5760405163dd97100160e01b8152600481018490523460248201526044016104b4565b604051635572051560e11b81526001600160a01b03858116600483015283811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063aae40a2a9034906044016000604051808303818588803b15801561071a57600080fd5b505af115801561072e573d6000803e3d6000fd5b50505050506107b5565b34156107605760405163dd97100160e01b8152600060048201523460248201526044016104b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036107a9576107a4848484610e2d565b6107b5565b6107b585858585610fe3565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108209190611b6f565b9050600061082e8383611b9e565b905060008061083d868461110f565b604080518a81526001600160a01b038d811660208301529181018490526060810183905292945090925080881691908a169033907fdd091524d794aecdb5235b2d816620c2598790835e0f3849808504c2dcb4f1a99060800160405180910390a450505050506108ad6001609755565b50505050565b6108bb610cd4565b6108c560006112ac565b565b60655433906001600160a01b031681146109355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016104b4565b61093e816112ac565b50565b610949610cd4565b6001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16156109a35760405163071df39160e01b81526001600160a01b038084166004830152821660248201526044016104b4565b6001600160a01b03808316600081815260ca6020908152604080832094861680845294909152808220805460ff19166001179055517ffe40417b78788808c927141f806ef5082e7bba0f7790f2e85b811621a91094339190a35050565b610a08610cd4565b6001600160a01b038116600090815260cb602052604090205460ff16610a4c57604051633bf9d98960e11b81526001600160a01b03821660048201526024016104b4565b6001600160a01b038116600081815260cb6020526040808220805460ff19169055517fe1f03de94d16c262d2f0e89a1c42ede8899d540ac992cf53495a5cf29c2896af9190a250565b610a9d610cd4565b610aa6816112c5565b60c95460408051918252602082018390527f0e9a1641744b21c49e4183ab9ce941d420e05a05a446c71875fb07814f362c1a910160405180910390a160c955565b600080610af4848461110f565b60408051838152602081018390529294509092507f965c73d6a816dcbe4cc33516168787cb029afb2156ec3372a16e8c6cfbbe6e22910160405180910390a15b9250929050565b600080610b4783611389565b91509150915091565b610b58610cd4565b606580546001600160a01b0383166001600160a01b03199091168117909155610b896033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600054610100900460ff1615808015610be15750600054600160ff909116105b80610bfb5750303b158015610bfb575060005460ff166001145b610c5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b4565b6000805460ff191660011790558015610c81576000805461ff0019166101001790555b610c8a8261143f565b8015610cd0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146108c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b4565b600260975403610d805760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b4565b6002609755565b6001600160a01b03811661093e576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038216600090815260cb602052604090205460ff168015610dfc57506001600160a01b03808316600090815260ca602090815260408083209385168352929052205460ff16155b15610cd05760405163074c80eb60e51b81526001600160a01b038084166004830152821660248201526044016104b4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cbeb2b286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb19190611bb5565b9050610ec86001600160a01b03821633308661147f565b610efd6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000060006114ea565b610f316001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000856114ea565b6040516311b3d5e760e01b81526001600160a01b0385811660048301526024820185905283811660448301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906311b3d5e79060640160408051808303816000875af1158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190611bd2565b509050610fdc81611604565b5050505050565b6000846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110479190611bb5565b9050600061105782333087611628565b905061106e6001600160a01b0383168760006114ea565b6110826001600160a01b03831687836114ea565b604051637af1e23160e11b81526001600160a01b038681166004830152602482018390528481166044830152611107919088169063f5e3c462906064016020604051808303816000875af11580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190611b6f565b611604565b505050505050565b60008061111b83611389565b60405163a9059cbb60e01b81523360048201526024810182905291935091506001600160a01b0385169063a9059cbb906044016020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611bf6565b6111bd5760405163241165bb60e21b8152306004820152336024820152604481018290526064016104b4565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190611bf6565b610b345760405163241165bb60e21b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024820152604481018390526064016104b4565b6001609755565b606580546001600160a01b031916905561093e81611731565b6000670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113529190611b6f565b61135c9190611b9e565b905080821115610cd057604051635659cb3b60e01b815260048101829052602481018390526044016104b4565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190611b6f565b90508060c954856114219190611c18565b61142b9190611c37565b92506114378385611b9e565b915050915091565b600054610100900460ff166114665760405162461bcd60e51b81526004016104b490611c59565b61146e611783565b6114766117b2565b61093e816117e1565b6040516001600160a01b03808516602483015283166044820152606481018290526108ad9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611816565b8015806115645750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190611b6f565b155b6115cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016104b4565b6040516001600160a01b0383166024820152604481018290526115ff90849063095ea7b360e01b906064016114b3565b505050565b8061160c5750565b60405163125a96ab60e01b8152600481018290526024016104b4565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182918716906370a0823190602401602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190611b6f565b90506116ae6001600160a01b03871686868661147f565b6040516370a0823160e01b81526001600160a01b0385811660048301528291908816906370a0823190602401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190611b6f565b6117259190611b9e565b9150505b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166117aa5760405162461bcd60e51b81526004016104b490611c59565b6108c56118eb565b600054610100900460ff166117d95760405162461bcd60e51b81526004016104b490611c59565b6108c561191b565b600054610100900460ff166118085760405162461bcd60e51b81526004016104b490611c59565b611811816112c5565b60c955565b600061186b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119429092919063ffffffff16565b905080516000148061188c57508080602001905181019061188c9190611bf6565b6115ff5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104b4565b600054610100900460ff166119125760405162461bcd60e51b81526004016104b490611c59565b6108c5336112ac565b600054610100900460ff166112a55760405162461bcd60e51b81526004016104b490611c59565b6060611729848460008585600080866001600160a01b031685876040516119699190611cd0565b60006040518083038185875af1925050503d80600081146119a6576040519150601f19603f3d011682016040523d82523d6000602084013e6119ab565b606091505b50915091506119bc878383876119c7565b979650505050505050565b60608315611a36578251600003611a2f576001600160a01b0385163b611a2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b4565b5081611729565b6117298383815115611a4b5781518083602001fd5b8060405162461bcd60e51b81526004016104b49190611cec565b6001600160a01b038116811461093e57600080fd5b600060208284031215611a8c57600080fd5b8135611a9781611a65565b9392505050565b60008060408385031215611ab157600080fd5b8235611abc81611a65565b91506020830135611acc81611a65565b809150509250929050565b60008060008060808587031215611aed57600080fd5b8435611af881611a65565b93506020850135611b0881611a65565b9250604085013591506060850135611b1f81611a65565b939692955090935050565b600060208284031215611b3c57600080fd5b5035919050565b60008060408385031215611b5657600080fd5b8235611b6181611a65565b946020939093013593505050565b600060208284031215611b8157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611bb057611bb0611b88565b500390565b600060208284031215611bc757600080fd5b8151611a9781611a65565b60008060408385031215611be557600080fd5b505080516020909101519092909150565b600060208284031215611c0857600080fd5b81518015158114611a9757600080fd5b6000816000190483118215151615611c3257611c32611b88565b500290565b600082611c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611cbf578181015183820152602001611ca7565b838111156108ad5750506000910152565b60008251611ce2818460208701611ca4565b9190910192915050565b6020815260008251806020840152611d0b816040850160208701611ca4565b601f01601f1916919091016040019291505056fea2646970667358221220c7f08ec557d9be6ef17ed10f285ae1ea8d95dc16d7d97cba6007e481bac3133b64736f6c634300080d0033",
701
701
  "linkReferences": {},
702
702
  "deployedLinkReferences": {}
703
703
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ddb1ade0c64d5161e7d5a6dec1e33868.json"
3
+ "buildInfo": "../../../build-info/5158b939f09b056403dc17322b3b5c7a.json"
4
4
  }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ pragma solidity 0.8.13;
3
+
4
+ import { ReentrancyGuard } from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
5
+ import { Ownable2Step } from "@openzeppelin/contracts/access/Ownable2Step.sol";
6
+ import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
7
+ import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+ import { ensureNonzeroAddress } from "@venusprotocol/solidity-utilities/contracts/validators.sol";
9
+
10
+ import { IVBep20 } from "../InterfacesV8.sol";
11
+
12
+ contract TokenRedeemer is ReentrancyGuard, Ownable2Step {
13
+ using SafeERC20 for IERC20;
14
+
15
+ error RedeemFailed(uint256 errCode);
16
+
17
+ constructor(address owner_) {
18
+ ensureNonzeroAddress(owner_);
19
+ _transferOwnership(owner_);
20
+ }
21
+
22
+ function redeemAndTransfer(IVBep20 vToken, address destination) external nonReentrant onlyOwner {
23
+ IERC20 underlying = IERC20(vToken.underlying());
24
+ uint256 err = vToken.redeem(vToken.balanceOf(address(this)));
25
+ if (err != 0) {
26
+ revert RedeemFailed(err);
27
+ }
28
+ _transferAll(underlying, destination);
29
+ }
30
+
31
+ function sweepTokens(IERC20 token, address destination) external onlyOwner {
32
+ _transferAll(token, destination);
33
+ }
34
+
35
+ function _transferAll(IERC20 token, address destination) internal {
36
+ token.safeTransfer(destination, token.balanceOf(address(this)));
37
+ }
38
+ }
@@ -5,6 +5,8 @@ import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC
5
5
  import { ResilientOracleInterface } from "@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol";
6
6
 
7
7
  interface IVToken is IERC20Upgradeable {
8
+ function redeem(uint256 redeemTokens) external returns (uint256);
9
+
8
10
  function borrowBalanceCurrent(address borrower) external returns (uint256);
9
11
 
10
12
  function comptroller() external view returns (IComptroller);
@@ -0,0 +1,158 @@
1
+ import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../common";
2
+ import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
3
+ import type { Listener, Provider } from "@ethersproject/providers";
4
+ import type { BaseContract, BigNumber, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
5
+ export interface TokenRedeemerInterface extends utils.Interface {
6
+ functions: {
7
+ "acceptOwnership()": FunctionFragment;
8
+ "owner()": FunctionFragment;
9
+ "pendingOwner()": FunctionFragment;
10
+ "redeemAndTransfer(address,address)": FunctionFragment;
11
+ "renounceOwnership()": FunctionFragment;
12
+ "sweepTokens(address,address)": FunctionFragment;
13
+ "transferOwnership(address)": FunctionFragment;
14
+ };
15
+ getFunction(nameOrSignatureOrTopic: "acceptOwnership" | "owner" | "pendingOwner" | "redeemAndTransfer" | "renounceOwnership" | "sweepTokens" | "transferOwnership"): FunctionFragment;
16
+ encodeFunctionData(functionFragment: "acceptOwnership", values?: undefined): string;
17
+ encodeFunctionData(functionFragment: "owner", values?: undefined): string;
18
+ encodeFunctionData(functionFragment: "pendingOwner", values?: undefined): string;
19
+ encodeFunctionData(functionFragment: "redeemAndTransfer", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
20
+ encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
21
+ encodeFunctionData(functionFragment: "sweepTokens", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
22
+ encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
23
+ decodeFunctionResult(functionFragment: "acceptOwnership", data: BytesLike): Result;
24
+ decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
25
+ decodeFunctionResult(functionFragment: "pendingOwner", data: BytesLike): Result;
26
+ decodeFunctionResult(functionFragment: "redeemAndTransfer", data: BytesLike): Result;
27
+ decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
28
+ decodeFunctionResult(functionFragment: "sweepTokens", data: BytesLike): Result;
29
+ decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
30
+ events: {
31
+ "OwnershipTransferStarted(address,address)": EventFragment;
32
+ "OwnershipTransferred(address,address)": EventFragment;
33
+ };
34
+ getEvent(nameOrSignatureOrTopic: "OwnershipTransferStarted"): EventFragment;
35
+ getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
36
+ }
37
+ export interface OwnershipTransferStartedEventObject {
38
+ previousOwner: string;
39
+ newOwner: string;
40
+ }
41
+ export type OwnershipTransferStartedEvent = TypedEvent<[
42
+ string,
43
+ string
44
+ ], OwnershipTransferStartedEventObject>;
45
+ export type OwnershipTransferStartedEventFilter = TypedEventFilter<OwnershipTransferStartedEvent>;
46
+ export interface OwnershipTransferredEventObject {
47
+ previousOwner: string;
48
+ newOwner: string;
49
+ }
50
+ export type OwnershipTransferredEvent = TypedEvent<[
51
+ string,
52
+ string
53
+ ], OwnershipTransferredEventObject>;
54
+ export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
55
+ export interface TokenRedeemer extends BaseContract {
56
+ connect(signerOrProvider: Signer | Provider | string): this;
57
+ attach(addressOrName: string): this;
58
+ deployed(): Promise<this>;
59
+ interface: TokenRedeemerInterface;
60
+ queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
61
+ listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
62
+ listeners(eventName?: string): Array<Listener>;
63
+ removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
64
+ removeAllListeners(eventName?: string): this;
65
+ off: OnEvent<this>;
66
+ on: OnEvent<this>;
67
+ once: OnEvent<this>;
68
+ removeListener: OnEvent<this>;
69
+ functions: {
70
+ acceptOwnership(overrides?: Overrides & {
71
+ from?: PromiseOrValue<string>;
72
+ }): Promise<ContractTransaction>;
73
+ owner(overrides?: CallOverrides): Promise<[string]>;
74
+ pendingOwner(overrides?: CallOverrides): Promise<[string]>;
75
+ redeemAndTransfer(vToken: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
76
+ from?: PromiseOrValue<string>;
77
+ }): Promise<ContractTransaction>;
78
+ renounceOwnership(overrides?: Overrides & {
79
+ from?: PromiseOrValue<string>;
80
+ }): Promise<ContractTransaction>;
81
+ sweepTokens(token: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
82
+ from?: PromiseOrValue<string>;
83
+ }): Promise<ContractTransaction>;
84
+ transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
85
+ from?: PromiseOrValue<string>;
86
+ }): Promise<ContractTransaction>;
87
+ };
88
+ acceptOwnership(overrides?: Overrides & {
89
+ from?: PromiseOrValue<string>;
90
+ }): Promise<ContractTransaction>;
91
+ owner(overrides?: CallOverrides): Promise<string>;
92
+ pendingOwner(overrides?: CallOverrides): Promise<string>;
93
+ redeemAndTransfer(vToken: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
94
+ from?: PromiseOrValue<string>;
95
+ }): Promise<ContractTransaction>;
96
+ renounceOwnership(overrides?: Overrides & {
97
+ from?: PromiseOrValue<string>;
98
+ }): Promise<ContractTransaction>;
99
+ sweepTokens(token: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
100
+ from?: PromiseOrValue<string>;
101
+ }): Promise<ContractTransaction>;
102
+ transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
103
+ from?: PromiseOrValue<string>;
104
+ }): Promise<ContractTransaction>;
105
+ callStatic: {
106
+ acceptOwnership(overrides?: CallOverrides): Promise<void>;
107
+ owner(overrides?: CallOverrides): Promise<string>;
108
+ pendingOwner(overrides?: CallOverrides): Promise<string>;
109
+ redeemAndTransfer(vToken: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
110
+ renounceOwnership(overrides?: CallOverrides): Promise<void>;
111
+ sweepTokens(token: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
112
+ transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
113
+ };
114
+ filters: {
115
+ "OwnershipTransferStarted(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferStartedEventFilter;
116
+ OwnershipTransferStarted(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferStartedEventFilter;
117
+ "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
118
+ OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
119
+ };
120
+ estimateGas: {
121
+ acceptOwnership(overrides?: Overrides & {
122
+ from?: PromiseOrValue<string>;
123
+ }): Promise<BigNumber>;
124
+ owner(overrides?: CallOverrides): Promise<BigNumber>;
125
+ pendingOwner(overrides?: CallOverrides): Promise<BigNumber>;
126
+ redeemAndTransfer(vToken: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
127
+ from?: PromiseOrValue<string>;
128
+ }): Promise<BigNumber>;
129
+ renounceOwnership(overrides?: Overrides & {
130
+ from?: PromiseOrValue<string>;
131
+ }): Promise<BigNumber>;
132
+ sweepTokens(token: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
133
+ from?: PromiseOrValue<string>;
134
+ }): Promise<BigNumber>;
135
+ transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
136
+ from?: PromiseOrValue<string>;
137
+ }): Promise<BigNumber>;
138
+ };
139
+ populateTransaction: {
140
+ acceptOwnership(overrides?: Overrides & {
141
+ from?: PromiseOrValue<string>;
142
+ }): Promise<PopulatedTransaction>;
143
+ owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
144
+ pendingOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
145
+ redeemAndTransfer(vToken: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
146
+ from?: PromiseOrValue<string>;
147
+ }): Promise<PopulatedTransaction>;
148
+ renounceOwnership(overrides?: Overrides & {
149
+ from?: PromiseOrValue<string>;
150
+ }): Promise<PopulatedTransaction>;
151
+ sweepTokens(token: PromiseOrValue<string>, destination: PromiseOrValue<string>, overrides?: Overrides & {
152
+ from?: PromiseOrValue<string>;
153
+ }): Promise<PopulatedTransaction>;
154
+ transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
155
+ from?: PromiseOrValue<string>;
156
+ }): Promise<PopulatedTransaction>;
157
+ };
158
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ /* Autogenerated file. Do not edit manually. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,2 +1,3 @@
1
+ export type { TokenRedeemer } from "./TokenRedeemer";
1
2
  export type { VTreasury } from "./VTreasury";
2
3
  export type { VTreasuryV8 } from "./VTreasuryV8";
@@ -10,17 +10,19 @@ export interface IVBNBInterface extends utils.Interface {
10
10
  "borrowBalanceCurrent(address)": FunctionFragment;
11
11
  "comptroller()": FunctionFragment;
12
12
  "liquidateBorrow(address,address)": FunctionFragment;
13
+ "redeem(uint256)": FunctionFragment;
13
14
  "totalSupply()": FunctionFragment;
14
15
  "transfer(address,uint256)": FunctionFragment;
15
16
  "transferFrom(address,address,uint256)": FunctionFragment;
16
17
  };
17
- getFunction(nameOrSignatureOrTopic: "allowance" | "approve" | "balanceOf" | "borrowBalanceCurrent" | "comptroller" | "liquidateBorrow" | "totalSupply" | "transfer" | "transferFrom"): FunctionFragment;
18
+ getFunction(nameOrSignatureOrTopic: "allowance" | "approve" | "balanceOf" | "borrowBalanceCurrent" | "comptroller" | "liquidateBorrow" | "redeem" | "totalSupply" | "transfer" | "transferFrom"): FunctionFragment;
18
19
  encodeFunctionData(functionFragment: "allowance", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
19
20
  encodeFunctionData(functionFragment: "approve", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
20
21
  encodeFunctionData(functionFragment: "balanceOf", values: [PromiseOrValue<string>]): string;
21
22
  encodeFunctionData(functionFragment: "borrowBalanceCurrent", values: [PromiseOrValue<string>]): string;
22
23
  encodeFunctionData(functionFragment: "comptroller", values?: undefined): string;
23
24
  encodeFunctionData(functionFragment: "liquidateBorrow", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
25
+ encodeFunctionData(functionFragment: "redeem", values: [PromiseOrValue<BigNumberish>]): string;
24
26
  encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string;
25
27
  encodeFunctionData(functionFragment: "transfer", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
26
28
  encodeFunctionData(functionFragment: "transferFrom", values: [
@@ -34,6 +36,7 @@ export interface IVBNBInterface extends utils.Interface {
34
36
  decodeFunctionResult(functionFragment: "borrowBalanceCurrent", data: BytesLike): Result;
35
37
  decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
36
38
  decodeFunctionResult(functionFragment: "liquidateBorrow", data: BytesLike): Result;
39
+ decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result;
37
40
  decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result;
38
41
  decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result;
39
42
  decodeFunctionResult(functionFragment: "transferFrom", data: BytesLike): Result;
@@ -93,6 +96,9 @@ export interface IVBNB extends BaseContract {
93
96
  liquidateBorrow(borrower: PromiseOrValue<string>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
94
97
  from?: PromiseOrValue<string>;
95
98
  }): Promise<ContractTransaction>;
99
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
100
+ from?: PromiseOrValue<string>;
101
+ }): Promise<ContractTransaction>;
96
102
  totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
97
103
  transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
98
104
  from?: PromiseOrValue<string>;
@@ -113,6 +119,9 @@ export interface IVBNB extends BaseContract {
113
119
  liquidateBorrow(borrower: PromiseOrValue<string>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
114
120
  from?: PromiseOrValue<string>;
115
121
  }): Promise<ContractTransaction>;
122
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
123
+ from?: PromiseOrValue<string>;
124
+ }): Promise<ContractTransaction>;
116
125
  totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
117
126
  transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
118
127
  from?: PromiseOrValue<string>;
@@ -127,6 +136,7 @@ export interface IVBNB extends BaseContract {
127
136
  borrowBalanceCurrent(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
128
137
  comptroller(overrides?: CallOverrides): Promise<string>;
129
138
  liquidateBorrow(borrower: PromiseOrValue<string>, vTokenCollateral: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
139
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
130
140
  totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
131
141
  transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
132
142
  transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
@@ -150,6 +160,9 @@ export interface IVBNB extends BaseContract {
150
160
  liquidateBorrow(borrower: PromiseOrValue<string>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
151
161
  from?: PromiseOrValue<string>;
152
162
  }): Promise<BigNumber>;
163
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
164
+ from?: PromiseOrValue<string>;
165
+ }): Promise<BigNumber>;
153
166
  totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
154
167
  transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
155
168
  from?: PromiseOrValue<string>;
@@ -171,6 +184,9 @@ export interface IVBNB extends BaseContract {
171
184
  liquidateBorrow(borrower: PromiseOrValue<string>, vTokenCollateral: PromiseOrValue<string>, overrides?: PayableOverrides & {
172
185
  from?: PromiseOrValue<string>;
173
186
  }): Promise<PopulatedTransaction>;
187
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
188
+ from?: PromiseOrValue<string>;
189
+ }): Promise<PopulatedTransaction>;
174
190
  totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
175
191
  transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
176
192
  from?: PromiseOrValue<string>;
@@ -11,13 +11,14 @@ export interface IVBep20Interface extends utils.Interface {
11
11
  "borrowBehalf(address,uint256)": FunctionFragment;
12
12
  "comptroller()": FunctionFragment;
13
13
  "liquidateBorrow(address,uint256,address)": FunctionFragment;
14
+ "redeem(uint256)": FunctionFragment;
14
15
  "repayBorrowBehalf(address,uint256)": FunctionFragment;
15
16
  "totalSupply()": FunctionFragment;
16
17
  "transfer(address,uint256)": FunctionFragment;
17
18
  "transferFrom(address,address,uint256)": FunctionFragment;
18
19
  "underlying()": FunctionFragment;
19
20
  };
20
- getFunction(nameOrSignatureOrTopic: "allowance" | "approve" | "balanceOf" | "borrowBalanceCurrent" | "borrowBehalf" | "comptroller" | "liquidateBorrow" | "repayBorrowBehalf" | "totalSupply" | "transfer" | "transferFrom" | "underlying"): FunctionFragment;
21
+ getFunction(nameOrSignatureOrTopic: "allowance" | "approve" | "balanceOf" | "borrowBalanceCurrent" | "borrowBehalf" | "comptroller" | "liquidateBorrow" | "redeem" | "repayBorrowBehalf" | "totalSupply" | "transfer" | "transferFrom" | "underlying"): FunctionFragment;
21
22
  encodeFunctionData(functionFragment: "allowance", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
22
23
  encodeFunctionData(functionFragment: "approve", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
23
24
  encodeFunctionData(functionFragment: "balanceOf", values: [PromiseOrValue<string>]): string;
@@ -29,6 +30,7 @@ export interface IVBep20Interface extends utils.Interface {
29
30
  PromiseOrValue<BigNumberish>,
30
31
  PromiseOrValue<string>
31
32
  ]): string;
33
+ encodeFunctionData(functionFragment: "redeem", values: [PromiseOrValue<BigNumberish>]): string;
32
34
  encodeFunctionData(functionFragment: "repayBorrowBehalf", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
33
35
  encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string;
34
36
  encodeFunctionData(functionFragment: "transfer", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
@@ -45,6 +47,7 @@ export interface IVBep20Interface extends utils.Interface {
45
47
  decodeFunctionResult(functionFragment: "borrowBehalf", data: BytesLike): Result;
46
48
  decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
47
49
  decodeFunctionResult(functionFragment: "liquidateBorrow", data: BytesLike): Result;
50
+ decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result;
48
51
  decodeFunctionResult(functionFragment: "repayBorrowBehalf", data: BytesLike): Result;
49
52
  decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result;
50
53
  decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result;
@@ -109,6 +112,9 @@ export interface IVBep20 extends BaseContract {
109
112
  liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
110
113
  from?: PromiseOrValue<string>;
111
114
  }): Promise<ContractTransaction>;
115
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
116
+ from?: PromiseOrValue<string>;
117
+ }): Promise<ContractTransaction>;
112
118
  repayBorrowBehalf(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
113
119
  from?: PromiseOrValue<string>;
114
120
  }): Promise<ContractTransaction>;
@@ -136,6 +142,9 @@ export interface IVBep20 extends BaseContract {
136
142
  liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
137
143
  from?: PromiseOrValue<string>;
138
144
  }): Promise<ContractTransaction>;
145
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
146
+ from?: PromiseOrValue<string>;
147
+ }): Promise<ContractTransaction>;
139
148
  repayBorrowBehalf(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
140
149
  from?: PromiseOrValue<string>;
141
150
  }): Promise<ContractTransaction>;
@@ -155,6 +164,7 @@ export interface IVBep20 extends BaseContract {
155
164
  borrowBehalf(borrower: PromiseOrValue<string>, borrowAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
156
165
  comptroller(overrides?: CallOverrides): Promise<string>;
157
166
  liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
167
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
158
168
  repayBorrowBehalf(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
159
169
  totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
160
170
  transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
@@ -183,6 +193,9 @@ export interface IVBep20 extends BaseContract {
183
193
  liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
184
194
  from?: PromiseOrValue<string>;
185
195
  }): Promise<BigNumber>;
196
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
197
+ from?: PromiseOrValue<string>;
198
+ }): Promise<BigNumber>;
186
199
  repayBorrowBehalf(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
187
200
  from?: PromiseOrValue<string>;
188
201
  }): Promise<BigNumber>;
@@ -211,6 +224,9 @@ export interface IVBep20 extends BaseContract {
211
224
  liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, vTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
212
225
  from?: PromiseOrValue<string>;
213
226
  }): Promise<PopulatedTransaction>;
227
+ redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
228
+ from?: PromiseOrValue<string>;
229
+ }): Promise<PopulatedTransaction>;
214
230
  repayBorrowBehalf(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
215
231
  from?: PromiseOrValue<string>;
216
232
  }): Promise<PopulatedTransaction>;