@venusprotocol/isolated-pools 1.0.0-dev.1 → 1.0.0-dev.11

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 (265) hide show
  1. package/README.md +1 -11
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  5. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  67. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  75. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  76. package/artifacts/build-info/5d0b3e7c7d317c28bfc8eca20c31f64e.json +1 -0
  77. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  79. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  81. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  85. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  87. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  89. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  91. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  92. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  93. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  94. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  95. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  96. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  97. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  98. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  99. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  100. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  101. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  102. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  103. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +689 -0
  104. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  105. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  106. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  107. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  108. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  109. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  110. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  111. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  112. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  113. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  114. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  115. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  116. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  117. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +596 -0
  118. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  119. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  120. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  121. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +761 -0
  122. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  123. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  124. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  125. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  126. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  127. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  128. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  129. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  130. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  131. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  132. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  133. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  134. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  135. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  136. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  137. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  138. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  139. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  140. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  141. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  142. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  144. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  145. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  146. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  147. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  148. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  149. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  150. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  151. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  152. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  153. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  154. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  155. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  156. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  157. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  158. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  159. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  160. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  161. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  162. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  163. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  164. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  165. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  166. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  167. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  168. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  182. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  183. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  184. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  185. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  186. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  187. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  188. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  189. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  190. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  191. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  192. package/contracts/BaseJumpRateModelV2.sol +4 -3
  193. package/contracts/Comptroller.sol +40 -15
  194. package/contracts/ComptrollerInterface.sol +10 -0
  195. package/contracts/ComptrollerStorage.sol +5 -0
  196. package/contracts/ErrorReporter.sol +5 -0
  197. package/contracts/ExponentialNoError.sol +0 -7
  198. package/contracts/Lens/PoolLens.sol +13 -0
  199. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  200. package/contracts/Pool/PoolRegistry.sol +58 -206
  201. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  202. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  203. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  204. package/contracts/RiskFund/IRiskFund.sol +5 -0
  205. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  206. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  207. package/contracts/RiskFund/RiskFund.sol +5 -5
  208. package/contracts/Shortfall/IShortfall.sol +5 -0
  209. package/contracts/Shortfall/Shortfall.sol +33 -22
  210. package/contracts/VToken.sol +31 -9
  211. package/contracts/VTokenInterfaces.sol +10 -0
  212. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  213. package/contracts/lib/imports.sol +11 -0
  214. package/contracts/test/MockDeflationaryToken.sol +113 -0
  215. package/dist/deploy/001-deploy-mock-tokens.d.ts +3 -0
  216. package/dist/deploy/001-deploy-mock-tokens.js +23 -0
  217. package/dist/deploy/002-price-oracle.d.ts +2 -0
  218. package/dist/deploy/002-price-oracle.js +9 -0
  219. package/dist/deploy/003-price-oracle-configure-feeds.d.ts +2 -0
  220. package/dist/deploy/003-price-oracle-configure-feeds.js +9 -0
  221. package/{deploy/004-swap-router.ts → dist/deploy/004-swap-router.d.ts} +0 -3
  222. package/dist/deploy/004-swap-router.js +8 -0
  223. package/dist/deploy/005-access-control.d.ts +3 -0
  224. package/dist/deploy/005-access-control.js +16 -0
  225. package/dist/deploy/006-deploy-factories.d.ts +3 -0
  226. package/dist/deploy/006-deploy-factories.js +37 -0
  227. package/dist/deploy/007-access-control-configure.d.ts +3 -0
  228. package/dist/deploy/007-access-control-configure.js +69 -0
  229. package/dist/deploy/008-deploy-pool-lens.d.ts +3 -0
  230. package/dist/deploy/008-deploy-pool-lens.js +15 -0
  231. package/dist/deploy/009-deploy-pools.d.ts +3 -0
  232. package/dist/deploy/009-deploy-pools.js +186 -0
  233. package/dist/deploy/010-rewards.d.ts +3 -0
  234. package/dist/deploy/010-rewards.js +76 -0
  235. package/dist/deploy/011-transfer-pools-ownership.d.ts +3 -0
  236. package/dist/deploy/011-transfer-pools-ownership.js +75 -0
  237. package/dist/deploy/012-riskfund-protocolshare.d.ts +3 -0
  238. package/dist/deploy/012-riskfund-protocolshare.js +139 -0
  239. package/dist/deploy/013-transfer-funds-ownership.d.ts +3 -0
  240. package/dist/deploy/013-transfer-funds-ownership.js +46 -0
  241. package/dist/hardhat.config.d.ts +14 -0
  242. package/dist/hardhat.config.js +237 -0
  243. package/dist/helpers/deploymentConfig.d.ts +59 -0
  244. package/dist/helpers/deploymentConfig.js +836 -0
  245. package/dist/helpers/utils.d.ts +3 -0
  246. package/dist/helpers/utils.js +28 -0
  247. package/package.json +3 -11
  248. package/contracts/Factories/JumpRateModelFactory.sol +0 -26
  249. package/contracts/Factories/VTokenProxyFactory.sol +0 -53
  250. package/contracts/Factories/WhitePaperInterestRateModelFactory.sol +0 -12
  251. package/contracts/Proxy/UpgradeableBeacon.sol +0 -10
  252. package/deploy/001-deploy-mock-tokens.ts +0 -29
  253. package/deploy/002-price-oracle.ts +0 -7
  254. package/deploy/003-price-oracle-configure-feeds.ts +0 -7
  255. package/deploy/005-access-control.ts +0 -20
  256. package/deploy/006-deploy-factories.ts +0 -82
  257. package/deploy/007-access-control-configure.ts +0 -142
  258. package/deploy/008-deploy-pool-lens.ts +0 -19
  259. package/deploy/009-deploy-pools.ts +0 -171
  260. package/deploy/010-rewards.ts +0 -84
  261. package/deploy/011-transfer-pools-ownership.ts +0 -93
  262. package/deploy/012-riskfund-protocolshare.ts +0 -140
  263. package/deploy/013-transfer-funds-ownership.ts +0 -63
  264. package/helpers/deploymentConfig.ts +0 -897
  265. package/helpers/utils.ts +0 -24
@@ -0,0 +1,1087 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PoolLens",
4
+ "sourceName": "contracts/Lens/PoolLens.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "poolRegistryAddress",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "getAllPools",
15
+ "outputs": [
16
+ {
17
+ "components": [
18
+ {
19
+ "internalType": "string",
20
+ "name": "name",
21
+ "type": "string"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "creator",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "address",
30
+ "name": "comptroller",
31
+ "type": "address"
32
+ },
33
+ {
34
+ "internalType": "uint256",
35
+ "name": "blockPosted",
36
+ "type": "uint256"
37
+ },
38
+ {
39
+ "internalType": "uint256",
40
+ "name": "timestampPosted",
41
+ "type": "uint256"
42
+ },
43
+ {
44
+ "internalType": "string",
45
+ "name": "category",
46
+ "type": "string"
47
+ },
48
+ {
49
+ "internalType": "string",
50
+ "name": "logoURL",
51
+ "type": "string"
52
+ },
53
+ {
54
+ "internalType": "string",
55
+ "name": "description",
56
+ "type": "string"
57
+ },
58
+ {
59
+ "internalType": "address",
60
+ "name": "priceOracle",
61
+ "type": "address"
62
+ },
63
+ {
64
+ "internalType": "uint256",
65
+ "name": "closeFactor",
66
+ "type": "uint256"
67
+ },
68
+ {
69
+ "internalType": "uint256",
70
+ "name": "liquidationIncentive",
71
+ "type": "uint256"
72
+ },
73
+ {
74
+ "internalType": "uint256",
75
+ "name": "minLiquidatableCollateral",
76
+ "type": "uint256"
77
+ },
78
+ {
79
+ "components": [
80
+ {
81
+ "internalType": "address",
82
+ "name": "vToken",
83
+ "type": "address"
84
+ },
85
+ {
86
+ "internalType": "uint256",
87
+ "name": "exchangeRateCurrent",
88
+ "type": "uint256"
89
+ },
90
+ {
91
+ "internalType": "uint256",
92
+ "name": "supplyRatePerBlock",
93
+ "type": "uint256"
94
+ },
95
+ {
96
+ "internalType": "uint256",
97
+ "name": "borrowRatePerBlock",
98
+ "type": "uint256"
99
+ },
100
+ {
101
+ "internalType": "uint256",
102
+ "name": "reserveFactorMantissa",
103
+ "type": "uint256"
104
+ },
105
+ {
106
+ "internalType": "uint256",
107
+ "name": "supplyCaps",
108
+ "type": "uint256"
109
+ },
110
+ {
111
+ "internalType": "uint256",
112
+ "name": "borrowCaps",
113
+ "type": "uint256"
114
+ },
115
+ {
116
+ "internalType": "uint256",
117
+ "name": "totalBorrows",
118
+ "type": "uint256"
119
+ },
120
+ {
121
+ "internalType": "uint256",
122
+ "name": "totalReserves",
123
+ "type": "uint256"
124
+ },
125
+ {
126
+ "internalType": "uint256",
127
+ "name": "totalSupply",
128
+ "type": "uint256"
129
+ },
130
+ {
131
+ "internalType": "uint256",
132
+ "name": "totalCash",
133
+ "type": "uint256"
134
+ },
135
+ {
136
+ "internalType": "bool",
137
+ "name": "isListed",
138
+ "type": "bool"
139
+ },
140
+ {
141
+ "internalType": "uint256",
142
+ "name": "collateralFactorMantissa",
143
+ "type": "uint256"
144
+ },
145
+ {
146
+ "internalType": "address",
147
+ "name": "underlyingAssetAddress",
148
+ "type": "address"
149
+ },
150
+ {
151
+ "internalType": "uint256",
152
+ "name": "vTokenDecimals",
153
+ "type": "uint256"
154
+ },
155
+ {
156
+ "internalType": "uint256",
157
+ "name": "underlyingDecimals",
158
+ "type": "uint256"
159
+ }
160
+ ],
161
+ "internalType": "struct PoolLens.VTokenMetadata[]",
162
+ "name": "vTokens",
163
+ "type": "tuple[]"
164
+ }
165
+ ],
166
+ "internalType": "struct PoolLens.PoolData[]",
167
+ "name": "",
168
+ "type": "tuple[]"
169
+ }
170
+ ],
171
+ "stateMutability": "view",
172
+ "type": "function"
173
+ },
174
+ {
175
+ "inputs": [
176
+ {
177
+ "internalType": "address",
178
+ "name": "account",
179
+ "type": "address"
180
+ },
181
+ {
182
+ "internalType": "address",
183
+ "name": "comptrollerAddress",
184
+ "type": "address"
185
+ }
186
+ ],
187
+ "name": "getPendingRewards",
188
+ "outputs": [
189
+ {
190
+ "components": [
191
+ {
192
+ "internalType": "address",
193
+ "name": "distributorAddress",
194
+ "type": "address"
195
+ },
196
+ {
197
+ "internalType": "address",
198
+ "name": "rewardTokenAddress",
199
+ "type": "address"
200
+ },
201
+ {
202
+ "internalType": "uint256",
203
+ "name": "totalRewards",
204
+ "type": "uint256"
205
+ },
206
+ {
207
+ "components": [
208
+ {
209
+ "internalType": "address",
210
+ "name": "vTokenAddress",
211
+ "type": "address"
212
+ },
213
+ {
214
+ "internalType": "uint256",
215
+ "name": "amount",
216
+ "type": "uint256"
217
+ }
218
+ ],
219
+ "internalType": "struct PoolLens.PendingReward[]",
220
+ "name": "pendingRewards",
221
+ "type": "tuple[]"
222
+ }
223
+ ],
224
+ "internalType": "struct PoolLens.RewardSummary[]",
225
+ "name": "",
226
+ "type": "tuple[]"
227
+ }
228
+ ],
229
+ "stateMutability": "view",
230
+ "type": "function"
231
+ },
232
+ {
233
+ "inputs": [
234
+ {
235
+ "internalType": "address",
236
+ "name": "comptrollerAddress",
237
+ "type": "address"
238
+ }
239
+ ],
240
+ "name": "getPoolBadDebt",
241
+ "outputs": [
242
+ {
243
+ "components": [
244
+ {
245
+ "internalType": "address",
246
+ "name": "comptroller",
247
+ "type": "address"
248
+ },
249
+ {
250
+ "internalType": "uint256",
251
+ "name": "totalBadDebtUsd",
252
+ "type": "uint256"
253
+ },
254
+ {
255
+ "components": [
256
+ {
257
+ "internalType": "address",
258
+ "name": "vTokenAddress",
259
+ "type": "address"
260
+ },
261
+ {
262
+ "internalType": "uint256",
263
+ "name": "badDebtUsd",
264
+ "type": "uint256"
265
+ }
266
+ ],
267
+ "internalType": "struct PoolLens.BadDebt[]",
268
+ "name": "badDebts",
269
+ "type": "tuple[]"
270
+ }
271
+ ],
272
+ "internalType": "struct PoolLens.BadDebtSummary",
273
+ "name": "",
274
+ "type": "tuple"
275
+ }
276
+ ],
277
+ "stateMutability": "view",
278
+ "type": "function"
279
+ },
280
+ {
281
+ "inputs": [
282
+ {
283
+ "internalType": "address",
284
+ "name": "poolRegistryAddress",
285
+ "type": "address"
286
+ },
287
+ {
288
+ "internalType": "address",
289
+ "name": "comptroller",
290
+ "type": "address"
291
+ }
292
+ ],
293
+ "name": "getPoolByComptroller",
294
+ "outputs": [
295
+ {
296
+ "components": [
297
+ {
298
+ "internalType": "string",
299
+ "name": "name",
300
+ "type": "string"
301
+ },
302
+ {
303
+ "internalType": "address",
304
+ "name": "creator",
305
+ "type": "address"
306
+ },
307
+ {
308
+ "internalType": "address",
309
+ "name": "comptroller",
310
+ "type": "address"
311
+ },
312
+ {
313
+ "internalType": "uint256",
314
+ "name": "blockPosted",
315
+ "type": "uint256"
316
+ },
317
+ {
318
+ "internalType": "uint256",
319
+ "name": "timestampPosted",
320
+ "type": "uint256"
321
+ },
322
+ {
323
+ "internalType": "string",
324
+ "name": "category",
325
+ "type": "string"
326
+ },
327
+ {
328
+ "internalType": "string",
329
+ "name": "logoURL",
330
+ "type": "string"
331
+ },
332
+ {
333
+ "internalType": "string",
334
+ "name": "description",
335
+ "type": "string"
336
+ },
337
+ {
338
+ "internalType": "address",
339
+ "name": "priceOracle",
340
+ "type": "address"
341
+ },
342
+ {
343
+ "internalType": "uint256",
344
+ "name": "closeFactor",
345
+ "type": "uint256"
346
+ },
347
+ {
348
+ "internalType": "uint256",
349
+ "name": "liquidationIncentive",
350
+ "type": "uint256"
351
+ },
352
+ {
353
+ "internalType": "uint256",
354
+ "name": "minLiquidatableCollateral",
355
+ "type": "uint256"
356
+ },
357
+ {
358
+ "components": [
359
+ {
360
+ "internalType": "address",
361
+ "name": "vToken",
362
+ "type": "address"
363
+ },
364
+ {
365
+ "internalType": "uint256",
366
+ "name": "exchangeRateCurrent",
367
+ "type": "uint256"
368
+ },
369
+ {
370
+ "internalType": "uint256",
371
+ "name": "supplyRatePerBlock",
372
+ "type": "uint256"
373
+ },
374
+ {
375
+ "internalType": "uint256",
376
+ "name": "borrowRatePerBlock",
377
+ "type": "uint256"
378
+ },
379
+ {
380
+ "internalType": "uint256",
381
+ "name": "reserveFactorMantissa",
382
+ "type": "uint256"
383
+ },
384
+ {
385
+ "internalType": "uint256",
386
+ "name": "supplyCaps",
387
+ "type": "uint256"
388
+ },
389
+ {
390
+ "internalType": "uint256",
391
+ "name": "borrowCaps",
392
+ "type": "uint256"
393
+ },
394
+ {
395
+ "internalType": "uint256",
396
+ "name": "totalBorrows",
397
+ "type": "uint256"
398
+ },
399
+ {
400
+ "internalType": "uint256",
401
+ "name": "totalReserves",
402
+ "type": "uint256"
403
+ },
404
+ {
405
+ "internalType": "uint256",
406
+ "name": "totalSupply",
407
+ "type": "uint256"
408
+ },
409
+ {
410
+ "internalType": "uint256",
411
+ "name": "totalCash",
412
+ "type": "uint256"
413
+ },
414
+ {
415
+ "internalType": "bool",
416
+ "name": "isListed",
417
+ "type": "bool"
418
+ },
419
+ {
420
+ "internalType": "uint256",
421
+ "name": "collateralFactorMantissa",
422
+ "type": "uint256"
423
+ },
424
+ {
425
+ "internalType": "address",
426
+ "name": "underlyingAssetAddress",
427
+ "type": "address"
428
+ },
429
+ {
430
+ "internalType": "uint256",
431
+ "name": "vTokenDecimals",
432
+ "type": "uint256"
433
+ },
434
+ {
435
+ "internalType": "uint256",
436
+ "name": "underlyingDecimals",
437
+ "type": "uint256"
438
+ }
439
+ ],
440
+ "internalType": "struct PoolLens.VTokenMetadata[]",
441
+ "name": "vTokens",
442
+ "type": "tuple[]"
443
+ }
444
+ ],
445
+ "internalType": "struct PoolLens.PoolData",
446
+ "name": "",
447
+ "type": "tuple"
448
+ }
449
+ ],
450
+ "stateMutability": "view",
451
+ "type": "function"
452
+ },
453
+ {
454
+ "inputs": [
455
+ {
456
+ "internalType": "address",
457
+ "name": "poolRegistryAddress",
458
+ "type": "address"
459
+ },
460
+ {
461
+ "components": [
462
+ {
463
+ "internalType": "string",
464
+ "name": "name",
465
+ "type": "string"
466
+ },
467
+ {
468
+ "internalType": "address",
469
+ "name": "creator",
470
+ "type": "address"
471
+ },
472
+ {
473
+ "internalType": "address",
474
+ "name": "comptroller",
475
+ "type": "address"
476
+ },
477
+ {
478
+ "internalType": "uint256",
479
+ "name": "blockPosted",
480
+ "type": "uint256"
481
+ },
482
+ {
483
+ "internalType": "uint256",
484
+ "name": "timestampPosted",
485
+ "type": "uint256"
486
+ }
487
+ ],
488
+ "internalType": "struct PoolRegistryInterface.VenusPool",
489
+ "name": "venusPool",
490
+ "type": "tuple"
491
+ }
492
+ ],
493
+ "name": "getPoolDataFromVenusPool",
494
+ "outputs": [
495
+ {
496
+ "components": [
497
+ {
498
+ "internalType": "string",
499
+ "name": "name",
500
+ "type": "string"
501
+ },
502
+ {
503
+ "internalType": "address",
504
+ "name": "creator",
505
+ "type": "address"
506
+ },
507
+ {
508
+ "internalType": "address",
509
+ "name": "comptroller",
510
+ "type": "address"
511
+ },
512
+ {
513
+ "internalType": "uint256",
514
+ "name": "blockPosted",
515
+ "type": "uint256"
516
+ },
517
+ {
518
+ "internalType": "uint256",
519
+ "name": "timestampPosted",
520
+ "type": "uint256"
521
+ },
522
+ {
523
+ "internalType": "string",
524
+ "name": "category",
525
+ "type": "string"
526
+ },
527
+ {
528
+ "internalType": "string",
529
+ "name": "logoURL",
530
+ "type": "string"
531
+ },
532
+ {
533
+ "internalType": "string",
534
+ "name": "description",
535
+ "type": "string"
536
+ },
537
+ {
538
+ "internalType": "address",
539
+ "name": "priceOracle",
540
+ "type": "address"
541
+ },
542
+ {
543
+ "internalType": "uint256",
544
+ "name": "closeFactor",
545
+ "type": "uint256"
546
+ },
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "liquidationIncentive",
550
+ "type": "uint256"
551
+ },
552
+ {
553
+ "internalType": "uint256",
554
+ "name": "minLiquidatableCollateral",
555
+ "type": "uint256"
556
+ },
557
+ {
558
+ "components": [
559
+ {
560
+ "internalType": "address",
561
+ "name": "vToken",
562
+ "type": "address"
563
+ },
564
+ {
565
+ "internalType": "uint256",
566
+ "name": "exchangeRateCurrent",
567
+ "type": "uint256"
568
+ },
569
+ {
570
+ "internalType": "uint256",
571
+ "name": "supplyRatePerBlock",
572
+ "type": "uint256"
573
+ },
574
+ {
575
+ "internalType": "uint256",
576
+ "name": "borrowRatePerBlock",
577
+ "type": "uint256"
578
+ },
579
+ {
580
+ "internalType": "uint256",
581
+ "name": "reserveFactorMantissa",
582
+ "type": "uint256"
583
+ },
584
+ {
585
+ "internalType": "uint256",
586
+ "name": "supplyCaps",
587
+ "type": "uint256"
588
+ },
589
+ {
590
+ "internalType": "uint256",
591
+ "name": "borrowCaps",
592
+ "type": "uint256"
593
+ },
594
+ {
595
+ "internalType": "uint256",
596
+ "name": "totalBorrows",
597
+ "type": "uint256"
598
+ },
599
+ {
600
+ "internalType": "uint256",
601
+ "name": "totalReserves",
602
+ "type": "uint256"
603
+ },
604
+ {
605
+ "internalType": "uint256",
606
+ "name": "totalSupply",
607
+ "type": "uint256"
608
+ },
609
+ {
610
+ "internalType": "uint256",
611
+ "name": "totalCash",
612
+ "type": "uint256"
613
+ },
614
+ {
615
+ "internalType": "bool",
616
+ "name": "isListed",
617
+ "type": "bool"
618
+ },
619
+ {
620
+ "internalType": "uint256",
621
+ "name": "collateralFactorMantissa",
622
+ "type": "uint256"
623
+ },
624
+ {
625
+ "internalType": "address",
626
+ "name": "underlyingAssetAddress",
627
+ "type": "address"
628
+ },
629
+ {
630
+ "internalType": "uint256",
631
+ "name": "vTokenDecimals",
632
+ "type": "uint256"
633
+ },
634
+ {
635
+ "internalType": "uint256",
636
+ "name": "underlyingDecimals",
637
+ "type": "uint256"
638
+ }
639
+ ],
640
+ "internalType": "struct PoolLens.VTokenMetadata[]",
641
+ "name": "vTokens",
642
+ "type": "tuple[]"
643
+ }
644
+ ],
645
+ "internalType": "struct PoolLens.PoolData",
646
+ "name": "",
647
+ "type": "tuple"
648
+ }
649
+ ],
650
+ "stateMutability": "view",
651
+ "type": "function"
652
+ },
653
+ {
654
+ "inputs": [
655
+ {
656
+ "internalType": "address",
657
+ "name": "poolRegistryAddress",
658
+ "type": "address"
659
+ },
660
+ {
661
+ "internalType": "address",
662
+ "name": "asset",
663
+ "type": "address"
664
+ }
665
+ ],
666
+ "name": "getPoolsSupportedByAsset",
667
+ "outputs": [
668
+ {
669
+ "internalType": "address[]",
670
+ "name": "",
671
+ "type": "address[]"
672
+ }
673
+ ],
674
+ "stateMutability": "view",
675
+ "type": "function"
676
+ },
677
+ {
678
+ "inputs": [
679
+ {
680
+ "internalType": "address",
681
+ "name": "poolRegistryAddress",
682
+ "type": "address"
683
+ },
684
+ {
685
+ "internalType": "address",
686
+ "name": "comptroller",
687
+ "type": "address"
688
+ },
689
+ {
690
+ "internalType": "address",
691
+ "name": "asset",
692
+ "type": "address"
693
+ }
694
+ ],
695
+ "name": "getVTokenForAsset",
696
+ "outputs": [
697
+ {
698
+ "internalType": "address",
699
+ "name": "",
700
+ "type": "address"
701
+ }
702
+ ],
703
+ "stateMutability": "view",
704
+ "type": "function"
705
+ },
706
+ {
707
+ "inputs": [
708
+ {
709
+ "internalType": "contract VToken",
710
+ "name": "vToken",
711
+ "type": "address"
712
+ },
713
+ {
714
+ "internalType": "address",
715
+ "name": "account",
716
+ "type": "address"
717
+ }
718
+ ],
719
+ "name": "vTokenBalances",
720
+ "outputs": [
721
+ {
722
+ "components": [
723
+ {
724
+ "internalType": "address",
725
+ "name": "vToken",
726
+ "type": "address"
727
+ },
728
+ {
729
+ "internalType": "uint256",
730
+ "name": "balanceOf",
731
+ "type": "uint256"
732
+ },
733
+ {
734
+ "internalType": "uint256",
735
+ "name": "borrowBalanceCurrent",
736
+ "type": "uint256"
737
+ },
738
+ {
739
+ "internalType": "uint256",
740
+ "name": "balanceOfUnderlying",
741
+ "type": "uint256"
742
+ },
743
+ {
744
+ "internalType": "uint256",
745
+ "name": "tokenBalance",
746
+ "type": "uint256"
747
+ },
748
+ {
749
+ "internalType": "uint256",
750
+ "name": "tokenAllowance",
751
+ "type": "uint256"
752
+ }
753
+ ],
754
+ "internalType": "struct PoolLens.VTokenBalances",
755
+ "name": "",
756
+ "type": "tuple"
757
+ }
758
+ ],
759
+ "stateMutability": "nonpayable",
760
+ "type": "function"
761
+ },
762
+ {
763
+ "inputs": [
764
+ {
765
+ "internalType": "contract VToken[]",
766
+ "name": "vTokens",
767
+ "type": "address[]"
768
+ },
769
+ {
770
+ "internalType": "address",
771
+ "name": "account",
772
+ "type": "address"
773
+ }
774
+ ],
775
+ "name": "vTokenBalancesAll",
776
+ "outputs": [
777
+ {
778
+ "components": [
779
+ {
780
+ "internalType": "address",
781
+ "name": "vToken",
782
+ "type": "address"
783
+ },
784
+ {
785
+ "internalType": "uint256",
786
+ "name": "balanceOf",
787
+ "type": "uint256"
788
+ },
789
+ {
790
+ "internalType": "uint256",
791
+ "name": "borrowBalanceCurrent",
792
+ "type": "uint256"
793
+ },
794
+ {
795
+ "internalType": "uint256",
796
+ "name": "balanceOfUnderlying",
797
+ "type": "uint256"
798
+ },
799
+ {
800
+ "internalType": "uint256",
801
+ "name": "tokenBalance",
802
+ "type": "uint256"
803
+ },
804
+ {
805
+ "internalType": "uint256",
806
+ "name": "tokenAllowance",
807
+ "type": "uint256"
808
+ }
809
+ ],
810
+ "internalType": "struct PoolLens.VTokenBalances[]",
811
+ "name": "",
812
+ "type": "tuple[]"
813
+ }
814
+ ],
815
+ "stateMutability": "nonpayable",
816
+ "type": "function"
817
+ },
818
+ {
819
+ "inputs": [
820
+ {
821
+ "internalType": "contract VToken",
822
+ "name": "vToken",
823
+ "type": "address"
824
+ }
825
+ ],
826
+ "name": "vTokenMetadata",
827
+ "outputs": [
828
+ {
829
+ "components": [
830
+ {
831
+ "internalType": "address",
832
+ "name": "vToken",
833
+ "type": "address"
834
+ },
835
+ {
836
+ "internalType": "uint256",
837
+ "name": "exchangeRateCurrent",
838
+ "type": "uint256"
839
+ },
840
+ {
841
+ "internalType": "uint256",
842
+ "name": "supplyRatePerBlock",
843
+ "type": "uint256"
844
+ },
845
+ {
846
+ "internalType": "uint256",
847
+ "name": "borrowRatePerBlock",
848
+ "type": "uint256"
849
+ },
850
+ {
851
+ "internalType": "uint256",
852
+ "name": "reserveFactorMantissa",
853
+ "type": "uint256"
854
+ },
855
+ {
856
+ "internalType": "uint256",
857
+ "name": "supplyCaps",
858
+ "type": "uint256"
859
+ },
860
+ {
861
+ "internalType": "uint256",
862
+ "name": "borrowCaps",
863
+ "type": "uint256"
864
+ },
865
+ {
866
+ "internalType": "uint256",
867
+ "name": "totalBorrows",
868
+ "type": "uint256"
869
+ },
870
+ {
871
+ "internalType": "uint256",
872
+ "name": "totalReserves",
873
+ "type": "uint256"
874
+ },
875
+ {
876
+ "internalType": "uint256",
877
+ "name": "totalSupply",
878
+ "type": "uint256"
879
+ },
880
+ {
881
+ "internalType": "uint256",
882
+ "name": "totalCash",
883
+ "type": "uint256"
884
+ },
885
+ {
886
+ "internalType": "bool",
887
+ "name": "isListed",
888
+ "type": "bool"
889
+ },
890
+ {
891
+ "internalType": "uint256",
892
+ "name": "collateralFactorMantissa",
893
+ "type": "uint256"
894
+ },
895
+ {
896
+ "internalType": "address",
897
+ "name": "underlyingAssetAddress",
898
+ "type": "address"
899
+ },
900
+ {
901
+ "internalType": "uint256",
902
+ "name": "vTokenDecimals",
903
+ "type": "uint256"
904
+ },
905
+ {
906
+ "internalType": "uint256",
907
+ "name": "underlyingDecimals",
908
+ "type": "uint256"
909
+ }
910
+ ],
911
+ "internalType": "struct PoolLens.VTokenMetadata",
912
+ "name": "",
913
+ "type": "tuple"
914
+ }
915
+ ],
916
+ "stateMutability": "view",
917
+ "type": "function"
918
+ },
919
+ {
920
+ "inputs": [
921
+ {
922
+ "internalType": "contract VToken[]",
923
+ "name": "vTokens",
924
+ "type": "address[]"
925
+ }
926
+ ],
927
+ "name": "vTokenMetadataAll",
928
+ "outputs": [
929
+ {
930
+ "components": [
931
+ {
932
+ "internalType": "address",
933
+ "name": "vToken",
934
+ "type": "address"
935
+ },
936
+ {
937
+ "internalType": "uint256",
938
+ "name": "exchangeRateCurrent",
939
+ "type": "uint256"
940
+ },
941
+ {
942
+ "internalType": "uint256",
943
+ "name": "supplyRatePerBlock",
944
+ "type": "uint256"
945
+ },
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "borrowRatePerBlock",
949
+ "type": "uint256"
950
+ },
951
+ {
952
+ "internalType": "uint256",
953
+ "name": "reserveFactorMantissa",
954
+ "type": "uint256"
955
+ },
956
+ {
957
+ "internalType": "uint256",
958
+ "name": "supplyCaps",
959
+ "type": "uint256"
960
+ },
961
+ {
962
+ "internalType": "uint256",
963
+ "name": "borrowCaps",
964
+ "type": "uint256"
965
+ },
966
+ {
967
+ "internalType": "uint256",
968
+ "name": "totalBorrows",
969
+ "type": "uint256"
970
+ },
971
+ {
972
+ "internalType": "uint256",
973
+ "name": "totalReserves",
974
+ "type": "uint256"
975
+ },
976
+ {
977
+ "internalType": "uint256",
978
+ "name": "totalSupply",
979
+ "type": "uint256"
980
+ },
981
+ {
982
+ "internalType": "uint256",
983
+ "name": "totalCash",
984
+ "type": "uint256"
985
+ },
986
+ {
987
+ "internalType": "bool",
988
+ "name": "isListed",
989
+ "type": "bool"
990
+ },
991
+ {
992
+ "internalType": "uint256",
993
+ "name": "collateralFactorMantissa",
994
+ "type": "uint256"
995
+ },
996
+ {
997
+ "internalType": "address",
998
+ "name": "underlyingAssetAddress",
999
+ "type": "address"
1000
+ },
1001
+ {
1002
+ "internalType": "uint256",
1003
+ "name": "vTokenDecimals",
1004
+ "type": "uint256"
1005
+ },
1006
+ {
1007
+ "internalType": "uint256",
1008
+ "name": "underlyingDecimals",
1009
+ "type": "uint256"
1010
+ }
1011
+ ],
1012
+ "internalType": "struct PoolLens.VTokenMetadata[]",
1013
+ "name": "",
1014
+ "type": "tuple[]"
1015
+ }
1016
+ ],
1017
+ "stateMutability": "view",
1018
+ "type": "function"
1019
+ },
1020
+ {
1021
+ "inputs": [
1022
+ {
1023
+ "internalType": "contract VToken",
1024
+ "name": "vToken",
1025
+ "type": "address"
1026
+ }
1027
+ ],
1028
+ "name": "vTokenUnderlyingPrice",
1029
+ "outputs": [
1030
+ {
1031
+ "components": [
1032
+ {
1033
+ "internalType": "address",
1034
+ "name": "vToken",
1035
+ "type": "address"
1036
+ },
1037
+ {
1038
+ "internalType": "uint256",
1039
+ "name": "underlyingPrice",
1040
+ "type": "uint256"
1041
+ }
1042
+ ],
1043
+ "internalType": "struct PoolLens.VTokenUnderlyingPrice",
1044
+ "name": "",
1045
+ "type": "tuple"
1046
+ }
1047
+ ],
1048
+ "stateMutability": "view",
1049
+ "type": "function"
1050
+ },
1051
+ {
1052
+ "inputs": [
1053
+ {
1054
+ "internalType": "contract VToken[]",
1055
+ "name": "vTokens",
1056
+ "type": "address[]"
1057
+ }
1058
+ ],
1059
+ "name": "vTokenUnderlyingPriceAll",
1060
+ "outputs": [
1061
+ {
1062
+ "components": [
1063
+ {
1064
+ "internalType": "address",
1065
+ "name": "vToken",
1066
+ "type": "address"
1067
+ },
1068
+ {
1069
+ "internalType": "uint256",
1070
+ "name": "underlyingPrice",
1071
+ "type": "uint256"
1072
+ }
1073
+ ],
1074
+ "internalType": "struct PoolLens.VTokenUnderlyingPrice[]",
1075
+ "name": "",
1076
+ "type": "tuple[]"
1077
+ }
1078
+ ],
1079
+ "stateMutability": "view",
1080
+ "type": "function"
1081
+ }
1082
+ ],
1083
+ "bytecode": "0x608060405234801561001057600080fd5b50613f8b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637a27db571161008c578063aa5dbd2311610066578063aa5dbd23146101f0578063b312423914610210578063d77ebf9614610230578063e0a67f111461025057600080fd5b80637a27db57146101905780637c51b642146101b05780637c84e3b3146101d057600080fd5b80630d3ae318146100d45780631f884fdf146100fd578063345954dc1461011d5780633e3e399c1461013d57806347d86a811461015d57806355dd951514610170575b600080fd5b6100e76100e2366004612d2d565b610270565b6040516100f491906130cc565b60405180910390f35b61011061010b36600461312e565b6105a6565b6040516100f491906131eb565b61013061012b3660046131fc565b610677565b6040516100f4919061328f565b61015061014b3660046131fc565b6107b3565b6040516100f4919061331d565b6100e761016b36600461332e565b610b1f565b61018361017e366004613361565b610ba8565b6040516100f491906133b1565b6101a361019e36600461332e565b610c27565b6040516100f491906134b4565b6101c36101be3660046134c5565b610f3b565b6040516100f491906135d7565b6101e36101de366004613607565b610ffd565b6040516100f49190613628565b6102036101fe366004613607565b61116e565b6040516100f49190613636565b61022361021e366004613645565b6117f6565b6040516100f49190613667565b61024361023e36600461332e565b611adf565b6040516100f491906136c7565b61026361025e36600461377a565b611b55565b6040516100f491906137f2565b610278612a06565b6000826040015190506000816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156102c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102e99190810190613883565b905060006102f682611b55565b60408087015190516328ebbe8b60e21b815291925087916000916001600160a01b0384169163a3aefa2c9161032d916004016133b1565b600060405180830381865afa15801561034a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261037291908101906139c1565b90506000876040015190506000604051806101a001604052808a6000015181526020018a602001516001600160a01b031681526020018a604001516001600160a01b031681526020018a6060015181526020018a608001518152602001846000015181526020018460200151815260200184604001518152602001836001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f91906139fb565b6001600160a01b03168152602001836001600160a01b031663e87554466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190613a27565b8152602001836001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190613a27565b8152602001836001600160a01b031663db5c65de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190613a27565b8152602001959095525092955050505050505b92915050565b6060816000816001600160401b038111156105c3576105c3612b8c565b60405190808252806020026020018201604052801561060857816020015b60408051808201909152600080825260208201528152602001906001900390816105e15790505b50905060005b8281101561066e5761064086868381811061062b5761062b613a48565b90506020020160208101906101de9190613607565b82828151811061065257610652613a48565b60200260200101819052508061066790613a74565b905061060e565b50949350505050565b606060008290506000816001600160a01b031663d88ff1f46040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e69190810190613bbe565b80519091506000816001600160401b0381111561070557610705612b8c565b60405190808252806020026020018201604052801561073e57816020015b61072b612a06565b8152602001906001900390816107235790505b50905060005b828110156107a957600084828151811061076057610760613a48565b6020026020010151905060006107768983610270565b90508084848151811061078b5761078b613a48565b60200260200101819052505050806107a290613a74565b9050610744565b5095945050505050565b604080516060808201835260008083526020830152918101919091526000808390506000816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083d9190810190613883565b90506000826001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a391906139fb565b9050600082516001600160401b038111156108c0576108c0612b8c565b60405190808252806020026020018201604052801561090557816020015b60408051808201909152600080825260208201528152602001906001900390816108de5790505b509050610935604051806060016040528060006001600160a01b0316815260200160008152602001606081525090565b6001600160a01b03881681526040810182905260005b8451811015610b0b57604080518082019091526000808252602082015285828151811061097a5761097a613a48565b602002602001015181600001906001600160a01b031690816001600160a01b031681525050670de0b6b3a7640000856001600160a01b031663fc57d4df8885815181106109c9576109c9613a48565b60200260200101516040518263ffffffff1660e01b81526004016109ed91906133b1565b602060405180830381865afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190613a27565b878481518110610a4057610a40613a48565b60200260200101516001600160a01b031663bbcac5576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa99190613a27565b610ab39190613bf8565b610abd9190613c2d565b60208201526040830151805182919084908110610adc57610adc613a48565b6020026020010181905250806020015188610af79190613c41565b97505080610b0490613a74565b905061094b565b506020810195909552509295945050505050565b610b27612a06565b604051637aee632d60e01b81528390610ba09082906001600160a01b03821690637aee632d90610b5b9088906004016133b1565b600060405180830381865afa158015610b78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526100e29190810190613c59565b949350505050565b60405163266e0a7f60e01b815260009084906001600160a01b0382169063266e0a7f90610bdb9087908790600401613c93565b602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190613cae565b9150505b9392505050565b60606000826001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c919190810190613883565b90506000836001600160a01b03166361252fd16040518163ffffffff1660e01b8152600401600060405180830381865afa158015610cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cfb9190810190613d44565b9050600081516001600160401b03811115610d1857610d18612b8c565b604051908082528060200260200182016040528015610d6957816020015b6040805160808101825260008082526020808301829052928201526060808201528252600019909201910181610d365790505b50905060005b82518110156107a9576040805160808101825260008082526020820181905291810191909152606080820152838281518110610dad57610dad613a48565b60209081029190910101516001600160a01b031681528351849083908110610dd757610dd7613a48565b60200260200101516001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4091906139fb565b6001600160a01b031660208201528351849083908110610e6257610e62613a48565b60200260200101516001600160a01b0316631627ee89896040518263ffffffff1660e01b8152600401610e9591906133b1565b602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190613a27565b816040018181525050610f038886868581518110610ef657610ef6613a48565b6020026020010151611c13565b816060018190525080838381518110610f1e57610f1e613a48565b60200260200101819052505080610f3490613a74565b9050610d6f565b6060826000816001600160401b03811115610f5857610f58612b8c565b604051908082528060200260200182016040528015610f9157816020015b610f7e612a89565b815260200190600190039081610f765790505b50905060005b828110156107a957610fcf878783818110610fb457610fb4613a48565b9050602002016020810190610fc99190613607565b866117f6565b828281518110610fe157610fe1613a48565b602002602001018190525080610ff690613a74565b9050610f97565b60408051808201909152600080825260208201526000826001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611051573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107591906139fb565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110db91906139fb565b90506040518060400160405280856001600160a01b03168152602001826001600160a01b031663fc57d4df876040518263ffffffff1660e01b815260040161112391906133b1565b602060405180830381865afa158015611140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111649190613a27565b9052949350505050565b611176612ac8565b6000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da9190613a27565b90506000836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124091906139fb565b604051638e8f294b60e01b8152909150819060009081906001600160a01b03841690638e8f294b90611276908a906004016133b1565b6040805180830381865afa158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190613d91565b915091506000876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613cae565b90506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113849190613dd8565b60ff1690506040518061020001604052808a6001600160a01b031681526020018881526020018a6001600160a01b031663ae9d70b06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140c9190613a27565b81526020018a6001600160a01b031663f8f9da286040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190613a27565b81526020018a6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190613a27565b8152602001866001600160a01b03166302c3bcbb8c6040518263ffffffff1660e01b815260040161150b91906133b1565b602060405180830381865afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190613a27565b8152602001866001600160a01b0316634a5844328c6040518263ffffffff1660e01b815260040161157d91906133b1565b602060405180830381865afa15801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be9190613a27565b81526020018a6001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190613a27565b81526020018a6001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613a27565b81526020018a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190613a27565b81526020018a6001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190613a27565b81526020018515158152602001848152602001836001600160a01b031681526020018a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117de9190613dd8565b60ff1681526020019190915298975050505050505050565b6117fe612a89565b6040516370a0823160e01b81526000906001600160a01b038516906370a082319061182d9086906004016133b1565b602060405180830381865afa15801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e9190613a27565b90506000846001600160a01b03166317bfdfbc856040518263ffffffff1660e01b815260040161189e91906133b1565b6020604051808303816000875af11580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e19190613a27565b90506000856001600160a01b0316633af9e669866040518263ffffffff1660e01b815260040161191191906133b1565b6020604051808303816000875af1158015611930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119549190613a27565b90506000806000886001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bd9190613cae565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906119ec908b906004016133b1565b602060405180830381865afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d9190613a27565b604051636eb1769f60e11b81529093506001600160a01b0382169063dd62ed3e90611a5e908b908d90600401613c93565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190613a27565b6040805160c0810182526001600160a01b038c168152602081019890985287019590955250506060840191909152608083015260a0820152905092915050565b604051631e6db74760e31b815260609083906001600160a01b0382169063f36dba3890611b109086906004016133b1565b600060405180830381865afa158015611b2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba09190810190613e6e565b80516060906000816001600160401b03811115611b7457611b74612b8c565b604051908082528060200260200182016040528015611bad57816020015b611b9a612ac8565b815260200190600190039081611b925790505b50905060005b82811015611c0b57611bdd858281518110611bd057611bd0613a48565b602002602001015161116e565b828281518110611bef57611bef613a48565b602002602001018190525080611c0490613a74565b9050611bb3565b509392505050565b6060600083516001600160401b03811115611c3057611c30612b8c565b604051908082528060200260200182016040528015611c7557816020015b6040805180820190915260008082526020820152815260200190600190039081611c4e5790505b50905060005b845181101561066e576040805180820190915260008082526020820152846001600160a01b0316632c427b57878481518110611cb957611cb9613a48565b60200260200101516040518263ffffffff1660e01b8152600401611cdd91906133b1565b6040805180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d9190613ed9565b63ffffffff166020808401919091526001600160e01b03909116825260408051808201909152600080825291810191909152856001600160a01b03166392a18235888581518110611d7057611d70613a48565b60200260200101516040518263ffffffff1660e01b8152600401611d9491906133b1565b6040805180830381865afa158015611db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd49190613ed9565b63ffffffff166020808401919091526001600160e01b03909116825260408051918201905287516000919081908a9087908110611e1357611e13613a48565b60200260200101516001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7c9190613a27565b8152509050611ea6888581518110611e9657611e96613a48565b6020026020010151888584611fa1565b611eca888581518110611ebb57611ebb613a48565b602002602001015188846121f9565b6000611ef2898681518110611ee157611ee1613a48565b6020026020010151898c8786612447565b90506000611f1b8a8781518110611f0b57611f0b613a48565b60200260200101518a8d8761266f565b60408051808201909152600080825260208201529091508a8781518110611f4457611f44613a48565b60209081029190910101516001600160a01b03168152611f648284613c41565b602082015287518190899089908110611f7f57611f7f613a48565b602002602001018190525050505050505080611f9a90613a74565b9050611c7b565b604051637c05a7c560e01b81526000906001600160a01b03851690637c05a7c590611fd09088906004016133b1565b602060405180830381865afa158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120119190613a27565b90506000439050600061202e82866020015163ffffffff1661288d565b90506000811180156120405750600083115b156121a65760006120b2886001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190613a27565b86612899565b905060006120c083866128b7565b905060008083116120e057604051806020016040528060008152506120ea565b6120ea82846128c3565b9050600061211360405180602001604052808b600001516001600160e01b031681525083612908565b905061214e8160000151604051806040016040528060138152602001726e657720696e646578206f766572666c6f777360681b815250612934565b6001600160e01b03168952604080518082019091526016815275626c6f636b206e756d626572206f766572666c6f777360501b6020820152612191908790612970565b63ffffffff1660208a0152506121f092505050565b80156121f0576121e48260405180604001604052806016815260200175626c6f636b206e756d626572206f766572666c6f777360501b815250612970565b63ffffffff1660208601525b50505050505050565b604051631d31307360e21b81526000906001600160a01b038416906374c4c1cc906122289087906004016133b1565b602060405180830381865afa158015612245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122699190613a27565b90506000439050600061228682856020015163ffffffff1661288d565b90506000811180156122985750600083115b156123f5576000866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123019190613a27565b9050600061230f83866128b7565b9050600080831161232f5760405180602001604052806000815250612339565b61233982846128c3565b9050600061236260405180602001604052808a600001516001600160e01b031681525083612908565b905061239d8160000151604051806040016040528060138152602001726e657720696e646578206f766572666c6f777360681b815250612934565b6001600160e01b03168852604080518082019091526016815275626c6f636b206e756d626572206f766572666c6f777360501b60208201526123e0908790612970565b63ffffffff1660208901525061243f92505050565b801561243f576124338260405180604001604052806016815260200175626c6f636b206e756d626572206f766572666c6f777360501b815250612970565b63ffffffff1660208501525b505050505050565b604080516020808201835284516001600160e01b031682528251908101928390526336fe846560e11b9092526000918290806001600160a01b038916636dfd08ca6124968c8b60248601613c93565b602060405180830381865afa1580156124b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d79190613a27565b905280519091501580156125595750866001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125489190613f0c565b6001600160e01b0316826000015110155b156125cc57866001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c09190613f0c565b6001600160e01b031681525b60006125d88383612998565b905060006126528a6001600160a01b03166395dd91938a6040518263ffffffff1660e01b815260040161260b91906133b1565b602060405180830381865afa158015612628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264c9190613a27565b87612899565b9050600061266082846129c4565b9b9a5050505050505050505050565b604080516020808201835283516001600160e01b0316825282519081019283905263552c097160e01b9092526000918290806001600160a01b03881663552c09716126be8b8a60248601613c93565b602060405180830381865afa1580156126db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ff9190613a27565b905280519091501580156127815750856001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561274c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127709190613f0c565b6001600160e01b0316826000015110155b156127f457856001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e89190613f0c565b6001600160e01b031681525b60006128008383612998565b90506000886001600160a01b03166370a08231886040518263ffffffff1660e01b815260040161283091906133b1565b602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190613a27565b9050600061287f82846129c4565b9a9950505050505050505050565b6000610c208284613f2d565b6000610c206128b084670de0b6b3a76400006128b7565b83516129ee565b6000610c208284613bf8565b60408051602081019091526000815260405180602001604052806128ff6128f9866ec097ce7bc90715b34b9f10000000006128b7565b856129ee565b90529392505050565b60408051602081019091526000815260405180602001604052806128ff856000015185600001516129fa565b6000816001600160e01b038411156129685760405162461bcd60e51b815260040161295f9190613f44565b60405180910390fd5b509192915050565b60008163ffffffff8411156129685760405162461bcd60e51b815260040161295f9190613f44565b60408051602081019091526000815260405180602001604052806128ff8560000151856000015161288d565b60006ec097ce7bc90715b34b9f10000000006129e48484600001516128b7565b610c209190613c2d565b6000610c208284613c2d565b6000610c208284613c41565b604051806101a001604052806060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610200016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b60006001600160a01b0382166105a0565b612b7381612b59565b8114612b7e57600080fd5b50565b80356105a081612b6a565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715612bc757612bc7612b8c565b6040525050565b6000612bd960405190565b9050612be58282612ba2565b919050565b60006001600160401b03821115612c0357612c03612b8c565b601f19601f83011660200192915050565b82818337506000910152565b6000612c33612c2e84612bea565b612bce565b905082815260208101848484011115612c4e57612c4e600080fd5b611c0b848285612c14565b600082601f830112612c6d57612c6d600080fd5b8135610ba0848260208601612c20565b80612b73565b80356105a081612c7d565b600060a08284031215612ca357612ca3600080fd5b612cad60a0612bce565b905081356001600160401b03811115612cc857612cc8600080fd5b612cd484828501612c59565b8252506020612ce584848301612b81565b6020830152506040612cf984828501612b81565b6040830152506060612d0d84828501612c83565b6060830152506080612d2184828501612c83565b60808301525092915050565b60008060408385031215612d4357612d43600080fd5b6000612d4f8585612b81565b92505060208301356001600160401b03811115612d6e57612d6e600080fd5b612d7a85828601612c8e565b9150509250929050565b60005b83811015612d9f578181015183820152602001612d87565b83811115612dae576000848401525b50505050565b6000612dbe825190565b808452602084019350612dd5818560208601612d84565b601f01601f19169290920192915050565b612def81612b59565b82525050565b80612def565b801515612def565b8051610200830190612e158482612de6565b506020820151612e286020850182612df5565b506040820151612e3b6040850182612df5565b506060820151612e4e6060850182612df5565b506080820151612e616080850182612df5565b5060a0820151612e7460a0850182612df5565b5060c0820151612e8760c0850182612df5565b5060e0820151612e9a60e0850182612df5565b50610100820151612eaf610100850182612df5565b50610120820151612ec4610120850182612df5565b50610140820151612ed9610140850182612df5565b50610160820151612eee610160850182612dfb565b50610180820151612f03610180850182612df5565b506101a0820151612f186101a0850182612de6565b506101c0820151612f2d6101c0850182612df5565b506101e0820151612dae6101e0850182612df5565b6000612f4e8383612e03565b50506102000190565b6000612f61825190565b80845260209384019383018060005b83811015612f95578151612f848882612f42565b975060208301925050600101612f70565b509495945050505050565b80516101a080845260009190840190612fb98282612db4565b9150506020830151612fce6020860182612de6565b506040830151612fe16040860182612de6565b506060830151612ff46060860182612df5565b5060808301516130076080860182612df5565b5060a083015184820360a086015261301f8282612db4565b91505060c083015184820360c08601526130398282612db4565b91505060e083015184820360e08601526130538282612db4565b91505061010083015161306a610100860182612de6565b5061012083015161307f610120860182612df5565b50610140830151613094610140860182612df5565b506101608301516130a9610160860182612df5565b506101808301518482036101808601526130c38282612f57565b95945050505050565b60208082528101610c208184612fa0565b60008083601f8401126130f2576130f2600080fd5b5081356001600160401b0381111561310c5761310c600080fd5b60208301915083602082028301111561312757613127600080fd5b9250929050565b6000806020838503121561314457613144600080fd5b82356001600160401b0381111561315d5761315d600080fd5b613169858286016130dd565b92509250509250929050565b805160408301906131868482612de6565b506020820151612dae6020850182612df5565b60006131a58383613175565b505060400190565b60006131b7825190565b80845260209384019383018060005b83811015612f955781516131da8882613199565b9750602083019250506001016131c6565b60208082528101610c2081846131ad565b60006020828403121561321157613211600080fd5b6000610ba08484612b81565b6000610c208383612fa0565b6000613233825190565b8084526020840193508360208202850161324d8560200190565b8060005b85811015613282578484038952815161326a858261321d565b94506020830160209a909a0199925050600101613251565b5091979650505050505050565b60208082528101610c208184613229565b60006132aa825190565b80845260209384019383018060005b83811015612f955781516132cd8882613199565b9750602083019250506001016132b9565b805160009060608401906132f28582612de6565b5060208301516133056020860182612df5565b50604083015184820360408601526130c382826132a0565b60208082528101610c2081846132de565b6000806040838503121561334457613344600080fd5b60006133508585612b81565b9250506020612d7a85828601612b81565b60008060006060848603121561337957613379600080fd5b60006133858686612b81565b935050602061339686828701612b81565b92505060406133a786828701612b81565b9150509250925092565b602081016105a08284612de6565b60006133c9825190565b80845260209384019383018060005b83811015612f955781516133ec8882613199565b9750602083019250506001016133d8565b805160009060808401906134118582612de6565b5060208301516134246020860182612de6565b5060408301516134376040860182612df5565b50606083015184820360608601526130c382826133bf565b6000610c2083836133fd565b6000613465825190565b8084526020840193508360208202850161347f8560200190565b8060005b85811015613282578484038952815161349c858261344f565b94506020830160209a909a0199925050600101613483565b60208082528101610c20818461345b565b6000806000604084860312156134dd576134dd600080fd5b83356001600160401b038111156134f6576134f6600080fd5b613502868287016130dd565b935093505060206133a786828701612b81565b805160c08301906135268482612de6565b5060208201516135396020850182612df5565b50604082015161354c6040850182612df5565b50606082015161355f6060850182612df5565b5060808201516135726080850182612df5565b5060a0820151612dae60a0850182612df5565b60006135918383613515565b505060c00190565b60006135a3825190565b80845260209384019383018060005b83811015612f955781516135c68882613585565b9750602083019250506001016135b2565b60208082528101610c208184613599565b60006105a082612b59565b612b73816135e8565b80356105a0816135f3565b60006020828403121561361c5761361c600080fd5b6000610ba084846135fc565b604081016105a08284613175565b61020081016105a08284612e03565b6000806040838503121561365b5761365b600080fd5b600061335085856135fc565b60c081016105a08284613515565b60006136818383612de6565b505060200190565b6000613693825190565b80845260209384019383018060005b83811015612f955781516136b68882613675565b9750602083019250506001016136a2565b60208082528101610c208184613689565b60006001600160401b038211156136f1576136f1612b8c565b5060209081020190565b6000613709612c2e846136d8565b8381529050602080820190840283018581111561372857613728600080fd5b835b8181101561374c578061373d88826135fc565b8452506020928301920161372a565b5050509392505050565b600082601f83011261376a5761376a600080fd5b8135610ba08482602086016136fb565b60006020828403121561378f5761378f600080fd5b81356001600160401b038111156137a8576137a8600080fd5b610ba084828501613756565b60006137be825190565b80845260209384019383018060005b83811015612f955781516137e18882612f42565b9750602083019250506001016137cd565b60208082528101610c2081846137b4565b80516105a0816135f3565b600061381c612c2e846136d8565b8381529050602080820190840283018581111561383b5761383b600080fd5b835b8181101561374c57806138508882613803565b8452506020928301920161383d565b600082601f83011261387357613873600080fd5b8151610ba084826020860161380e565b60006020828403121561389857613898600080fd5b81516001600160401b038111156138b1576138b1600080fd5b610ba08482850161385f565b60006138cb612c2e84612bea565b9050828152602081018484840111156138e6576138e6600080fd5b611c0b848285612d84565b600082601f83011261390557613905600080fd5b8151610ba08482602086016138bd565b60006060828403121561392a5761392a600080fd5b6139346060612bce565b82519091506001600160401b0381111561395057613950600080fd5b61395c848285016138f1565b82525060208201516001600160401b0381111561397b5761397b600080fd5b613987848285016138f1565b60208301525060408201516001600160401b038111156139a9576139a9600080fd5b6139b5848285016138f1565b60408301525092915050565b6000602082840312156139d6576139d6600080fd5b81516001600160401b038111156139ef576139ef600080fd5b610ba084828501613915565b600060208284031215613a1057613a10600080fd5b6000610ba08484613803565b80516105a081612c7d565b600060208284031215613a3c57613a3c600080fd5b6000610ba08484613a1c565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198203613a8757613a87613a5e565b5060010190565b80516105a081612b6a565b600060a08284031215613aae57613aae600080fd5b613ab860a0612bce565b82519091506001600160401b03811115613ad457613ad4600080fd5b613ae0848285016138f1565b8252506020613af184848301613a8e565b6020830152506040613b0584828501613a8e565b6040830152506060613b1984828501613a1c565b6060830152506080612d2184828501613a1c565b6000613b3b612c2e846136d8565b83815290506020808201908402830185811115613b5a57613b5a600080fd5b835b8181101561374c5780516001600160401b03811115613b7d57613b7d600080fd5b808601613b8a8982613a99565b8552505060209283019201613b5c565b600082601f830112613bae57613bae600080fd5b8151610ba0848260208601613b2d565b600060208284031215613bd357613bd3600080fd5b81516001600160401b03811115613bec57613bec600080fd5b610ba084828501613b9a565b6000816000190483118215151615613c1257613c12613a5e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613c3c57613c3c613c17565b500490565b60008219821115613c5457613c54613a5e565b500190565b600060208284031215613c6e57613c6e600080fd5b81516001600160401b03811115613c8757613c87600080fd5b610ba084828501613a99565b60408101613ca18285612de6565b610c206020830184612de6565b600060208284031215613cc357613cc3600080fd5b6000610ba08484613a8e565b6000613cdd612c2e846136d8565b83815290506020808201908402830185811115613cfc57613cfc600080fd5b835b8181101561374c5780613d118882613803565b84525060209283019201613cfe565b600082601f830112613d3457613d34600080fd5b8151610ba0848260208601613ccf565b600060208284031215613d5957613d59600080fd5b81516001600160401b03811115613d7257613d72600080fd5b610ba084828501613d20565b801515612b73565b80516105a081613d7e565b60008060408385031215613da757613da7600080fd5b6000613db38585613d86565b9250506020612d7a85828601613a1c565b60ff8116612b73565b80516105a081613dc4565b600060208284031215613ded57613ded600080fd5b6000610ba08484613dcd565b6000613e07612c2e846136d8565b83815290506020808201908402830185811115613e2657613e26600080fd5b835b8181101561374c5780613e3b8882613a8e565b84525060209283019201613e28565b600082601f830112613e5e57613e5e600080fd5b8151610ba0848260208601613df9565b600060208284031215613e8357613e83600080fd5b81516001600160401b03811115613e9c57613e9c600080fd5b610ba084828501613e4a565b6001600160e01b038116612b73565b80516105a081613ea8565b63ffffffff8116612b73565b80516105a081613ec2565b60008060408385031215613eef57613eef600080fd5b6000613efb8585613eb7565b9250506020612d7a85828601613ece565b600060208284031215613f2157613f21600080fd5b6000610ba08484613eb7565b600082821015613f3f57613f3f613a5e565b500390565b60208082528101610c208184612db456fea2646970667358221220e2e565f75393a666b91a67ef2aee8b4ef35652b8ba9b421d41e009a1b63abf3b64736f6c634300080d0033",
1084
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637a27db571161008c578063aa5dbd2311610066578063aa5dbd23146101f0578063b312423914610210578063d77ebf9614610230578063e0a67f111461025057600080fd5b80637a27db57146101905780637c51b642146101b05780637c84e3b3146101d057600080fd5b80630d3ae318146100d45780631f884fdf146100fd578063345954dc1461011d5780633e3e399c1461013d57806347d86a811461015d57806355dd951514610170575b600080fd5b6100e76100e2366004612d2d565b610270565b6040516100f491906130cc565b60405180910390f35b61011061010b36600461312e565b6105a6565b6040516100f491906131eb565b61013061012b3660046131fc565b610677565b6040516100f4919061328f565b61015061014b3660046131fc565b6107b3565b6040516100f4919061331d565b6100e761016b36600461332e565b610b1f565b61018361017e366004613361565b610ba8565b6040516100f491906133b1565b6101a361019e36600461332e565b610c27565b6040516100f491906134b4565b6101c36101be3660046134c5565b610f3b565b6040516100f491906135d7565b6101e36101de366004613607565b610ffd565b6040516100f49190613628565b6102036101fe366004613607565b61116e565b6040516100f49190613636565b61022361021e366004613645565b6117f6565b6040516100f49190613667565b61024361023e36600461332e565b611adf565b6040516100f491906136c7565b61026361025e36600461377a565b611b55565b6040516100f491906137f2565b610278612a06565b6000826040015190506000816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156102c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102e99190810190613883565b905060006102f682611b55565b60408087015190516328ebbe8b60e21b815291925087916000916001600160a01b0384169163a3aefa2c9161032d916004016133b1565b600060405180830381865afa15801561034a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261037291908101906139c1565b90506000876040015190506000604051806101a001604052808a6000015181526020018a602001516001600160a01b031681526020018a604001516001600160a01b031681526020018a6060015181526020018a608001518152602001846000015181526020018460200151815260200184604001518152602001836001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f91906139fb565b6001600160a01b03168152602001836001600160a01b031663e87554466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190613a27565b8152602001836001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190613a27565b8152602001836001600160a01b031663db5c65de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190613a27565b8152602001959095525092955050505050505b92915050565b6060816000816001600160401b038111156105c3576105c3612b8c565b60405190808252806020026020018201604052801561060857816020015b60408051808201909152600080825260208201528152602001906001900390816105e15790505b50905060005b8281101561066e5761064086868381811061062b5761062b613a48565b90506020020160208101906101de9190613607565b82828151811061065257610652613a48565b60200260200101819052508061066790613a74565b905061060e565b50949350505050565b606060008290506000816001600160a01b031663d88ff1f46040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e69190810190613bbe565b80519091506000816001600160401b0381111561070557610705612b8c565b60405190808252806020026020018201604052801561073e57816020015b61072b612a06565b8152602001906001900390816107235790505b50905060005b828110156107a957600084828151811061076057610760613a48565b6020026020010151905060006107768983610270565b90508084848151811061078b5761078b613a48565b60200260200101819052505050806107a290613a74565b9050610744565b5095945050505050565b604080516060808201835260008083526020830152918101919091526000808390506000816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083d9190810190613883565b90506000826001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a391906139fb565b9050600082516001600160401b038111156108c0576108c0612b8c565b60405190808252806020026020018201604052801561090557816020015b60408051808201909152600080825260208201528152602001906001900390816108de5790505b509050610935604051806060016040528060006001600160a01b0316815260200160008152602001606081525090565b6001600160a01b03881681526040810182905260005b8451811015610b0b57604080518082019091526000808252602082015285828151811061097a5761097a613a48565b602002602001015181600001906001600160a01b031690816001600160a01b031681525050670de0b6b3a7640000856001600160a01b031663fc57d4df8885815181106109c9576109c9613a48565b60200260200101516040518263ffffffff1660e01b81526004016109ed91906133b1565b602060405180830381865afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e9190613a27565b878481518110610a4057610a40613a48565b60200260200101516001600160a01b031663bbcac5576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa99190613a27565b610ab39190613bf8565b610abd9190613c2d565b60208201526040830151805182919084908110610adc57610adc613a48565b6020026020010181905250806020015188610af79190613c41565b97505080610b0490613a74565b905061094b565b506020810195909552509295945050505050565b610b27612a06565b604051637aee632d60e01b81528390610ba09082906001600160a01b03821690637aee632d90610b5b9088906004016133b1565b600060405180830381865afa158015610b78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526100e29190810190613c59565b949350505050565b60405163266e0a7f60e01b815260009084906001600160a01b0382169063266e0a7f90610bdb9087908790600401613c93565b602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190613cae565b9150505b9392505050565b60606000826001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c919190810190613883565b90506000836001600160a01b03166361252fd16040518163ffffffff1660e01b8152600401600060405180830381865afa158015610cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cfb9190810190613d44565b9050600081516001600160401b03811115610d1857610d18612b8c565b604051908082528060200260200182016040528015610d6957816020015b6040805160808101825260008082526020808301829052928201526060808201528252600019909201910181610d365790505b50905060005b82518110156107a9576040805160808101825260008082526020820181905291810191909152606080820152838281518110610dad57610dad613a48565b60209081029190910101516001600160a01b031681528351849083908110610dd757610dd7613a48565b60200260200101516001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4091906139fb565b6001600160a01b031660208201528351849083908110610e6257610e62613a48565b60200260200101516001600160a01b0316631627ee89896040518263ffffffff1660e01b8152600401610e9591906133b1565b602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190613a27565b816040018181525050610f038886868581518110610ef657610ef6613a48565b6020026020010151611c13565b816060018190525080838381518110610f1e57610f1e613a48565b60200260200101819052505080610f3490613a74565b9050610d6f565b6060826000816001600160401b03811115610f5857610f58612b8c565b604051908082528060200260200182016040528015610f9157816020015b610f7e612a89565b815260200190600190039081610f765790505b50905060005b828110156107a957610fcf878783818110610fb457610fb4613a48565b9050602002016020810190610fc99190613607565b866117f6565b828281518110610fe157610fe1613a48565b602002602001018190525080610ff690613a74565b9050610f97565b60408051808201909152600080825260208201526000826001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611051573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107591906139fb565b90506000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110db91906139fb565b90506040518060400160405280856001600160a01b03168152602001826001600160a01b031663fc57d4df876040518263ffffffff1660e01b815260040161112391906133b1565b602060405180830381865afa158015611140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111649190613a27565b9052949350505050565b611176612ac8565b6000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da9190613a27565b90506000836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124091906139fb565b604051638e8f294b60e01b8152909150819060009081906001600160a01b03841690638e8f294b90611276908a906004016133b1565b6040805180830381865afa158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190613d91565b915091506000876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e9190613cae565b90506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113849190613dd8565b60ff1690506040518061020001604052808a6001600160a01b031681526020018881526020018a6001600160a01b031663ae9d70b06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140c9190613a27565b81526020018a6001600160a01b031663f8f9da286040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190613a27565b81526020018a6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190613a27565b8152602001866001600160a01b03166302c3bcbb8c6040518263ffffffff1660e01b815260040161150b91906133b1565b602060405180830381865afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190613a27565b8152602001866001600160a01b0316634a5844328c6040518263ffffffff1660e01b815260040161157d91906133b1565b602060405180830381865afa15801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be9190613a27565b81526020018a6001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116259190613a27565b81526020018a6001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168c9190613a27565b81526020018a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190613a27565b81526020018a6001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190613a27565b81526020018515158152602001848152602001836001600160a01b031681526020018a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117de9190613dd8565b60ff1681526020019190915298975050505050505050565b6117fe612a89565b6040516370a0823160e01b81526000906001600160a01b038516906370a082319061182d9086906004016133b1565b602060405180830381865afa15801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186e9190613a27565b90506000846001600160a01b03166317bfdfbc856040518263ffffffff1660e01b815260040161189e91906133b1565b6020604051808303816000875af11580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e19190613a27565b90506000856001600160a01b0316633af9e669866040518263ffffffff1660e01b815260040161191191906133b1565b6020604051808303816000875af1158015611930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119549190613a27565b90506000806000886001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bd9190613cae565b6040516370a0823160e01b81529091506001600160a01b038216906370a08231906119ec908b906004016133b1565b602060405180830381865afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d9190613a27565b604051636eb1769f60e11b81529093506001600160a01b0382169063dd62ed3e90611a5e908b908d90600401613c93565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190613a27565b6040805160c0810182526001600160a01b038c168152602081019890985287019590955250506060840191909152608083015260a0820152905092915050565b604051631e6db74760e31b815260609083906001600160a01b0382169063f36dba3890611b109086906004016133b1565b600060405180830381865afa158015611b2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba09190810190613e6e565b80516060906000816001600160401b03811115611b7457611b74612b8c565b604051908082528060200260200182016040528015611bad57816020015b611b9a612ac8565b815260200190600190039081611b925790505b50905060005b82811015611c0b57611bdd858281518110611bd057611bd0613a48565b602002602001015161116e565b828281518110611bef57611bef613a48565b602002602001018190525080611c0490613a74565b9050611bb3565b509392505050565b6060600083516001600160401b03811115611c3057611c30612b8c565b604051908082528060200260200182016040528015611c7557816020015b6040805180820190915260008082526020820152815260200190600190039081611c4e5790505b50905060005b845181101561066e576040805180820190915260008082526020820152846001600160a01b0316632c427b57878481518110611cb957611cb9613a48565b60200260200101516040518263ffffffff1660e01b8152600401611cdd91906133b1565b6040805180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d9190613ed9565b63ffffffff166020808401919091526001600160e01b03909116825260408051808201909152600080825291810191909152856001600160a01b03166392a18235888581518110611d7057611d70613a48565b60200260200101516040518263ffffffff1660e01b8152600401611d9491906133b1565b6040805180830381865afa158015611db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd49190613ed9565b63ffffffff166020808401919091526001600160e01b03909116825260408051918201905287516000919081908a9087908110611e1357611e13613a48565b60200260200101516001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7c9190613a27565b8152509050611ea6888581518110611e9657611e96613a48565b6020026020010151888584611fa1565b611eca888581518110611ebb57611ebb613a48565b602002602001015188846121f9565b6000611ef2898681518110611ee157611ee1613a48565b6020026020010151898c8786612447565b90506000611f1b8a8781518110611f0b57611f0b613a48565b60200260200101518a8d8761266f565b60408051808201909152600080825260208201529091508a8781518110611f4457611f44613a48565b60209081029190910101516001600160a01b03168152611f648284613c41565b602082015287518190899089908110611f7f57611f7f613a48565b602002602001018190525050505050505080611f9a90613a74565b9050611c7b565b604051637c05a7c560e01b81526000906001600160a01b03851690637c05a7c590611fd09088906004016133b1565b602060405180830381865afa158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120119190613a27565b90506000439050600061202e82866020015163ffffffff1661288d565b90506000811180156120405750600083115b156121a65760006120b2886001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190613a27565b86612899565b905060006120c083866128b7565b905060008083116120e057604051806020016040528060008152506120ea565b6120ea82846128c3565b9050600061211360405180602001604052808b600001516001600160e01b031681525083612908565b905061214e8160000151604051806040016040528060138152602001726e657720696e646578206f766572666c6f777360681b815250612934565b6001600160e01b03168952604080518082019091526016815275626c6f636b206e756d626572206f766572666c6f777360501b6020820152612191908790612970565b63ffffffff1660208a0152506121f092505050565b80156121f0576121e48260405180604001604052806016815260200175626c6f636b206e756d626572206f766572666c6f777360501b815250612970565b63ffffffff1660208601525b50505050505050565b604051631d31307360e21b81526000906001600160a01b038416906374c4c1cc906122289087906004016133b1565b602060405180830381865afa158015612245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122699190613a27565b90506000439050600061228682856020015163ffffffff1661288d565b90506000811180156122985750600083115b156123f5576000866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123019190613a27565b9050600061230f83866128b7565b9050600080831161232f5760405180602001604052806000815250612339565b61233982846128c3565b9050600061236260405180602001604052808a600001516001600160e01b031681525083612908565b905061239d8160000151604051806040016040528060138152602001726e657720696e646578206f766572666c6f777360681b815250612934565b6001600160e01b03168852604080518082019091526016815275626c6f636b206e756d626572206f766572666c6f777360501b60208201526123e0908790612970565b63ffffffff1660208901525061243f92505050565b801561243f576124338260405180604001604052806016815260200175626c6f636b206e756d626572206f766572666c6f777360501b815250612970565b63ffffffff1660208501525b505050505050565b604080516020808201835284516001600160e01b031682528251908101928390526336fe846560e11b9092526000918290806001600160a01b038916636dfd08ca6124968c8b60248601613c93565b602060405180830381865afa1580156124b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d79190613a27565b905280519091501580156125595750866001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125489190613f0c565b6001600160e01b0316826000015110155b156125cc57866001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c09190613f0c565b6001600160e01b031681525b60006125d88383612998565b905060006126528a6001600160a01b03166395dd91938a6040518263ffffffff1660e01b815260040161260b91906133b1565b602060405180830381865afa158015612628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264c9190613a27565b87612899565b9050600061266082846129c4565b9b9a5050505050505050505050565b604080516020808201835283516001600160e01b0316825282519081019283905263552c097160e01b9092526000918290806001600160a01b03881663552c09716126be8b8a60248601613c93565b602060405180830381865afa1580156126db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ff9190613a27565b905280519091501580156127815750856001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561274c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127709190613f0c565b6001600160e01b0316826000015110155b156127f457856001600160a01b031663160c3a036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e89190613f0c565b6001600160e01b031681525b60006128008383612998565b90506000886001600160a01b03166370a08231886040518263ffffffff1660e01b815260040161283091906133b1565b602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190613a27565b9050600061287f82846129c4565b9a9950505050505050505050565b6000610c208284613f2d565b6000610c206128b084670de0b6b3a76400006128b7565b83516129ee565b6000610c208284613bf8565b60408051602081019091526000815260405180602001604052806128ff6128f9866ec097ce7bc90715b34b9f10000000006128b7565b856129ee565b90529392505050565b60408051602081019091526000815260405180602001604052806128ff856000015185600001516129fa565b6000816001600160e01b038411156129685760405162461bcd60e51b815260040161295f9190613f44565b60405180910390fd5b509192915050565b60008163ffffffff8411156129685760405162461bcd60e51b815260040161295f9190613f44565b60408051602081019091526000815260405180602001604052806128ff8560000151856000015161288d565b60006ec097ce7bc90715b34b9f10000000006129e48484600001516128b7565b610c209190613c2d565b6000610c208284613c2d565b6000610c208284613c41565b604051806101a001604052806060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610200016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b60006001600160a01b0382166105a0565b612b7381612b59565b8114612b7e57600080fd5b50565b80356105a081612b6a565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715612bc757612bc7612b8c565b6040525050565b6000612bd960405190565b9050612be58282612ba2565b919050565b60006001600160401b03821115612c0357612c03612b8c565b601f19601f83011660200192915050565b82818337506000910152565b6000612c33612c2e84612bea565b612bce565b905082815260208101848484011115612c4e57612c4e600080fd5b611c0b848285612c14565b600082601f830112612c6d57612c6d600080fd5b8135610ba0848260208601612c20565b80612b73565b80356105a081612c7d565b600060a08284031215612ca357612ca3600080fd5b612cad60a0612bce565b905081356001600160401b03811115612cc857612cc8600080fd5b612cd484828501612c59565b8252506020612ce584848301612b81565b6020830152506040612cf984828501612b81565b6040830152506060612d0d84828501612c83565b6060830152506080612d2184828501612c83565b60808301525092915050565b60008060408385031215612d4357612d43600080fd5b6000612d4f8585612b81565b92505060208301356001600160401b03811115612d6e57612d6e600080fd5b612d7a85828601612c8e565b9150509250929050565b60005b83811015612d9f578181015183820152602001612d87565b83811115612dae576000848401525b50505050565b6000612dbe825190565b808452602084019350612dd5818560208601612d84565b601f01601f19169290920192915050565b612def81612b59565b82525050565b80612def565b801515612def565b8051610200830190612e158482612de6565b506020820151612e286020850182612df5565b506040820151612e3b6040850182612df5565b506060820151612e4e6060850182612df5565b506080820151612e616080850182612df5565b5060a0820151612e7460a0850182612df5565b5060c0820151612e8760c0850182612df5565b5060e0820151612e9a60e0850182612df5565b50610100820151612eaf610100850182612df5565b50610120820151612ec4610120850182612df5565b50610140820151612ed9610140850182612df5565b50610160820151612eee610160850182612dfb565b50610180820151612f03610180850182612df5565b506101a0820151612f186101a0850182612de6565b506101c0820151612f2d6101c0850182612df5565b506101e0820151612dae6101e0850182612df5565b6000612f4e8383612e03565b50506102000190565b6000612f61825190565b80845260209384019383018060005b83811015612f95578151612f848882612f42565b975060208301925050600101612f70565b509495945050505050565b80516101a080845260009190840190612fb98282612db4565b9150506020830151612fce6020860182612de6565b506040830151612fe16040860182612de6565b506060830151612ff46060860182612df5565b5060808301516130076080860182612df5565b5060a083015184820360a086015261301f8282612db4565b91505060c083015184820360c08601526130398282612db4565b91505060e083015184820360e08601526130538282612db4565b91505061010083015161306a610100860182612de6565b5061012083015161307f610120860182612df5565b50610140830151613094610140860182612df5565b506101608301516130a9610160860182612df5565b506101808301518482036101808601526130c38282612f57565b95945050505050565b60208082528101610c208184612fa0565b60008083601f8401126130f2576130f2600080fd5b5081356001600160401b0381111561310c5761310c600080fd5b60208301915083602082028301111561312757613127600080fd5b9250929050565b6000806020838503121561314457613144600080fd5b82356001600160401b0381111561315d5761315d600080fd5b613169858286016130dd565b92509250509250929050565b805160408301906131868482612de6565b506020820151612dae6020850182612df5565b60006131a58383613175565b505060400190565b60006131b7825190565b80845260209384019383018060005b83811015612f955781516131da8882613199565b9750602083019250506001016131c6565b60208082528101610c2081846131ad565b60006020828403121561321157613211600080fd5b6000610ba08484612b81565b6000610c208383612fa0565b6000613233825190565b8084526020840193508360208202850161324d8560200190565b8060005b85811015613282578484038952815161326a858261321d565b94506020830160209a909a0199925050600101613251565b5091979650505050505050565b60208082528101610c208184613229565b60006132aa825190565b80845260209384019383018060005b83811015612f955781516132cd8882613199565b9750602083019250506001016132b9565b805160009060608401906132f28582612de6565b5060208301516133056020860182612df5565b50604083015184820360408601526130c382826132a0565b60208082528101610c2081846132de565b6000806040838503121561334457613344600080fd5b60006133508585612b81565b9250506020612d7a85828601612b81565b60008060006060848603121561337957613379600080fd5b60006133858686612b81565b935050602061339686828701612b81565b92505060406133a786828701612b81565b9150509250925092565b602081016105a08284612de6565b60006133c9825190565b80845260209384019383018060005b83811015612f955781516133ec8882613199565b9750602083019250506001016133d8565b805160009060808401906134118582612de6565b5060208301516134246020860182612de6565b5060408301516134376040860182612df5565b50606083015184820360608601526130c382826133bf565b6000610c2083836133fd565b6000613465825190565b8084526020840193508360208202850161347f8560200190565b8060005b85811015613282578484038952815161349c858261344f565b94506020830160209a909a0199925050600101613483565b60208082528101610c20818461345b565b6000806000604084860312156134dd576134dd600080fd5b83356001600160401b038111156134f6576134f6600080fd5b613502868287016130dd565b935093505060206133a786828701612b81565b805160c08301906135268482612de6565b5060208201516135396020850182612df5565b50604082015161354c6040850182612df5565b50606082015161355f6060850182612df5565b5060808201516135726080850182612df5565b5060a0820151612dae60a0850182612df5565b60006135918383613515565b505060c00190565b60006135a3825190565b80845260209384019383018060005b83811015612f955781516135c68882613585565b9750602083019250506001016135b2565b60208082528101610c208184613599565b60006105a082612b59565b612b73816135e8565b80356105a0816135f3565b60006020828403121561361c5761361c600080fd5b6000610ba084846135fc565b604081016105a08284613175565b61020081016105a08284612e03565b6000806040838503121561365b5761365b600080fd5b600061335085856135fc565b60c081016105a08284613515565b60006136818383612de6565b505060200190565b6000613693825190565b80845260209384019383018060005b83811015612f955781516136b68882613675565b9750602083019250506001016136a2565b60208082528101610c208184613689565b60006001600160401b038211156136f1576136f1612b8c565b5060209081020190565b6000613709612c2e846136d8565b8381529050602080820190840283018581111561372857613728600080fd5b835b8181101561374c578061373d88826135fc565b8452506020928301920161372a565b5050509392505050565b600082601f83011261376a5761376a600080fd5b8135610ba08482602086016136fb565b60006020828403121561378f5761378f600080fd5b81356001600160401b038111156137a8576137a8600080fd5b610ba084828501613756565b60006137be825190565b80845260209384019383018060005b83811015612f955781516137e18882612f42565b9750602083019250506001016137cd565b60208082528101610c2081846137b4565b80516105a0816135f3565b600061381c612c2e846136d8565b8381529050602080820190840283018581111561383b5761383b600080fd5b835b8181101561374c57806138508882613803565b8452506020928301920161383d565b600082601f83011261387357613873600080fd5b8151610ba084826020860161380e565b60006020828403121561389857613898600080fd5b81516001600160401b038111156138b1576138b1600080fd5b610ba08482850161385f565b60006138cb612c2e84612bea565b9050828152602081018484840111156138e6576138e6600080fd5b611c0b848285612d84565b600082601f83011261390557613905600080fd5b8151610ba08482602086016138bd565b60006060828403121561392a5761392a600080fd5b6139346060612bce565b82519091506001600160401b0381111561395057613950600080fd5b61395c848285016138f1565b82525060208201516001600160401b0381111561397b5761397b600080fd5b613987848285016138f1565b60208301525060408201516001600160401b038111156139a9576139a9600080fd5b6139b5848285016138f1565b60408301525092915050565b6000602082840312156139d6576139d6600080fd5b81516001600160401b038111156139ef576139ef600080fd5b610ba084828501613915565b600060208284031215613a1057613a10600080fd5b6000610ba08484613803565b80516105a081612c7d565b600060208284031215613a3c57613a3c600080fd5b6000610ba08484613a1c565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198203613a8757613a87613a5e565b5060010190565b80516105a081612b6a565b600060a08284031215613aae57613aae600080fd5b613ab860a0612bce565b82519091506001600160401b03811115613ad457613ad4600080fd5b613ae0848285016138f1565b8252506020613af184848301613a8e565b6020830152506040613b0584828501613a8e565b6040830152506060613b1984828501613a1c565b6060830152506080612d2184828501613a1c565b6000613b3b612c2e846136d8565b83815290506020808201908402830185811115613b5a57613b5a600080fd5b835b8181101561374c5780516001600160401b03811115613b7d57613b7d600080fd5b808601613b8a8982613a99565b8552505060209283019201613b5c565b600082601f830112613bae57613bae600080fd5b8151610ba0848260208601613b2d565b600060208284031215613bd357613bd3600080fd5b81516001600160401b03811115613bec57613bec600080fd5b610ba084828501613b9a565b6000816000190483118215151615613c1257613c12613a5e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613c3c57613c3c613c17565b500490565b60008219821115613c5457613c54613a5e565b500190565b600060208284031215613c6e57613c6e600080fd5b81516001600160401b03811115613c8757613c87600080fd5b610ba084828501613a99565b60408101613ca18285612de6565b610c206020830184612de6565b600060208284031215613cc357613cc3600080fd5b6000610ba08484613a8e565b6000613cdd612c2e846136d8565b83815290506020808201908402830185811115613cfc57613cfc600080fd5b835b8181101561374c5780613d118882613803565b84525060209283019201613cfe565b600082601f830112613d3457613d34600080fd5b8151610ba0848260208601613ccf565b600060208284031215613d5957613d59600080fd5b81516001600160401b03811115613d7257613d72600080fd5b610ba084828501613d20565b801515612b73565b80516105a081613d7e565b60008060408385031215613da757613da7600080fd5b6000613db38585613d86565b9250506020612d7a85828601613a1c565b60ff8116612b73565b80516105a081613dc4565b600060208284031215613ded57613ded600080fd5b6000610ba08484613dcd565b6000613e07612c2e846136d8565b83815290506020808201908402830185811115613e2657613e26600080fd5b835b8181101561374c5780613e3b8882613a8e565b84525060209283019201613e28565b600082601f830112613e5e57613e5e600080fd5b8151610ba0848260208601613df9565b600060208284031215613e8357613e83600080fd5b81516001600160401b03811115613e9c57613e9c600080fd5b610ba084828501613e4a565b6001600160e01b038116612b73565b80516105a081613ea8565b63ffffffff8116612b73565b80516105a081613ec2565b60008060408385031215613eef57613eef600080fd5b6000613efb8585613eb7565b9250506020612d7a85828601613ece565b600060208284031215613f2157613f21600080fd5b6000610ba08484613eb7565b600082821015613f3f57613f3f613a5e565b500390565b60208082528101610c208184612db456fea2646970667358221220e2e565f75393a666b91a67ef2aee8b4ef35652b8ba9b421d41e009a1b63abf3b64736f6c634300080d0033",
1085
+ "linkReferences": {},
1086
+ "deployedLinkReferences": {}
1087
+ }