@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,761 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Shortfall",
4
+ "sourceName": "contracts/Shortfall/Shortfall.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "sender",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "calledContract",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "string",
25
+ "name": "methodSignature",
26
+ "type": "string"
27
+ }
28
+ ],
29
+ "name": "Unauthorized",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "ZeroAddressNotAllowed",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "anonymous": false,
39
+ "inputs": [
40
+ {
41
+ "indexed": true,
42
+ "internalType": "address",
43
+ "name": "comptroller",
44
+ "type": "address"
45
+ },
46
+ {
47
+ "indexed": false,
48
+ "internalType": "uint256",
49
+ "name": "auctionStartBlock",
50
+ "type": "uint256"
51
+ },
52
+ {
53
+ "indexed": true,
54
+ "internalType": "address",
55
+ "name": "highestBidder",
56
+ "type": "address"
57
+ },
58
+ {
59
+ "indexed": false,
60
+ "internalType": "uint256",
61
+ "name": "highestBidBps",
62
+ "type": "uint256"
63
+ },
64
+ {
65
+ "indexed": false,
66
+ "internalType": "uint256",
67
+ "name": "seizedRiskFind",
68
+ "type": "uint256"
69
+ },
70
+ {
71
+ "indexed": false,
72
+ "internalType": "contract VToken[]",
73
+ "name": "markets",
74
+ "type": "address[]"
75
+ },
76
+ {
77
+ "indexed": false,
78
+ "internalType": "uint256[]",
79
+ "name": "marketDebt",
80
+ "type": "uint256[]"
81
+ }
82
+ ],
83
+ "name": "AuctionClosed",
84
+ "type": "event"
85
+ },
86
+ {
87
+ "anonymous": false,
88
+ "inputs": [
89
+ {
90
+ "indexed": true,
91
+ "internalType": "address",
92
+ "name": "comptroller",
93
+ "type": "address"
94
+ },
95
+ {
96
+ "indexed": false,
97
+ "internalType": "uint256",
98
+ "name": "auctionStartBlock",
99
+ "type": "uint256"
100
+ }
101
+ ],
102
+ "name": "AuctionRestarted",
103
+ "type": "event"
104
+ },
105
+ {
106
+ "anonymous": false,
107
+ "inputs": [
108
+ {
109
+ "indexed": true,
110
+ "internalType": "address",
111
+ "name": "comptroller",
112
+ "type": "address"
113
+ },
114
+ {
115
+ "indexed": false,
116
+ "internalType": "uint256",
117
+ "name": "auctionStartBlock",
118
+ "type": "uint256"
119
+ },
120
+ {
121
+ "indexed": false,
122
+ "internalType": "enum Shortfall.AuctionType",
123
+ "name": "auctionType",
124
+ "type": "uint8"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "contract VToken[]",
129
+ "name": "markets",
130
+ "type": "address[]"
131
+ },
132
+ {
133
+ "indexed": false,
134
+ "internalType": "uint256[]",
135
+ "name": "marketsDebt",
136
+ "type": "uint256[]"
137
+ },
138
+ {
139
+ "indexed": false,
140
+ "internalType": "uint256",
141
+ "name": "seizedRiskFund",
142
+ "type": "uint256"
143
+ },
144
+ {
145
+ "indexed": false,
146
+ "internalType": "uint256",
147
+ "name": "startBidBps",
148
+ "type": "uint256"
149
+ }
150
+ ],
151
+ "name": "AuctionStarted",
152
+ "type": "event"
153
+ },
154
+ {
155
+ "anonymous": false,
156
+ "inputs": [
157
+ {
158
+ "indexed": false,
159
+ "internalType": "address",
160
+ "name": "sender",
161
+ "type": "address"
162
+ }
163
+ ],
164
+ "name": "AuctionsPaused",
165
+ "type": "event"
166
+ },
167
+ {
168
+ "anonymous": false,
169
+ "inputs": [
170
+ {
171
+ "indexed": false,
172
+ "internalType": "address",
173
+ "name": "sender",
174
+ "type": "address"
175
+ }
176
+ ],
177
+ "name": "AuctionsResumed",
178
+ "type": "event"
179
+ },
180
+ {
181
+ "anonymous": false,
182
+ "inputs": [
183
+ {
184
+ "indexed": true,
185
+ "internalType": "address",
186
+ "name": "comptroller",
187
+ "type": "address"
188
+ },
189
+ {
190
+ "indexed": false,
191
+ "internalType": "uint256",
192
+ "name": "auctionStartBlock",
193
+ "type": "uint256"
194
+ },
195
+ {
196
+ "indexed": false,
197
+ "internalType": "uint256",
198
+ "name": "bidBps",
199
+ "type": "uint256"
200
+ },
201
+ {
202
+ "indexed": true,
203
+ "internalType": "address",
204
+ "name": "bidder",
205
+ "type": "address"
206
+ }
207
+ ],
208
+ "name": "BidPlaced",
209
+ "type": "event"
210
+ },
211
+ {
212
+ "anonymous": false,
213
+ "inputs": [
214
+ {
215
+ "indexed": false,
216
+ "internalType": "uint256",
217
+ "name": "oldIncentiveBps",
218
+ "type": "uint256"
219
+ },
220
+ {
221
+ "indexed": false,
222
+ "internalType": "uint256",
223
+ "name": "newIncentiveBps",
224
+ "type": "uint256"
225
+ }
226
+ ],
227
+ "name": "IncentiveBpsUpdated",
228
+ "type": "event"
229
+ },
230
+ {
231
+ "anonymous": false,
232
+ "inputs": [
233
+ {
234
+ "indexed": false,
235
+ "internalType": "uint8",
236
+ "name": "version",
237
+ "type": "uint8"
238
+ }
239
+ ],
240
+ "name": "Initialized",
241
+ "type": "event"
242
+ },
243
+ {
244
+ "anonymous": false,
245
+ "inputs": [
246
+ {
247
+ "indexed": false,
248
+ "internalType": "uint256",
249
+ "name": "oldMinimumPoolBadDebt",
250
+ "type": "uint256"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "uint256",
255
+ "name": "newMinimumPoolBadDebt",
256
+ "type": "uint256"
257
+ }
258
+ ],
259
+ "name": "MinimumPoolBadDebtUpdated",
260
+ "type": "event"
261
+ },
262
+ {
263
+ "anonymous": false,
264
+ "inputs": [
265
+ {
266
+ "indexed": false,
267
+ "internalType": "address",
268
+ "name": "oldAccessControlManager",
269
+ "type": "address"
270
+ },
271
+ {
272
+ "indexed": false,
273
+ "internalType": "address",
274
+ "name": "newAccessControlManager",
275
+ "type": "address"
276
+ }
277
+ ],
278
+ "name": "NewAccessControlManager",
279
+ "type": "event"
280
+ },
281
+ {
282
+ "anonymous": false,
283
+ "inputs": [
284
+ {
285
+ "indexed": false,
286
+ "internalType": "uint256",
287
+ "name": "oldNextBidderBlockLimit",
288
+ "type": "uint256"
289
+ },
290
+ {
291
+ "indexed": false,
292
+ "internalType": "uint256",
293
+ "name": "newNextBidderBlockLimit",
294
+ "type": "uint256"
295
+ }
296
+ ],
297
+ "name": "NextBidderBlockLimitUpdated",
298
+ "type": "event"
299
+ },
300
+ {
301
+ "anonymous": false,
302
+ "inputs": [
303
+ {
304
+ "indexed": true,
305
+ "internalType": "address",
306
+ "name": "previousOwner",
307
+ "type": "address"
308
+ },
309
+ {
310
+ "indexed": true,
311
+ "internalType": "address",
312
+ "name": "newOwner",
313
+ "type": "address"
314
+ }
315
+ ],
316
+ "name": "OwnershipTransferStarted",
317
+ "type": "event"
318
+ },
319
+ {
320
+ "anonymous": false,
321
+ "inputs": [
322
+ {
323
+ "indexed": true,
324
+ "internalType": "address",
325
+ "name": "previousOwner",
326
+ "type": "address"
327
+ },
328
+ {
329
+ "indexed": true,
330
+ "internalType": "address",
331
+ "name": "newOwner",
332
+ "type": "address"
333
+ }
334
+ ],
335
+ "name": "OwnershipTransferred",
336
+ "type": "event"
337
+ },
338
+ {
339
+ "anonymous": false,
340
+ "inputs": [
341
+ {
342
+ "indexed": true,
343
+ "internalType": "address",
344
+ "name": "oldPoolRegistry",
345
+ "type": "address"
346
+ },
347
+ {
348
+ "indexed": true,
349
+ "internalType": "address",
350
+ "name": "newPoolRegistry",
351
+ "type": "address"
352
+ }
353
+ ],
354
+ "name": "PoolRegistryUpdated",
355
+ "type": "event"
356
+ },
357
+ {
358
+ "anonymous": false,
359
+ "inputs": [
360
+ {
361
+ "indexed": false,
362
+ "internalType": "uint256",
363
+ "name": "oldWaitForFirstBidder",
364
+ "type": "uint256"
365
+ },
366
+ {
367
+ "indexed": false,
368
+ "internalType": "uint256",
369
+ "name": "newWaitForFirstBidder",
370
+ "type": "uint256"
371
+ }
372
+ ],
373
+ "name": "WaitForFirstBidderUpdated",
374
+ "type": "event"
375
+ },
376
+ {
377
+ "inputs": [],
378
+ "name": "acceptOwnership",
379
+ "outputs": [],
380
+ "stateMutability": "nonpayable",
381
+ "type": "function"
382
+ },
383
+ {
384
+ "inputs": [],
385
+ "name": "accessControlManager",
386
+ "outputs": [
387
+ {
388
+ "internalType": "contract IAccessControlManagerV8",
389
+ "name": "",
390
+ "type": "address"
391
+ }
392
+ ],
393
+ "stateMutability": "view",
394
+ "type": "function"
395
+ },
396
+ {
397
+ "inputs": [
398
+ {
399
+ "internalType": "address",
400
+ "name": "",
401
+ "type": "address"
402
+ }
403
+ ],
404
+ "name": "auctions",
405
+ "outputs": [
406
+ {
407
+ "internalType": "uint256",
408
+ "name": "startBlock",
409
+ "type": "uint256"
410
+ },
411
+ {
412
+ "internalType": "enum Shortfall.AuctionType",
413
+ "name": "auctionType",
414
+ "type": "uint8"
415
+ },
416
+ {
417
+ "internalType": "enum Shortfall.AuctionStatus",
418
+ "name": "status",
419
+ "type": "uint8"
420
+ },
421
+ {
422
+ "internalType": "uint256",
423
+ "name": "seizedRiskFund",
424
+ "type": "uint256"
425
+ },
426
+ {
427
+ "internalType": "address",
428
+ "name": "highestBidder",
429
+ "type": "address"
430
+ },
431
+ {
432
+ "internalType": "uint256",
433
+ "name": "highestBidBps",
434
+ "type": "uint256"
435
+ },
436
+ {
437
+ "internalType": "uint256",
438
+ "name": "highestBidBlock",
439
+ "type": "uint256"
440
+ },
441
+ {
442
+ "internalType": "uint256",
443
+ "name": "startBidBps",
444
+ "type": "uint256"
445
+ }
446
+ ],
447
+ "stateMutability": "view",
448
+ "type": "function"
449
+ },
450
+ {
451
+ "inputs": [],
452
+ "name": "auctionsPaused",
453
+ "outputs": [
454
+ {
455
+ "internalType": "bool",
456
+ "name": "",
457
+ "type": "bool"
458
+ }
459
+ ],
460
+ "stateMutability": "view",
461
+ "type": "function"
462
+ },
463
+ {
464
+ "inputs": [
465
+ {
466
+ "internalType": "address",
467
+ "name": "comptroller",
468
+ "type": "address"
469
+ }
470
+ ],
471
+ "name": "closeAuction",
472
+ "outputs": [],
473
+ "stateMutability": "nonpayable",
474
+ "type": "function"
475
+ },
476
+ {
477
+ "inputs": [],
478
+ "name": "convertibleBaseAsset",
479
+ "outputs": [
480
+ {
481
+ "internalType": "address",
482
+ "name": "",
483
+ "type": "address"
484
+ }
485
+ ],
486
+ "stateMutability": "view",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [
491
+ {
492
+ "internalType": "address",
493
+ "name": "convertibleBaseAsset_",
494
+ "type": "address"
495
+ },
496
+ {
497
+ "internalType": "contract IRiskFund",
498
+ "name": "riskFund_",
499
+ "type": "address"
500
+ },
501
+ {
502
+ "internalType": "uint256",
503
+ "name": "minimumPoolBadDebt_",
504
+ "type": "uint256"
505
+ },
506
+ {
507
+ "internalType": "address",
508
+ "name": "accessControlManager_",
509
+ "type": "address"
510
+ }
511
+ ],
512
+ "name": "initialize",
513
+ "outputs": [],
514
+ "stateMutability": "nonpayable",
515
+ "type": "function"
516
+ },
517
+ {
518
+ "inputs": [],
519
+ "name": "minimumPoolBadDebt",
520
+ "outputs": [
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "",
524
+ "type": "uint256"
525
+ }
526
+ ],
527
+ "stateMutability": "view",
528
+ "type": "function"
529
+ },
530
+ {
531
+ "inputs": [],
532
+ "name": "nextBidderBlockLimit",
533
+ "outputs": [
534
+ {
535
+ "internalType": "uint256",
536
+ "name": "",
537
+ "type": "uint256"
538
+ }
539
+ ],
540
+ "stateMutability": "view",
541
+ "type": "function"
542
+ },
543
+ {
544
+ "inputs": [],
545
+ "name": "owner",
546
+ "outputs": [
547
+ {
548
+ "internalType": "address",
549
+ "name": "",
550
+ "type": "address"
551
+ }
552
+ ],
553
+ "stateMutability": "view",
554
+ "type": "function"
555
+ },
556
+ {
557
+ "inputs": [],
558
+ "name": "pauseAuctions",
559
+ "outputs": [],
560
+ "stateMutability": "nonpayable",
561
+ "type": "function"
562
+ },
563
+ {
564
+ "inputs": [],
565
+ "name": "pendingOwner",
566
+ "outputs": [
567
+ {
568
+ "internalType": "address",
569
+ "name": "",
570
+ "type": "address"
571
+ }
572
+ ],
573
+ "stateMutability": "view",
574
+ "type": "function"
575
+ },
576
+ {
577
+ "inputs": [
578
+ {
579
+ "internalType": "address",
580
+ "name": "comptroller",
581
+ "type": "address"
582
+ },
583
+ {
584
+ "internalType": "uint256",
585
+ "name": "bidBps",
586
+ "type": "uint256"
587
+ },
588
+ {
589
+ "internalType": "uint256",
590
+ "name": "auctionStartBlock",
591
+ "type": "uint256"
592
+ }
593
+ ],
594
+ "name": "placeBid",
595
+ "outputs": [],
596
+ "stateMutability": "nonpayable",
597
+ "type": "function"
598
+ },
599
+ {
600
+ "inputs": [],
601
+ "name": "poolRegistry",
602
+ "outputs": [
603
+ {
604
+ "internalType": "address",
605
+ "name": "",
606
+ "type": "address"
607
+ }
608
+ ],
609
+ "stateMutability": "view",
610
+ "type": "function"
611
+ },
612
+ {
613
+ "inputs": [],
614
+ "name": "renounceOwnership",
615
+ "outputs": [],
616
+ "stateMutability": "nonpayable",
617
+ "type": "function"
618
+ },
619
+ {
620
+ "inputs": [
621
+ {
622
+ "internalType": "address",
623
+ "name": "comptroller",
624
+ "type": "address"
625
+ }
626
+ ],
627
+ "name": "restartAuction",
628
+ "outputs": [],
629
+ "stateMutability": "nonpayable",
630
+ "type": "function"
631
+ },
632
+ {
633
+ "inputs": [],
634
+ "name": "resumeAuctions",
635
+ "outputs": [],
636
+ "stateMutability": "nonpayable",
637
+ "type": "function"
638
+ },
639
+ {
640
+ "inputs": [
641
+ {
642
+ "internalType": "address",
643
+ "name": "accessControlManager_",
644
+ "type": "address"
645
+ }
646
+ ],
647
+ "name": "setAccessControlManager",
648
+ "outputs": [],
649
+ "stateMutability": "nonpayable",
650
+ "type": "function"
651
+ },
652
+ {
653
+ "inputs": [
654
+ {
655
+ "internalType": "address",
656
+ "name": "comptroller",
657
+ "type": "address"
658
+ }
659
+ ],
660
+ "name": "startAuction",
661
+ "outputs": [],
662
+ "stateMutability": "nonpayable",
663
+ "type": "function"
664
+ },
665
+ {
666
+ "inputs": [
667
+ {
668
+ "internalType": "address",
669
+ "name": "newOwner",
670
+ "type": "address"
671
+ }
672
+ ],
673
+ "name": "transferOwnership",
674
+ "outputs": [],
675
+ "stateMutability": "nonpayable",
676
+ "type": "function"
677
+ },
678
+ {
679
+ "inputs": [
680
+ {
681
+ "internalType": "uint256",
682
+ "name": "_incentiveBps",
683
+ "type": "uint256"
684
+ }
685
+ ],
686
+ "name": "updateIncentiveBps",
687
+ "outputs": [],
688
+ "stateMutability": "nonpayable",
689
+ "type": "function"
690
+ },
691
+ {
692
+ "inputs": [
693
+ {
694
+ "internalType": "uint256",
695
+ "name": "_minimumPoolBadDebt",
696
+ "type": "uint256"
697
+ }
698
+ ],
699
+ "name": "updateMinimumPoolBadDebt",
700
+ "outputs": [],
701
+ "stateMutability": "nonpayable",
702
+ "type": "function"
703
+ },
704
+ {
705
+ "inputs": [
706
+ {
707
+ "internalType": "uint256",
708
+ "name": "_nextBidderBlockLimit",
709
+ "type": "uint256"
710
+ }
711
+ ],
712
+ "name": "updateNextBidderBlockLimit",
713
+ "outputs": [],
714
+ "stateMutability": "nonpayable",
715
+ "type": "function"
716
+ },
717
+ {
718
+ "inputs": [
719
+ {
720
+ "internalType": "address",
721
+ "name": "poolRegistry_",
722
+ "type": "address"
723
+ }
724
+ ],
725
+ "name": "updatePoolRegistry",
726
+ "outputs": [],
727
+ "stateMutability": "nonpayable",
728
+ "type": "function"
729
+ },
730
+ {
731
+ "inputs": [
732
+ {
733
+ "internalType": "uint256",
734
+ "name": "_waitForFirstBidder",
735
+ "type": "uint256"
736
+ }
737
+ ],
738
+ "name": "updateWaitForFirstBidder",
739
+ "outputs": [],
740
+ "stateMutability": "nonpayable",
741
+ "type": "function"
742
+ },
743
+ {
744
+ "inputs": [],
745
+ "name": "waitForFirstBidder",
746
+ "outputs": [
747
+ {
748
+ "internalType": "uint256",
749
+ "name": "",
750
+ "type": "uint256"
751
+ }
752
+ ],
753
+ "stateMutability": "view",
754
+ "type": "function"
755
+ }
756
+ ],
757
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b62000111565b600054610100900460ff1615620000565760405162461bcd60e51b81526004016200004d90620000af565b60405180910390fd5b60005460ff90811614620000ad576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620000a49162000101565b60405180910390a15b565b60208082528101620000fb81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff8216815260208101620000fb565b61359a80620001216000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806379ba5097116100de578063afcff50f11610097578063c8ecc0d311610071578063c8ecc0d314610377578063e30c39781461038b578063e630fee01461039c578063f2fde38b146103af57600080fd5b8063afcff50f14610338578063b4a0bdf31461034b578063be2030941461036457600080fd5b806379ba5097146102d6578063892149a3146102de5780638da5cb5b146102e857806391f8e69414610302578063a23926e11461030a578063ae8ddcb01461032557600080fd5b80634b34e5661161014b57806367cd03ab1161012557806367cd03ab1461029f5780636f254c32146102b2578063715018a6146102c557806373d73f40146102cd57600080fd5b80634b34e5661461027157806351b2fd01146102845780635be3fe1b1461029757600080fd5b806304717aca146101935780630db011d0146101a85780630e32cb86146101bb5780631d59410a146101ce578063264ad3d4146102485780634075fa0f1461025e575b600080fd5b6101a66101a1366004612394565b6103c2565b005b6101a66101b63660046123e4565b61094d565b6101a66101c93660046123e4565b610a36565b61022b6101dc3660046123e4565b610103602052600090815260409020805460018201546003830154600484015460058501546006860154600790960154949560ff8086169661010090960416946001600160a01b039093169288565b60405161023f98979695949392919061248d565b60405180910390f35b61025160fd5481565b60405161023f9190612504565b6101a661026c3660046123e4565b610a4a565b6101a661027f3660046123e4565b610a77565b6101a6610292366004612512565b610fec565b6101a6611053565b6101a66102ad366004612512565b6110ec565b6101a66102c0366004612512565b611184565b6101a66111ff565b61025160ff5481565b6101a6611213565b6102516101015481565b6033546001600160a01b03165b60405161023f9190612533565b6101a6611248565b610100546103189060ff1681565b60405161023f9190612549565b6101a66103333660046123e4565b6112da565b60fb546102f5906001600160a01b031681565b6097546001600160a01b031660405161023f9190612592565b6101a66103723660046125bf565b61133d565b610102546102f5906001600160a01b031681565b6065546001600160a01b03166102f5565b6101a66103aa366004612512565b6114a5565b6101a66103bd3660046123e4565b611501565b6103ca611572565b6001600160a01b0383166000908152610103602052604090208054821461040c5760405162461bcd60e51b81526004016104039061265a565b60405180910390fd5b6104158161159b565b6104315760405162461bcd60e51b815260040161040390612694565b61043a816115d0565b156104575760405162461bcd60e51b8152600401610403906126d8565b600083116104775760405162461bcd60e51b81526004016104039061271c565b6127108311156104995760405162461bcd60e51b815260040161040390612772565b600060018083015460ff16908111156104b4576104b461240d565b148015610500575060048101546001600160a01b0316158015906104db5750806005015483115b80610500575060048101546001600160a01b0316158015610500575080600701548310155b8061056b575060018181015460ff168181111561051f5761051f61240d565b14801561056b575060048101546001600160a01b0316158015906105465750806005015483105b8061056b575060048101546001600160a01b031615801561056b575080600701548311155b6105875760405162461bcd60e51b8152600401610403906127b6565b600281015460005b818110156108d15760008360020182815481106105ae576105ae6127c6565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062491906127e7565b60048601549091506001600160a01b0316156106a05760048501546002860180546106a0926001600160a01b0316916009890191600091908890811061066c5761066c6127c6565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549084169190611604565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906106cf903090600401612533565b602060405180830381865afa1580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107109190612813565b9050600060018088015460ff169081111561072d5761072d61240d565b036107a9576000612710898860080160008a6002018981548110610753576107536127c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610782919061284a565b61078c919061287f565b90506107a36001600160a01b03841633308461165a565b506107fe565b6107fe33308860080160008a60020189815481106107c9576107c96127c6565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190205490861692919061165a565b6040516370a0823160e01b81526000906001600160a01b038416906370a082319061082d903090600401612533565b602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190612813565b905061087a8282612893565b876009016000896002018881548110610895576108956127c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902055506108ca92508391506128aa9050565b905061058f565b506004820180546001600160a01b031916339081179091556005830185905543600684015582546040516001600160a01b038816917f5485cf82060404805b51f48c0c4afa3cec4a9e5755c0131e1243553f0eebb9a391610934919089906128c4565b60405180910390a35050610948600160c955565b505050565b6001600160a01b0381166000908152610103602052604090206101005460ff161561098a5760405162461bcd60e51b815260040161040390612909565b6109938161159b565b6109af5760405162461bcd60e51b815260040161040390612694565b6109b8816115d0565b6109d45760405162461bcd60e51b815260040161040390612965565b60018101805461ff00191661020017905580546040516001600160a01b038416917faca104a4f0d6f116782afaefa8b644e86d53857ff9151824131b726b49a858d491610a219190612504565b60405180910390a2610a3282611688565b5050565b610a3e611d91565b610a4781611dbb565b50565b6101005460ff1615610a6e5760405162461bcd60e51b81526004016104039061299f565b610a4781611688565b610a7f611572565b6001600160a01b038116600090815261010360205260409020610aa18161159b565b610abd5760405162461bcd60e51b815260040161040390612694565b60ff548160060154610acf91906129af565b43118015610ae9575060048101546001600160a01b031615155b610b055760405162461bcd60e51b815260040161040390612a11565b600281015460008167ffffffffffffffff811115610b2557610b25612a21565b604051908082528060200260200182016040528015610b4e578160200160208202803683370190505b5060018401805461ff001916610200179055905060005b82811015610e99576000846002018281548110610b8457610b846127c6565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa91906127e7565b90506000816001600160a01b03166370a08231886002018681548110610c2257610c226127c6565b6000918252602090912001546040516001600160e01b031960e084901b168152610c58916001600160a01b031690600401612533565b602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c999190612813565b9050610d20876002018581548110610cb357610cb36127c6565b9060005260206000200160009054906101000a90046001600160a01b03168860090160008a6002018881548110610cec57610cec6127c6565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549085169190611604565b6000826001600160a01b03166370a08231896002018781548110610d4657610d466127c6565b6000918252602090912001546040516001600160e01b031960e084901b168152610d7c916001600160a01b031690600401612533565b602060405180830381865afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd9190612813565b9050610dc98282612893565b868681518110610ddb57610ddb6127c6565b602002602001018181525050876002018581548110610dfc57610dfc6127c6565b60009182526020909120015486516001600160a01b039091169063ef60450c90889088908110610e2e57610e2e6127c6565b60200260200101516040518263ffffffff1660e01b8152600401610e529190612504565b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b505050505050505080610e92906128aa565b9050610b65565b5060008060018086015460ff1690811115610eb657610eb661240d565b03610ec657506003830154610eea565b61271084600501548560030154610edd919061284a565b610ee7919061287f565b90505b60fc54604051630a9837c560e01b81526000916001600160a01b031690630a9837c590610f1d9089908690600401612a37565b6020604051808303816000875af1158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190612813565b600486015461010254919250610f83916001600160a01b03908116911684611604565b6004850154855460058701546040516001600160a01b03938416938a16927ff50338be3ffa7cdbebca76c758cfd1745fb4abe5bd3736c2dbf0cc6483a7b93f92610fd592879060028d01908b90612b0d565b60405180910390a35050505050610a47600160c955565b61100d60405180606001604052806021815260200161350060219139611e34565b60fd8054908290556040517f85814f0246fcd999c88af70c9e6238211e79444ff07ec745b80aed19ddb268c89061104790839085906128c4565b60405180910390a15050565b6110846040518060400160405280601081526020016f726573756d6541756374696f6e73282960801b815250611e34565b6101005460ff166110a75760405162461bcd60e51b815260040161040390612b8f565b610100805460ff191690556040517f91b812e075fb9190eebe2d938c00a7179d150156469a467ec60a290035f4635a906110e2903390612533565b60405180910390a1565b61112a6040518060400160405280601b81526020017f757064617465496e63656e746976654270732875696e74323536290000000000815250611e34565b8060000361114a5760405162461bcd60e51b815260040161040390612bd3565b60fe8054908290556040517f3d438fa36c5052935d12a6925d1660c8150c74ef11ca672d4279bc6fd41b8bcf9061104790839085906128c4565b6111a560405180606001604052806023815260200161352160239139611e34565b806000036111c55760405162461bcd60e51b815260040161040390612c23565b60ff8054908290556040517f3f22dba09ee9845bd2be6926fea5337a0db935ca059cbb205d62174783e296649061104790839085906128c4565b611207611d91565b6112116000611ece565b565b60655433906001600160a01b0316811461123f5760405162461bcd60e51b815260040161040390612c79565b610a4781611ece565b6112786040518060400160405280600f81526020016e706175736541756374696f6e73282960881b815250611e34565b6101005460ff161561129c5760405162461bcd60e51b815260040161040390612cbd565b610100805460ff191660011790556040517fc1be5163c9ebecf05bfbd6c6ae7c2b6ce2d3c43088dffaf5270cbf9516150499906110e2903390612533565b6112e2611d91565b6112eb81611ee7565b60fb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a35050565b600054610100900460ff161580801561135d5750600054600160ff909116105b806113775750303b158015611377575060005460ff166001145b6113935760405162461bcd60e51b815260040161040390612d18565b6000805460ff1916600117905580156113b6576000805461ff0019166101001790555b6113bf85611ee7565b6113c884611ee7565b826000036113e85760405162461bcd60e51b815260040161040390612d5c565b6113f0611f0e565b6113f982611f3d565b611401611f64565b60fd83905561010280546001600160a01b038088166001600160a01b03199283161790925560fc805492871692909116919091179055606461010181905560ff556103e860fe55610100805460ff19169055801561149e576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061149590600190612d80565b60405180910390a15b5050505050565b6114c660405180606001604052806021815260200161354460219139611e34565b6101018054908290556040517f2a5be8a6b827e16c392d22522295794d6baff64565057a17b1f14c9d6c125a609061104790839085906128c4565b611509611d91565b606580546001600160a01b0383166001600160a01b0319909116811790915561153a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600260c954036115945760405162461bcd60e51b815260040161040390612dc2565b600260c955565b8054600090158015906115ca5750600180830154610100900460ff1660028111156115c8576115c861240d565b145b92915050565b60048101546000906001600160a01b0316158080156115fd57506101015483546115fa91906129af565b43115b9392505050565b6109488363a9059cbb60e01b8484604051602401611623929190612a37565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f93565b61167b846323b872dd60e01b85858560405160240161162393929190612dd2565b50505050565b600160c955565b60fb54604051637aee632d60e01b81526000916001600160a01b031690637aee632d906116b9908590600401612533565b600060405180830381865afa1580156116d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116fe9190810190612f9b565b9050816001600160a01b031681604001516001600160a01b0316146117355760405162461bcd60e51b81526004016104039061301a565b6001600160a01b038216600090815261010360205260409020805415801561177a575060006001820154610100900460ff1660028111156117785761177861240d565b145b806117a2575060026001820154610100900460ff1660028111156117a0576117a061240d565b145b6117be5760405162461bcd60e51b815260040161040390613054565b600060058201819055600682018190556002820154905b818110156118295760008360020182815481106117f4576117f46127c6565b60009182526020808320909101546001600160a01b03168252600886019052604081205550611822816128aa565b90506117d5565b506118386002830160006122bb565b600061184385612025565b90508051915060006118548661208d565b90506000808467ffffffffffffffff81111561187257611872612a21565b60405190808252806020026020018201604052801561189b578160200160208202803683370190505b5090508467ffffffffffffffff8111156118b7576118b7612a21565b6040519080825280602002602001820160405280156118e0578160200160208202803683370190505b5080516118f79160028901916020909101906122d9565b5060005b85811015611b81576000858281518110611917576119176127c6565b60200260200101516001600160a01b031663bbcac5576040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119809190612813565b9050846001600160a01b03166396e85ced8784815181106119a3576119a36127c6565b60200260200101516040518263ffffffff1660e01b81526004016119c79190612533565b600060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b505050506000670de0b6b3a764000082876001600160a01b031663fc57d4df8a8781518110611a2657611a266127c6565b60200260200101516040518263ffffffff1660e01b8152600401611a4a9190612533565b602060405180830381865afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190612813565b611a95919061284a565b611a9f919061287f565b9050611aab81866129af565b9450868381518110611abf57611abf6127c6565b6020026020010151896002018481548110611adc57611adc6127c6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081896008016000898681518110611b2357611b236127c6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555081848481518110611b6257611b626127c6565b602002602001018181525050505080611b7a906128aa565b90506118fb565b5060fd54821015611ba45760405162461bcd60e51b815260040161040390613098565b60fc5460405163f481395b60e01b81526000916001600160a01b03169063f481395b90611bd5908c90600401612533565b602060405180830381865afa158015611bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c169190612813565b90506000819050600061271060fe5486611c30919061284a565b611c3a919061287f565b611c4490866129af565b9050828110611ca15760fe54611c5c906127106129af565b611c66908661284a565b82611c736127108061284a565b611c7d919061284a565b611c87919061287f565b60078a015560018901805460ff1916905560009150611cc8565b80611cac8184612893565b60018b8101805460ff1916909117905561271060078c01559250505b611cd28284612893565b60038a01554389556001808a01805461ff00191661010083021790555060008960040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a6001600160a01b03167f56c1f0c5ea96c78d614c0246b1915086a325f09ce15526bd5d69b50232d681328a600001548b60010160009054906101000a900460ff168c600201888e600301548f60070154604051611d7c969594939291906130a8565b60405180910390a25050505050505050505050565b6033546001600160a01b031633146112115760405162461bcd60e51b815260040161040390613137565b6001600160a01b038116611de15760405162461bcd60e51b815260040161040390613189565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906110479083908590613199565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90611e6790339086906004016131e6565b602060405180830381865afa158015611e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea89190613219565b905080610a3257333083604051634a3fa29360e01b81526004016104039392919061323a565b606580546001600160a01b0319169055610a47816120f1565b6001600160a01b038116610a47576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16611f355760405162461bcd60e51b8152600401610403906132b8565b611211612143565b600054610100900460ff16610a3e5760405162461bcd60e51b8152600401610403906132b8565b600054610100900460ff16611f8b5760405162461bcd60e51b8152600401610403906132b8565b611211612173565b6000611fe8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661219a9092919063ffffffff16565b90508051600014806120095750808060200190518101906120099190613219565b6109485760405162461bcd60e51b81526004016104039061330f565b6060816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612065573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ca91908101906133cd565b6000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190613408565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661216a5760405162461bcd60e51b8152600401610403906132b8565b61121133611ece565b600054610100900460ff166116815760405162461bcd60e51b8152600401610403906132b8565b60606121a984846000856121b1565b949350505050565b6060824710156121d35760405162461bcd60e51b81526004016104039061346c565b600080866001600160a01b031685876040516121ef919061349e565b60006040518083038185875af1925050503d806000811461222c576040519150601f19603f3d011682016040523d82523d6000602084013e612231565b606091505b50915091506122428783838761224d565b979650505050505050565b6060831561228c578251600003612285576001600160a01b0385163b6122855760405162461bcd60e51b8152600401610403906134de565b50816121a9565b6121a983838151156122a15781518083602001fd5b8060405162461bcd60e51b815260040161040391906134ee565b5080546000825590600052602060002090810190610a47919061233e565b82805482825590600052602060002090810192821561232e579160200282015b8281111561232e57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906122f9565b5061233a92915061233e565b5090565b5b8082111561233a576000815560010161233f565b60006001600160a01b0382166115ca565b61236d81612353565b8114610a4757600080fd5b80356115ca81612364565b8061236d565b80356115ca81612383565b6000806000606084860312156123ac576123ac600080fd5b60006123b88686612378565b93505060206123c986828701612389565b92505060406123da86828701612389565b9150509250925092565b6000602082840312156123f9576123f9600080fd5b60006121a98484612378565b805b82525050565b634e487b7160e01b600052602160045260246000fd5b60028110610a4757610a4761240d565b8061243d81612423565b919050565b60006115ca82612433565b61240781612442565b60038110610a4757610a4761240d565b8061243d81612456565b60006115ca82612466565b61240781612470565b61240781612353565b610100810161249c828b612405565b6124a9602083018a61244d565b6124b6604083018961247b565b6124c36060830188612405565b6124d06080830187612484565b6124dd60a0830186612405565b6124ea60c0830185612405565b6124f760e0830184612405565b9998505050505050505050565b602081016115ca8284612405565b60006020828403121561252757612527600080fd5b60006121a98484612389565b602081016115ca8284612484565b801515612407565b602081016115ca8284612541565b60006115ca6001600160a01b0383165b6001600160a01b031690565b60006115ca82612557565b60006115ca82612573565b6124078161257e565b602081016115ca8284612589565b60006115ca82612353565b61236d816125a0565b80356115ca816125ab565b600080600080608085870312156125d8576125d8600080fd5b60006125e48787612378565b94505060206125f5878288016125b4565b935050604061260687828801612389565b925050606061261787828801612378565b91505092959194509250565b601a81526000602082017f61756374696f6e20686173206265656e20726573746172746564000000000000815291505b5060200190565b602080825281016115ca81612623565b601381526000602082017237379037b716b3b7b4b7339030bab1ba34b7b760691b81529150612653565b602080825281016115ca8161266a565b601c81526000602082017f61756374696f6e206973207374616c652c20726573746172742069740000000081529150612653565b602080825281016115ca816126a4565b601b81526000602082017f626173697320706f696e74732063616e6e6f74206265207a65726f000000000081529150612653565b602080825281016115ca816126e8565b602681526000602082017f626173697320706f696e74732063616e6e6f74206265206d6f7265207468616e81526502031303030360d41b602082015291505b5060400190565b602080825281016115ca8161272c565b601b81526000602082017f796f757220626964206973206e6f74207468652068696768657374000000000081529150612653565b602080825281016115ca81612782565b634e487b7160e01b600052603260045260246000fd5b80516115ca81612364565b6000602082840312156127fc576127fc600080fd5b60006121a984846127dc565b80516115ca81612383565b60006020828403121561282857612828600080fd5b60006121a98484612808565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561286457612864612834565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261288e5761288e612869565b500490565b6000828210156128a5576128a5612834565b500390565b600060001982036128bd576128bd612834565b5060010190565b604081016128d28285612405565b6115fd6020830184612405565b6013815260006020820172185d58dd1a5bdb9cc8185c99481c185d5cd959606a1b81529150612653565b602080825281016115ca816128df565b602f81526000602082017f796f75206e65656420746f207761697420666f72206d6f72652074696d65206681526e37b9103334b939ba103134b23232b960891b6020820152915061276b565b602080825281016115ca81612919565b6013815260006020820172105d58dd1a5bdb9cc8185c99481c185d5cd959606a1b81529150612653565b602080825281016115ca81612975565b600082198211156129c2576129c2612834565b500190565b602d81526000602082017f77616974696e6720666f72206e657874206269646465722e2063616e6e6f742081526c31b637b9b29030bab1ba34b7b760991b6020820152915061276b565b602080825281016115ca816129c7565b634e487b7160e01b600052604160045260246000fd5b604081016128d28285612484565b6000612a518383612589565b505060200190565b60006115ca82612567565b60006115ca8254612a59565b6000612a7a825490565b808452600083815260208082209501949081905b83811015612ab857612a9f82612a64565b612aa98882612a45565b97505060019182019101612a8e565b509495945050505050565b6000612a518383612405565b6000612ad9825190565b80845260209384019383018060005b83811015612ab8578151612afc8882612ac3565b975060208301925050600101612ae8565b60a08101612b1b8288612405565b612b286020830187612405565b612b356040830186612405565b8181036060830152612b478185612a70565b905081810360808301526122428184612acf565b601781526000602082017f41756374696f6e7320617265206e6f742070617573656400000000000000000081529150612653565b602080825281016115ca81612b5b565b601a81526000602082017f696e63656e74697665427073206d757374206e6f74206265203000000000000081529150612653565b602080825281016115ca81612b9f565b602381526000602082017f5f6e657874426964646572426c6f636b4c696d6974206d757374206e6f74206281526206520360ec1b6020820152915061276b565b602080825281016115ca81612be3565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061276b565b602080825281016115ca81612c33565b601b81526000602082017f41756374696f6e732061726520616c726561647920706175736564000000000081529150612653565b602080825281016115ca81612c89565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061276b565b602080825281016115ca81612ccd565b601d81526000602082017f696e76616c6964206d696e696d756d20706f6f6c20626164206465627400000081529150612653565b602080825281016115ca81612d28565b600060ff82166115ca565b61240781612d6c565b602081016115ca8284612d77565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150612653565b602080825281016115ca81612d8e565b60608101612de08286612484565b612ded6020830185612484565b6121a96040830184612405565b601f19601f830116810181811067ffffffffffffffff82111715612e2057612e20612a21565b6040525050565b6000612e3260405190565b905061243d8282612dfa565b600067ffffffffffffffff821115612e5857612e58612a21565b601f19601f83011660200192915050565b60005b83811015612e84578181015183820152602001612e6c565b8381111561167b5750506000910152565b6000612ea8612ea384612e3e565b612e27565b905082815260208101848484011115612ec357612ec3600080fd5b612ece848285612e69565b509392505050565b600082601f830112612eea57612eea600080fd5b81516121a9848260208601612e95565b600060a08284031215612f0f57612f0f600080fd5b612f1960a0612e27565b825190915067ffffffffffffffff811115612f3657612f36600080fd5b612f4284828501612ed6565b8252506020612f53848483016127dc565b6020830152506040612f67848285016127dc565b6040830152506060612f7b84828501612808565b6060830152506080612f8f84828501612808565b60808301525092915050565b600060208284031215612fb057612fb0600080fd5b815167ffffffffffffffff811115612fca57612fca600080fd5b6121a984828501612efa565b602781526000602082017f636f6d7074726f6c6c657220646f65736e277420657869737420706f6f6c20728152666567697374727960c81b6020820152915061276b565b602080825281016115ca81612fd6565b601381526000602082017261756374696f6e206973206f6e2d676f696e6760681b81529150612653565b602080825281016115ca8161302a565b601881526000602082017f706f6f6c20626164206465627420697320746f6f206c6f77000000000000000081529150612653565b602080825281016115ca81613064565b60c081016130b68289612405565b6130c3602083018861244d565b81810360408301526130d58187612a70565b905081810360608301526130e98186612acf565b90506130f86080830185612405565b61224260a0830184612405565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000612653565b602080825281016115ca81613105565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061276b565b602080825281016115ca81613147565b604081016131a78285612484565b6115fd6020830184612484565b60006131be825190565b8084526020840193506131d5818560208601612e69565b601f01601f19169290920192915050565b604081016131f48285612484565b81810360208301526121a981846131b4565b80151561236d565b80516115ca81613206565b60006020828403121561322e5761322e600080fd5b60006121a9848461320e565b606081016132488286612484565b6132556020830185612484565b818103604083015261326781846131b4565b95945050505050565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061276b565b602080825281016115ca81613270565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061276b565b602080825281016115ca816132c8565b600067ffffffffffffffff82111561333957613339612a21565b5060209081020190565b80516115ca816125ab565b600061335c612ea38461331f565b8381529050602080820190840283018581111561337b5761337b600080fd5b835b8181101561339f57806133908882613343565b8452506020928301920161337d565b5050509392505050565b600082601f8301126133bd576133bd600080fd5b81516121a984826020860161334e565b6000602082840312156133e2576133e2600080fd5b815167ffffffffffffffff8111156133fc576133fc600080fd5b6121a9848285016133a9565b60006020828403121561341d5761341d600080fd5b60006121a98484613343565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061276b565b602080825281016115ca81613429565b6000613486825190565b613494818560208601612e69565b9290920192915050565b60006115fd828461347c565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612653565b602080825281016115ca816134aa565b602080825281016115fd81846131b456fe7570646174654d696e696d756d506f6f6c426164446562742875696e74323536297570646174654e657874426964646572426c6f636b4c696d69742875696e743235362975706461746557616974466f7246697273744269646465722875696e7432353629a26469706673582212206b9334142b37961931eb74dd101eb6f9af4a486273d7a14172c6a6d9cc2cbac564736f6c634300080d0033",
758
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806379ba5097116100de578063afcff50f11610097578063c8ecc0d311610071578063c8ecc0d314610377578063e30c39781461038b578063e630fee01461039c578063f2fde38b146103af57600080fd5b8063afcff50f14610338578063b4a0bdf31461034b578063be2030941461036457600080fd5b806379ba5097146102d6578063892149a3146102de5780638da5cb5b146102e857806391f8e69414610302578063a23926e11461030a578063ae8ddcb01461032557600080fd5b80634b34e5661161014b57806367cd03ab1161012557806367cd03ab1461029f5780636f254c32146102b2578063715018a6146102c557806373d73f40146102cd57600080fd5b80634b34e5661461027157806351b2fd01146102845780635be3fe1b1461029757600080fd5b806304717aca146101935780630db011d0146101a85780630e32cb86146101bb5780631d59410a146101ce578063264ad3d4146102485780634075fa0f1461025e575b600080fd5b6101a66101a1366004612394565b6103c2565b005b6101a66101b63660046123e4565b61094d565b6101a66101c93660046123e4565b610a36565b61022b6101dc3660046123e4565b610103602052600090815260409020805460018201546003830154600484015460058501546006860154600790960154949560ff8086169661010090960416946001600160a01b039093169288565b60405161023f98979695949392919061248d565b60405180910390f35b61025160fd5481565b60405161023f9190612504565b6101a661026c3660046123e4565b610a4a565b6101a661027f3660046123e4565b610a77565b6101a6610292366004612512565b610fec565b6101a6611053565b6101a66102ad366004612512565b6110ec565b6101a66102c0366004612512565b611184565b6101a66111ff565b61025160ff5481565b6101a6611213565b6102516101015481565b6033546001600160a01b03165b60405161023f9190612533565b6101a6611248565b610100546103189060ff1681565b60405161023f9190612549565b6101a66103333660046123e4565b6112da565b60fb546102f5906001600160a01b031681565b6097546001600160a01b031660405161023f9190612592565b6101a66103723660046125bf565b61133d565b610102546102f5906001600160a01b031681565b6065546001600160a01b03166102f5565b6101a66103aa366004612512565b6114a5565b6101a66103bd3660046123e4565b611501565b6103ca611572565b6001600160a01b0383166000908152610103602052604090208054821461040c5760405162461bcd60e51b81526004016104039061265a565b60405180910390fd5b6104158161159b565b6104315760405162461bcd60e51b815260040161040390612694565b61043a816115d0565b156104575760405162461bcd60e51b8152600401610403906126d8565b600083116104775760405162461bcd60e51b81526004016104039061271c565b6127108311156104995760405162461bcd60e51b815260040161040390612772565b600060018083015460ff16908111156104b4576104b461240d565b148015610500575060048101546001600160a01b0316158015906104db5750806005015483115b80610500575060048101546001600160a01b0316158015610500575080600701548310155b8061056b575060018181015460ff168181111561051f5761051f61240d565b14801561056b575060048101546001600160a01b0316158015906105465750806005015483105b8061056b575060048101546001600160a01b031615801561056b575080600701548311155b6105875760405162461bcd60e51b8152600401610403906127b6565b600281015460005b818110156108d15760008360020182815481106105ae576105ae6127c6565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062491906127e7565b60048601549091506001600160a01b0316156106a05760048501546002860180546106a0926001600160a01b0316916009890191600091908890811061066c5761066c6127c6565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549084169190611604565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906106cf903090600401612533565b602060405180830381865afa1580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107109190612813565b9050600060018088015460ff169081111561072d5761072d61240d565b036107a9576000612710898860080160008a6002018981548110610753576107536127c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610782919061284a565b61078c919061287f565b90506107a36001600160a01b03841633308461165a565b506107fe565b6107fe33308860080160008a60020189815481106107c9576107c96127c6565b60009182526020808320909101546001600160a01b03908116845290830193909352604090910190205490861692919061165a565b6040516370a0823160e01b81526000906001600160a01b038416906370a082319061082d903090600401612533565b602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190612813565b905061087a8282612893565b876009016000896002018881548110610895576108956127c6565b60009182526020808320909101546001600160a01b03168352820192909252604001902055506108ca92508391506128aa9050565b905061058f565b506004820180546001600160a01b031916339081179091556005830185905543600684015582546040516001600160a01b038816917f5485cf82060404805b51f48c0c4afa3cec4a9e5755c0131e1243553f0eebb9a391610934919089906128c4565b60405180910390a35050610948600160c955565b505050565b6001600160a01b0381166000908152610103602052604090206101005460ff161561098a5760405162461bcd60e51b815260040161040390612909565b6109938161159b565b6109af5760405162461bcd60e51b815260040161040390612694565b6109b8816115d0565b6109d45760405162461bcd60e51b815260040161040390612965565b60018101805461ff00191661020017905580546040516001600160a01b038416917faca104a4f0d6f116782afaefa8b644e86d53857ff9151824131b726b49a858d491610a219190612504565b60405180910390a2610a3282611688565b5050565b610a3e611d91565b610a4781611dbb565b50565b6101005460ff1615610a6e5760405162461bcd60e51b81526004016104039061299f565b610a4781611688565b610a7f611572565b6001600160a01b038116600090815261010360205260409020610aa18161159b565b610abd5760405162461bcd60e51b815260040161040390612694565b60ff548160060154610acf91906129af565b43118015610ae9575060048101546001600160a01b031615155b610b055760405162461bcd60e51b815260040161040390612a11565b600281015460008167ffffffffffffffff811115610b2557610b25612a21565b604051908082528060200260200182016040528015610b4e578160200160208202803683370190505b5060018401805461ff001916610200179055905060005b82811015610e99576000846002018281548110610b8457610b846127c6565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa91906127e7565b90506000816001600160a01b03166370a08231886002018681548110610c2257610c226127c6565b6000918252602090912001546040516001600160e01b031960e084901b168152610c58916001600160a01b031690600401612533565b602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c999190612813565b9050610d20876002018581548110610cb357610cb36127c6565b9060005260206000200160009054906101000a90046001600160a01b03168860090160008a6002018881548110610cec57610cec6127c6565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549085169190611604565b6000826001600160a01b03166370a08231896002018781548110610d4657610d466127c6565b6000918252602090912001546040516001600160e01b031960e084901b168152610d7c916001600160a01b031690600401612533565b602060405180830381865afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd9190612813565b9050610dc98282612893565b868681518110610ddb57610ddb6127c6565b602002602001018181525050876002018581548110610dfc57610dfc6127c6565b60009182526020909120015486516001600160a01b039091169063ef60450c90889088908110610e2e57610e2e6127c6565b60200260200101516040518263ffffffff1660e01b8152600401610e529190612504565b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b505050505050505080610e92906128aa565b9050610b65565b5060008060018086015460ff1690811115610eb657610eb661240d565b03610ec657506003830154610eea565b61271084600501548560030154610edd919061284a565b610ee7919061287f565b90505b60fc54604051630a9837c560e01b81526000916001600160a01b031690630a9837c590610f1d9089908690600401612a37565b6020604051808303816000875af1158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190612813565b600486015461010254919250610f83916001600160a01b03908116911684611604565b6004850154855460058701546040516001600160a01b03938416938a16927ff50338be3ffa7cdbebca76c758cfd1745fb4abe5bd3736c2dbf0cc6483a7b93f92610fd592879060028d01908b90612b0d565b60405180910390a35050505050610a47600160c955565b61100d60405180606001604052806021815260200161350060219139611e34565b60fd8054908290556040517f85814f0246fcd999c88af70c9e6238211e79444ff07ec745b80aed19ddb268c89061104790839085906128c4565b60405180910390a15050565b6110846040518060400160405280601081526020016f726573756d6541756374696f6e73282960801b815250611e34565b6101005460ff166110a75760405162461bcd60e51b815260040161040390612b8f565b610100805460ff191690556040517f91b812e075fb9190eebe2d938c00a7179d150156469a467ec60a290035f4635a906110e2903390612533565b60405180910390a1565b61112a6040518060400160405280601b81526020017f757064617465496e63656e746976654270732875696e74323536290000000000815250611e34565b8060000361114a5760405162461bcd60e51b815260040161040390612bd3565b60fe8054908290556040517f3d438fa36c5052935d12a6925d1660c8150c74ef11ca672d4279bc6fd41b8bcf9061104790839085906128c4565b6111a560405180606001604052806023815260200161352160239139611e34565b806000036111c55760405162461bcd60e51b815260040161040390612c23565b60ff8054908290556040517f3f22dba09ee9845bd2be6926fea5337a0db935ca059cbb205d62174783e296649061104790839085906128c4565b611207611d91565b6112116000611ece565b565b60655433906001600160a01b0316811461123f5760405162461bcd60e51b815260040161040390612c79565b610a4781611ece565b6112786040518060400160405280600f81526020016e706175736541756374696f6e73282960881b815250611e34565b6101005460ff161561129c5760405162461bcd60e51b815260040161040390612cbd565b610100805460ff191660011790556040517fc1be5163c9ebecf05bfbd6c6ae7c2b6ce2d3c43088dffaf5270cbf9516150499906110e2903390612533565b6112e2611d91565b6112eb81611ee7565b60fb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a35050565b600054610100900460ff161580801561135d5750600054600160ff909116105b806113775750303b158015611377575060005460ff166001145b6113935760405162461bcd60e51b815260040161040390612d18565b6000805460ff1916600117905580156113b6576000805461ff0019166101001790555b6113bf85611ee7565b6113c884611ee7565b826000036113e85760405162461bcd60e51b815260040161040390612d5c565b6113f0611f0e565b6113f982611f3d565b611401611f64565b60fd83905561010280546001600160a01b038088166001600160a01b03199283161790925560fc805492871692909116919091179055606461010181905560ff556103e860fe55610100805460ff19169055801561149e576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061149590600190612d80565b60405180910390a15b5050505050565b6114c660405180606001604052806021815260200161354460219139611e34565b6101018054908290556040517f2a5be8a6b827e16c392d22522295794d6baff64565057a17b1f14c9d6c125a609061104790839085906128c4565b611509611d91565b606580546001600160a01b0383166001600160a01b0319909116811790915561153a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600260c954036115945760405162461bcd60e51b815260040161040390612dc2565b600260c955565b8054600090158015906115ca5750600180830154610100900460ff1660028111156115c8576115c861240d565b145b92915050565b60048101546000906001600160a01b0316158080156115fd57506101015483546115fa91906129af565b43115b9392505050565b6109488363a9059cbb60e01b8484604051602401611623929190612a37565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f93565b61167b846323b872dd60e01b85858560405160240161162393929190612dd2565b50505050565b600160c955565b60fb54604051637aee632d60e01b81526000916001600160a01b031690637aee632d906116b9908590600401612533565b600060405180830381865afa1580156116d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116fe9190810190612f9b565b9050816001600160a01b031681604001516001600160a01b0316146117355760405162461bcd60e51b81526004016104039061301a565b6001600160a01b038216600090815261010360205260409020805415801561177a575060006001820154610100900460ff1660028111156117785761177861240d565b145b806117a2575060026001820154610100900460ff1660028111156117a0576117a061240d565b145b6117be5760405162461bcd60e51b815260040161040390613054565b600060058201819055600682018190556002820154905b818110156118295760008360020182815481106117f4576117f46127c6565b60009182526020808320909101546001600160a01b03168252600886019052604081205550611822816128aa565b90506117d5565b506118386002830160006122bb565b600061184385612025565b90508051915060006118548661208d565b90506000808467ffffffffffffffff81111561187257611872612a21565b60405190808252806020026020018201604052801561189b578160200160208202803683370190505b5090508467ffffffffffffffff8111156118b7576118b7612a21565b6040519080825280602002602001820160405280156118e0578160200160208202803683370190505b5080516118f79160028901916020909101906122d9565b5060005b85811015611b81576000858281518110611917576119176127c6565b60200260200101516001600160a01b031663bbcac5576040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119809190612813565b9050846001600160a01b03166396e85ced8784815181106119a3576119a36127c6565b60200260200101516040518263ffffffff1660e01b81526004016119c79190612533565b600060405180830381600087803b1580156119e157600080fd5b505af11580156119f5573d6000803e3d6000fd5b505050506000670de0b6b3a764000082876001600160a01b031663fc57d4df8a8781518110611a2657611a266127c6565b60200260200101516040518263ffffffff1660e01b8152600401611a4a9190612533565b602060405180830381865afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b9190612813565b611a95919061284a565b611a9f919061287f565b9050611aab81866129af565b9450868381518110611abf57611abf6127c6565b6020026020010151896002018481548110611adc57611adc6127c6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081896008016000898681518110611b2357611b236127c6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555081848481518110611b6257611b626127c6565b602002602001018181525050505080611b7a906128aa565b90506118fb565b5060fd54821015611ba45760405162461bcd60e51b815260040161040390613098565b60fc5460405163f481395b60e01b81526000916001600160a01b03169063f481395b90611bd5908c90600401612533565b602060405180830381865afa158015611bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c169190612813565b90506000819050600061271060fe5486611c30919061284a565b611c3a919061287f565b611c4490866129af565b9050828110611ca15760fe54611c5c906127106129af565b611c66908661284a565b82611c736127108061284a565b611c7d919061284a565b611c87919061287f565b60078a015560018901805460ff1916905560009150611cc8565b80611cac8184612893565b60018b8101805460ff1916909117905561271060078c01559250505b611cd28284612893565b60038a01554389556001808a01805461ff00191661010083021790555060008960040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a6001600160a01b03167f56c1f0c5ea96c78d614c0246b1915086a325f09ce15526bd5d69b50232d681328a600001548b60010160009054906101000a900460ff168c600201888e600301548f60070154604051611d7c969594939291906130a8565b60405180910390a25050505050505050505050565b6033546001600160a01b031633146112115760405162461bcd60e51b815260040161040390613137565b6001600160a01b038116611de15760405162461bcd60e51b815260040161040390613189565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906110479083908590613199565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90611e6790339086906004016131e6565b602060405180830381865afa158015611e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea89190613219565b905080610a3257333083604051634a3fa29360e01b81526004016104039392919061323a565b606580546001600160a01b0319169055610a47816120f1565b6001600160a01b038116610a47576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16611f355760405162461bcd60e51b8152600401610403906132b8565b611211612143565b600054610100900460ff16610a3e5760405162461bcd60e51b8152600401610403906132b8565b600054610100900460ff16611f8b5760405162461bcd60e51b8152600401610403906132b8565b611211612173565b6000611fe8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661219a9092919063ffffffff16565b90508051600014806120095750808060200190518101906120099190613219565b6109485760405162461bcd60e51b81526004016104039061330f565b6060816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612065573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115ca91908101906133cd565b6000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca9190613408565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661216a5760405162461bcd60e51b8152600401610403906132b8565b61121133611ece565b600054610100900460ff166116815760405162461bcd60e51b8152600401610403906132b8565b60606121a984846000856121b1565b949350505050565b6060824710156121d35760405162461bcd60e51b81526004016104039061346c565b600080866001600160a01b031685876040516121ef919061349e565b60006040518083038185875af1925050503d806000811461222c576040519150601f19603f3d011682016040523d82523d6000602084013e612231565b606091505b50915091506122428783838761224d565b979650505050505050565b6060831561228c578251600003612285576001600160a01b0385163b6122855760405162461bcd60e51b8152600401610403906134de565b50816121a9565b6121a983838151156122a15781518083602001fd5b8060405162461bcd60e51b815260040161040391906134ee565b5080546000825590600052602060002090810190610a47919061233e565b82805482825590600052602060002090810192821561232e579160200282015b8281111561232e57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906122f9565b5061233a92915061233e565b5090565b5b8082111561233a576000815560010161233f565b60006001600160a01b0382166115ca565b61236d81612353565b8114610a4757600080fd5b80356115ca81612364565b8061236d565b80356115ca81612383565b6000806000606084860312156123ac576123ac600080fd5b60006123b88686612378565b93505060206123c986828701612389565b92505060406123da86828701612389565b9150509250925092565b6000602082840312156123f9576123f9600080fd5b60006121a98484612378565b805b82525050565b634e487b7160e01b600052602160045260246000fd5b60028110610a4757610a4761240d565b8061243d81612423565b919050565b60006115ca82612433565b61240781612442565b60038110610a4757610a4761240d565b8061243d81612456565b60006115ca82612466565b61240781612470565b61240781612353565b610100810161249c828b612405565b6124a9602083018a61244d565b6124b6604083018961247b565b6124c36060830188612405565b6124d06080830187612484565b6124dd60a0830186612405565b6124ea60c0830185612405565b6124f760e0830184612405565b9998505050505050505050565b602081016115ca8284612405565b60006020828403121561252757612527600080fd5b60006121a98484612389565b602081016115ca8284612484565b801515612407565b602081016115ca8284612541565b60006115ca6001600160a01b0383165b6001600160a01b031690565b60006115ca82612557565b60006115ca82612573565b6124078161257e565b602081016115ca8284612589565b60006115ca82612353565b61236d816125a0565b80356115ca816125ab565b600080600080608085870312156125d8576125d8600080fd5b60006125e48787612378565b94505060206125f5878288016125b4565b935050604061260687828801612389565b925050606061261787828801612378565b91505092959194509250565b601a81526000602082017f61756374696f6e20686173206265656e20726573746172746564000000000000815291505b5060200190565b602080825281016115ca81612623565b601381526000602082017237379037b716b3b7b4b7339030bab1ba34b7b760691b81529150612653565b602080825281016115ca8161266a565b601c81526000602082017f61756374696f6e206973207374616c652c20726573746172742069740000000081529150612653565b602080825281016115ca816126a4565b601b81526000602082017f626173697320706f696e74732063616e6e6f74206265207a65726f000000000081529150612653565b602080825281016115ca816126e8565b602681526000602082017f626173697320706f696e74732063616e6e6f74206265206d6f7265207468616e81526502031303030360d41b602082015291505b5060400190565b602080825281016115ca8161272c565b601b81526000602082017f796f757220626964206973206e6f74207468652068696768657374000000000081529150612653565b602080825281016115ca81612782565b634e487b7160e01b600052603260045260246000fd5b80516115ca81612364565b6000602082840312156127fc576127fc600080fd5b60006121a984846127dc565b80516115ca81612383565b60006020828403121561282857612828600080fd5b60006121a98484612808565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561286457612864612834565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261288e5761288e612869565b500490565b6000828210156128a5576128a5612834565b500390565b600060001982036128bd576128bd612834565b5060010190565b604081016128d28285612405565b6115fd6020830184612405565b6013815260006020820172185d58dd1a5bdb9cc8185c99481c185d5cd959606a1b81529150612653565b602080825281016115ca816128df565b602f81526000602082017f796f75206e65656420746f207761697420666f72206d6f72652074696d65206681526e37b9103334b939ba103134b23232b960891b6020820152915061276b565b602080825281016115ca81612919565b6013815260006020820172105d58dd1a5bdb9cc8185c99481c185d5cd959606a1b81529150612653565b602080825281016115ca81612975565b600082198211156129c2576129c2612834565b500190565b602d81526000602082017f77616974696e6720666f72206e657874206269646465722e2063616e6e6f742081526c31b637b9b29030bab1ba34b7b760991b6020820152915061276b565b602080825281016115ca816129c7565b634e487b7160e01b600052604160045260246000fd5b604081016128d28285612484565b6000612a518383612589565b505060200190565b60006115ca82612567565b60006115ca8254612a59565b6000612a7a825490565b808452600083815260208082209501949081905b83811015612ab857612a9f82612a64565b612aa98882612a45565b97505060019182019101612a8e565b509495945050505050565b6000612a518383612405565b6000612ad9825190565b80845260209384019383018060005b83811015612ab8578151612afc8882612ac3565b975060208301925050600101612ae8565b60a08101612b1b8288612405565b612b286020830187612405565b612b356040830186612405565b8181036060830152612b478185612a70565b905081810360808301526122428184612acf565b601781526000602082017f41756374696f6e7320617265206e6f742070617573656400000000000000000081529150612653565b602080825281016115ca81612b5b565b601a81526000602082017f696e63656e74697665427073206d757374206e6f74206265203000000000000081529150612653565b602080825281016115ca81612b9f565b602381526000602082017f5f6e657874426964646572426c6f636b4c696d6974206d757374206e6f74206281526206520360ec1b6020820152915061276b565b602080825281016115ca81612be3565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061276b565b602080825281016115ca81612c33565b601b81526000602082017f41756374696f6e732061726520616c726561647920706175736564000000000081529150612653565b602080825281016115ca81612c89565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061276b565b602080825281016115ca81612ccd565b601d81526000602082017f696e76616c6964206d696e696d756d20706f6f6c20626164206465627400000081529150612653565b602080825281016115ca81612d28565b600060ff82166115ca565b61240781612d6c565b602081016115ca8284612d77565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150612653565b602080825281016115ca81612d8e565b60608101612de08286612484565b612ded6020830185612484565b6121a96040830184612405565b601f19601f830116810181811067ffffffffffffffff82111715612e2057612e20612a21565b6040525050565b6000612e3260405190565b905061243d8282612dfa565b600067ffffffffffffffff821115612e5857612e58612a21565b601f19601f83011660200192915050565b60005b83811015612e84578181015183820152602001612e6c565b8381111561167b5750506000910152565b6000612ea8612ea384612e3e565b612e27565b905082815260208101848484011115612ec357612ec3600080fd5b612ece848285612e69565b509392505050565b600082601f830112612eea57612eea600080fd5b81516121a9848260208601612e95565b600060a08284031215612f0f57612f0f600080fd5b612f1960a0612e27565b825190915067ffffffffffffffff811115612f3657612f36600080fd5b612f4284828501612ed6565b8252506020612f53848483016127dc565b6020830152506040612f67848285016127dc565b6040830152506060612f7b84828501612808565b6060830152506080612f8f84828501612808565b60808301525092915050565b600060208284031215612fb057612fb0600080fd5b815167ffffffffffffffff811115612fca57612fca600080fd5b6121a984828501612efa565b602781526000602082017f636f6d7074726f6c6c657220646f65736e277420657869737420706f6f6c20728152666567697374727960c81b6020820152915061276b565b602080825281016115ca81612fd6565b601381526000602082017261756374696f6e206973206f6e2d676f696e6760681b81529150612653565b602080825281016115ca8161302a565b601881526000602082017f706f6f6c20626164206465627420697320746f6f206c6f77000000000000000081529150612653565b602080825281016115ca81613064565b60c081016130b68289612405565b6130c3602083018861244d565b81810360408301526130d58187612a70565b905081810360608301526130e98186612acf565b90506130f86080830185612405565b61224260a0830184612405565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000612653565b602080825281016115ca81613105565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061276b565b602080825281016115ca81613147565b604081016131a78285612484565b6115fd6020830184612484565b60006131be825190565b8084526020840193506131d5818560208601612e69565b601f01601f19169290920192915050565b604081016131f48285612484565b81810360208301526121a981846131b4565b80151561236d565b80516115ca81613206565b60006020828403121561322e5761322e600080fd5b60006121a9848461320e565b606081016132488286612484565b6132556020830185612484565b818103604083015261326781846131b4565b95945050505050565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061276b565b602080825281016115ca81613270565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061276b565b602080825281016115ca816132c8565b600067ffffffffffffffff82111561333957613339612a21565b5060209081020190565b80516115ca816125ab565b600061335c612ea38461331f565b8381529050602080820190840283018581111561337b5761337b600080fd5b835b8181101561339f57806133908882613343565b8452506020928301920161337d565b5050509392505050565b600082601f8301126133bd576133bd600080fd5b81516121a984826020860161334e565b6000602082840312156133e2576133e2600080fd5b815167ffffffffffffffff8111156133fc576133fc600080fd5b6121a9848285016133a9565b60006020828403121561341d5761341d600080fd5b60006121a98484613343565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061276b565b602080825281016115ca81613429565b6000613486825190565b613494818560208601612e69565b9290920192915050565b60006115fd828461347c565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612653565b602080825281016115ca816134aa565b602080825281016115fd81846131b456fe7570646174654d696e696d756d506f6f6c426164446562742875696e74323536297570646174654e657874426964646572426c6f636b4c696d69742875696e743235362975706461746557616974466f7246697273744269646465722875696e7432353629a26469706673582212206b9334142b37961931eb74dd101eb6f9af4a486273d7a14172c6a6d9cc2cbac564736f6c634300080d0033",
759
+ "linkReferences": {},
760
+ "deployedLinkReferences": {}
761
+ }