@arbitrum/nitro-contracts 1.2.1 → 2.0.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  29. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  30. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  52. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  53. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  54. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  55. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +13 -0
  56. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  57. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  58. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  59. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  60. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  61. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  62. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +15 -2
  63. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  64. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  65. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  66. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  67. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  68. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  69. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  70. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  71. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  72. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  73. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  74. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  75. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  77. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +15 -2
  78. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  79. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  80. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  81. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +2 -2
  82. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +4 -0
  83. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +490 -0
  84. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +1 -1
  85. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.json +2 -2
  86. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +1 -1
  87. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +50 -2
  88. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +1 -1
  89. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +55 -0
  90. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +1 -1
  91. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  92. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  93. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  94. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  95. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  96. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  97. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  98. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  99. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  100. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  101. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  102. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  103. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  104. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +4 -0
  105. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +46 -0
  106. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  107. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  108. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +15 -2
  109. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  110. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +1 -1
  111. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +2 -2
  112. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +4 -0
  113. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +71 -0
  114. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +4 -0
  115. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +36 -0
  116. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +4 -0
  117. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +142 -0
  118. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  119. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  120. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +4 -0
  121. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +25 -0
  122. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  123. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +2 -2
  124. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  125. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +4 -0
  126. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +37 -0
  127. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  128. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  129. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +1 -1
  130. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +50 -2
  131. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +1 -1
  132. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +50 -2
  133. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  134. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  135. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  136. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  137. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  138. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  139. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +48 -0
  140. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  141. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  142. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  143. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +88 -0
  144. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  145. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +50 -2
  146. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  147. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +90 -2
  148. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  149. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +90 -2
  150. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  151. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +90 -2
  152. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  153. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +90 -2
  154. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  155. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  156. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  157. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  158. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +7 -0
  159. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  160. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  161. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  162. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +161 -0
  164. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +4 -0
  169. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.json +453 -0
  170. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +4 -0
  171. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.json +113 -0
  172. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  174. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  175. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  176. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  177. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  178. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  179. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  180. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  181. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  182. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  183. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  184. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +1 -1
  185. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +1 -1
  186. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +1 -1
  187. package/build/contracts/src/rollup/Node.sol/NodeLib.json +2 -2
  188. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  189. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +15 -2
  190. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  191. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +13 -0
  192. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  193. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
  194. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  195. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  196. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  197. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  198. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  199. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +1 -1
  200. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +13 -0
  201. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +15 -2
  203. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  204. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +15 -2
  205. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +1 -1
  206. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +2 -2
  207. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  208. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -2
  209. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  210. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  211. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  212. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  213. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  214. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  215. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  216. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  217. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  218. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  219. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  220. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  221. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  222. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  223. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  224. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  225. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +4 -0
  226. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +10 -0
  227. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  228. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  229. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  230. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  231. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  232. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  233. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  234. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  235. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  236. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  237. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  238. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  239. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  240. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  241. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  242. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  243. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  244. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  245. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  246. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  247. package/package.json +13 -7
  248. package/src/chain/CacheManager.sol +283 -0
  249. package/src/challenge/ChallengeLib.sol +0 -45
  250. package/src/challenge/ChallengeManager.sol +24 -9
  251. package/src/challenge/IChallengeManager.sol +13 -0
  252. package/src/mocks/Benchmarks.sol +52 -0
  253. package/src/mocks/MultiCallTest.sol +117 -0
  254. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +29 -0
  255. package/src/mocks/Program.sol +126 -0
  256. package/src/mocks/SdkStorage.sol +176 -0
  257. package/src/mocks/SimpleCacheManager.sol +22 -0
  258. package/src/osp/IOneStepProofEntry.sol +10 -0
  259. package/src/osp/OneStepProofEntry.sol +81 -7
  260. package/src/osp/OneStepProver0.sol +64 -20
  261. package/src/osp/OneStepProverHostIo.sol +201 -2
  262. package/src/osp/OneStepProverMemory.sol +4 -33
  263. package/src/precompiles/ArbDebug.sol +2 -0
  264. package/src/precompiles/ArbOwner.sol +51 -9
  265. package/src/precompiles/ArbWasm.sol +119 -0
  266. package/src/precompiles/ArbWasmCache.sol +33 -0
  267. package/src/state/Deserialize.sol +88 -47
  268. package/src/state/Instructions.sol +38 -3
  269. package/src/state/Machine.sol +92 -15
  270. package/src/state/MerkleProof.sol +22 -4
  271. package/src/state/Module.sol +3 -1
  272. package/src/state/ModuleMemory.sol +54 -0
  273. package/src/state/MultiStack.sol +58 -0
  274. package/src/state/StackFrame.sol +6 -1
  275. package/src/state/Value.sol +13 -1
  276. package/src/state/ValueStack.sol +6 -1
@@ -0,0 +1,25 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SdkStorage",
4
+ "sourceName": "src/mocks/SdkStorage.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "populate",
9
+ "outputs": [],
10
+ "stateMutability": "nonpayable",
11
+ "type": "function"
12
+ },
13
+ {
14
+ "inputs": [],
15
+ "name": "remove",
16
+ "outputs": [],
17
+ "stateMutability": "nonpayable",
18
+ "type": "function"
19
+ }
20
+ ],
21
+ "bytecode": "0x608060405234801561001057600080fd5b5061148c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a7f437791461003b578063f809f20514610045575b600080fd5b61004361004d565b005b61004361041d565b6007805461005a906111b8565b159050610121576007805461006e816111b8565b8061008957634e487b7160e01b600052603160045260246000fd5b601f811180156100a057600181146100c257610118565b6001826021036101000a03600183039250600283028482191617935050610118565b8360005260206000208260208114610105576020600019808601828104949094018054601f959095169092036101000a0119909216825560011990940193610115565b81546000835560ff1916603e1794505b50505b5050905561004d565b601060088054610130906111b8565b905011156101f85760088054610145816111b8565b8061016057634e487b7160e01b600052603160045260246000fd5b601f811180156101775760018114610199576101ef565b6001826021036101000a036001830392506002830284821916179350506101ef565b83600052602060002082602081146101dc576020600019808601828104949094018054601f959095169092036101000a01199092168255600119909401936101ec565b81546000835560ff1916603e1794505b50505b50509055610121565b60408051808201909152600f8082526e7761736d2069732063757465203c3360881b602090920191825261022e91600991610e45565b505b6005541561027f576005805480610249576102496111f3565b60008281526020902060046000199092019182040180546001600160401b03600860038516026101000a02191690559055610230565b600654600110156102be57600680548061029b5761029b6111f3565b6001900381819060005260206000200160006102b79190610ec9565b905561027f565b60005b60088110156102f8576000818152600a6020526040902080546001600160a01b0319169055806102f08161121f565b9150506102c1565b5060086000908152600a60209081527f2c1fd36ba11b13b555f58753742999069764391f450ca8727fe8a3eeffe6777580546001600160a01b03191690911790555b6004816001600160a01b0316101561037f576001600160a01b0381166000908152600b6020526040812061036d91610eee565b806103778161123a565b91505061033a565b506004805480610391576103916111f3565b60008281526020812060026000199390930192830201805465ffffffffffff19168155600101819055915560188190556019819055601a819055601b556103da601c6000610f13565b6103e6601d6000610f34565b6021805465ffffffffffff19908116909155600060228190556023805483169055602481905560258054909216909155602655565b565b600080546001600160a81b0319166170011781556001805460306001600160a01b03199091161790556002805465ffffffffffff1916657fffffff002017905560406003555b6020816001600160401b031610156104e457600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db06004820401805460039092166008026101000a6001600160401b038181021990931692841602919091179055806104dc81611261565b915050610463565b50604d60056007815481106104fb576104fb61127e565b90600052602060002090600491828204019190066008026101000a8154816001600160401b0302191690836001600160401b0316021790555060005b600a81101561063f576006816001600160401b0381111561055a5761055a611294565b604051908082528060200260200182016040528015610583578160200160208202803683370190505b508154600181018355600092835260209283902082516105a99491909201920190610f70565b5060005b8181101561062c5780600683815481106105c9576105c961127e565b9060005260206000200182815481106105e4576105e461127e565b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff16021790555080806106249061121f565b9150506105ad565b50806106378161121f565b915050610537565b5060005b600a8110156107015760005b818110156106ee5760026006838154811061066c5761066c61127e565b9060005260206000200182815481106106875761068761127e565b90600052602060002090600691828204019190066005028282829054906101000a900464ffffffffff166106bb91906112aa565b92506101000a81548164ffffffffff021916908364ffffffffff16021790555080806106e69061121f565b91505061064f565b50806106f98161121f565b915050610643565b5060005b601f8160ff16101561075c576007816040516020016107259291906112d7565b60405160208183030381529060405260079080519060200190610749929190610e45565b50806107548161138c565b915050610705565b5060005b60508160ff1610156107b7576008816040516020016107809291906112d7565b604051602081830303815290604052600890805190602001906107a4929190610e45565b50806107af8161138c565b915050610760565b5060408051808201909152600f8082526e617262697472756d207374796c757360881b60209092019182526107ee91600991610e45565b5060005b6010811015610834576000818152600a6020526040902080546001600160a01b0319166001600160a01b0383161790558061082c8161121f565b9150506107f2565b5060005b6004816001600160a01b031610156108f85760408051600080825260208083018085526001600160a01b0386168352600b909152929020905161087b929061101d565b5060005b816001600160a01b031681116108e5576001600160a01b0382166000908152600b60209081526040822080546001810182559083529181902090820401805460ff601f9093166101000a92830219169091179055806108dd8161121f565b91505061087f565b50806108f08161123a565b915050610838565b5060005b60048160030b121561097b57600c8054600101808255600082905263ffffffff83169190829081106109305761093061127e565b60009182526020808320600386900b84529190910190526040902080546001600160a01b0319166001600160a01b039290921691909117905580610973816113ac565b9150506108fc565b5060005b60048160ff1610156109ed576109968160016113c6565b6001600160f81b031960f883901b166000908152600d6020526040812060ff9290921691906109c66002856113eb565b60ff16158152602081019190915260400160002055806109e58161138c565b91505061097f565b50604051657374796c757360d01b8152600290600e906006019081526040519081900360200190208154815461ffff19811661ffff9092169182178355835463ffffffff6201000091829004160265ffffffffffff1990911690911717815560019182015491015560005b6004811015610b0c5760048054600181018255600091909152600280547f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b928202928301805461ffff90921661ffff19831681178255925465ffffffffffff19909216909217620100009182900463ffffffff169091021790556003547f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c9091015580610b048161121f565b915050610a58565b5060408051808201909152600e8082526d4c3220697320666f7220796f752160901b6020909201918252610b4291601191610e45565b5060005b6005811015610b9d578060148160058110610b6357610b6361127e565b600a91828204019190066003026101000a81548162ffffff021916908362ffffff1602179055508080610b959061121f565b915050610b46565b5060005b6002811015610bef578060168160028110610bbe57610bbe61127e565b0180546001600160a01b0319166001600160a01b039290921691909117905580610be78161121f565b915050610ba1565b5060005b6004811015610c85578060188160048110610c1057610c1061127e565b01805460ff191660ff9290921691909117905560188160048110610c3657610c3661127e565b0154610c469060ff1660016113c6565b60188260048110610c5957610c5961127e565b01805460ff929092166101000261ff001990921691909117905580610c7d8161121f565b915050610bf3565b5060005b6003811015610d2f57610c9a6110b0565b60005b6004811215610cd85780828260048110610cb957610cb961127e565b600b9290920b6020909202015280610cd08161141b565b915050610c9d565b50601c8054600181018255600091909152610d1a906002027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211018260046110ce565b50508080610d279061121f565b915050610c89565b5060005b6004811015610dc25760005b600481600b0b1215610daf57601d8260048110610d5e57610d5e61127e565b01805460018082018355600092835260209092206002820401805492909116600c026101000a6001600160601b03818102199093169284160291909117905580610da781611434565b915050610d3f565b5080610dba8161121f565b915050610d33565b5060005b6003811015610e4257600260218260038110610de457610de461127e565b825460029190910291909101805461ffff90921661ffff19831681178255835465ffffffffffff1990931617620100009283900463ffffffff1690920291909117815560019182015491015580610e3a8161121f565b915050610dc6565b50565b828054610e51906111b8565b90600052602060002090601f016020900481019282610e735760008555610eb9565b82601f10610e8c57805160ff1916838001178555610eb9565b82800160010185558215610eb9579182015b82811115610eb9578251825591602001919060010190610e9e565b50610ec5929150611164565b5090565b508054600082556005016006900490600052602060002090810190610e429190611164565b50805460008255601f016020900490600052602060002090810190610e429190611164565b5080546000825560020290600052602060002090810190610e429190611179565b506000610f418282611193565b506001016000610f518282611193565b506001016000610f618282611193565b5061041b906001016000611193565b82805482825590600052602060002090600501600690048101928215610eb95791602002820160005b83821115610fdf57835183826101000a81548164ffffffffff021916908364ffffffffff1602179055509260200192600501602081600401049283019260010302610f99565b80156110105782816101000a81549064ffffffffff0219169055600501602081600401049283019260010302610fdf565b5050610ec5929150611164565b82805482825590600052602060002090601f01602090048101928215610eb95791602002820160005b8382111561108357835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302611046565b80156110105782816101000a81549060ff0219169055600101602081600001049283019260010302611083565b60405180608001604052806004906020820280368337509192915050565b600283019183908215610eb95791602002820160005b8382111561113157835183826101000a8154816001600160601b030219169083600b0b6001600160601b031602179055509260200192600c01602081600b010492830192600103026110e4565b80156110105782816101000a8154906001600160601b030219169055600c01602081600b01049283019260010302611131565b5b80821115610ec55760008155600101611165565b80821115610ec55760008082556001820155600201611179565b508054600082556001016002900490600052602060002090810190610e429190611164565b600181811c908216806111cc57607f821691505b602082108114156111ed57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561123357611233611209565b5060010190565b60006001600160a01b038281168082141561125757611257611209565b6001019392505050565b60006001600160401b038083168181141561125757611257611209565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600064ffffffffff808316818516818304811182151516156112ce576112ce611209565b02949350505050565b600080845481600182811c9150808316806112f357607f831692505b602080841082141561131357634e487b7160e01b86526022600452602486fd5b818015611327576001811461133857611365565b60ff19861689528489019650611365565b60008b81526020902060005b8681101561135d5781548b820152908501908301611344565b505084890196505b50505061137e848860f81b6001600160f81b0319169052565b929092019695505050505050565b600060ff821660ff8114156113a3576113a3611209565b60010192915050565b60008160030b637fffffff8114156113a3576113a3611209565b600060ff821660ff84168060ff038211156113e3576113e3611209565b019392505050565b600060ff83168061140c57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60006001600160ff1b0382141561123357611233611209565b600081600b0b6b7fffffffffffffffffffffff8114156113a3576113a361120956fea26469706673582212207fff0c6884ce2f8f45ede07cfe79337eaccb3448f321aae188fca64654463c7b64736f6c63430008090033",
22
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063a7f437791461003b578063f809f20514610045575b600080fd5b61004361004d565b005b61004361041d565b6007805461005a906111b8565b159050610121576007805461006e816111b8565b8061008957634e487b7160e01b600052603160045260246000fd5b601f811180156100a057600181146100c257610118565b6001826021036101000a03600183039250600283028482191617935050610118565b8360005260206000208260208114610105576020600019808601828104949094018054601f959095169092036101000a0119909216825560011990940193610115565b81546000835560ff1916603e1794505b50505b5050905561004d565b601060088054610130906111b8565b905011156101f85760088054610145816111b8565b8061016057634e487b7160e01b600052603160045260246000fd5b601f811180156101775760018114610199576101ef565b6001826021036101000a036001830392506002830284821916179350506101ef565b83600052602060002082602081146101dc576020600019808601828104949094018054601f959095169092036101000a01199092168255600119909401936101ec565b81546000835560ff1916603e1794505b50505b50509055610121565b60408051808201909152600f8082526e7761736d2069732063757465203c3360881b602090920191825261022e91600991610e45565b505b6005541561027f576005805480610249576102496111f3565b60008281526020902060046000199092019182040180546001600160401b03600860038516026101000a02191690559055610230565b600654600110156102be57600680548061029b5761029b6111f3565b6001900381819060005260206000200160006102b79190610ec9565b905561027f565b60005b60088110156102f8576000818152600a6020526040902080546001600160a01b0319169055806102f08161121f565b9150506102c1565b5060086000908152600a60209081527f2c1fd36ba11b13b555f58753742999069764391f450ca8727fe8a3eeffe6777580546001600160a01b03191690911790555b6004816001600160a01b0316101561037f576001600160a01b0381166000908152600b6020526040812061036d91610eee565b806103778161123a565b91505061033a565b506004805480610391576103916111f3565b60008281526020812060026000199390930192830201805465ffffffffffff19168155600101819055915560188190556019819055601a819055601b556103da601c6000610f13565b6103e6601d6000610f34565b6021805465ffffffffffff19908116909155600060228190556023805483169055602481905560258054909216909155602655565b565b600080546001600160a81b0319166170011781556001805460306001600160a01b03199091161790556002805465ffffffffffff1916657fffffff002017905560406003555b6020816001600160401b031610156104e457600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db06004820401805460039092166008026101000a6001600160401b038181021990931692841602919091179055806104dc81611261565b915050610463565b50604d60056007815481106104fb576104fb61127e565b90600052602060002090600491828204019190066008026101000a8154816001600160401b0302191690836001600160401b0316021790555060005b600a81101561063f576006816001600160401b0381111561055a5761055a611294565b604051908082528060200260200182016040528015610583578160200160208202803683370190505b508154600181018355600092835260209283902082516105a99491909201920190610f70565b5060005b8181101561062c5780600683815481106105c9576105c961127e565b9060005260206000200182815481106105e4576105e461127e565b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff16021790555080806106249061121f565b9150506105ad565b50806106378161121f565b915050610537565b5060005b600a8110156107015760005b818110156106ee5760026006838154811061066c5761066c61127e565b9060005260206000200182815481106106875761068761127e565b90600052602060002090600691828204019190066005028282829054906101000a900464ffffffffff166106bb91906112aa565b92506101000a81548164ffffffffff021916908364ffffffffff16021790555080806106e69061121f565b91505061064f565b50806106f98161121f565b915050610643565b5060005b601f8160ff16101561075c576007816040516020016107259291906112d7565b60405160208183030381529060405260079080519060200190610749929190610e45565b50806107548161138c565b915050610705565b5060005b60508160ff1610156107b7576008816040516020016107809291906112d7565b604051602081830303815290604052600890805190602001906107a4929190610e45565b50806107af8161138c565b915050610760565b5060408051808201909152600f8082526e617262697472756d207374796c757360881b60209092019182526107ee91600991610e45565b5060005b6010811015610834576000818152600a6020526040902080546001600160a01b0319166001600160a01b0383161790558061082c8161121f565b9150506107f2565b5060005b6004816001600160a01b031610156108f85760408051600080825260208083018085526001600160a01b0386168352600b909152929020905161087b929061101d565b5060005b816001600160a01b031681116108e5576001600160a01b0382166000908152600b60209081526040822080546001810182559083529181902090820401805460ff601f9093166101000a92830219169091179055806108dd8161121f565b91505061087f565b50806108f08161123a565b915050610838565b5060005b60048160030b121561097b57600c8054600101808255600082905263ffffffff83169190829081106109305761093061127e565b60009182526020808320600386900b84529190910190526040902080546001600160a01b0319166001600160a01b039290921691909117905580610973816113ac565b9150506108fc565b5060005b60048160ff1610156109ed576109968160016113c6565b6001600160f81b031960f883901b166000908152600d6020526040812060ff9290921691906109c66002856113eb565b60ff16158152602081019190915260400160002055806109e58161138c565b91505061097f565b50604051657374796c757360d01b8152600290600e906006019081526040519081900360200190208154815461ffff19811661ffff9092169182178355835463ffffffff6201000091829004160265ffffffffffff1990911690911717815560019182015491015560005b6004811015610b0c5760048054600181018255600091909152600280547f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b928202928301805461ffff90921661ffff19831681178255925465ffffffffffff19909216909217620100009182900463ffffffff169091021790556003547f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c9091015580610b048161121f565b915050610a58565b5060408051808201909152600e8082526d4c3220697320666f7220796f752160901b6020909201918252610b4291601191610e45565b5060005b6005811015610b9d578060148160058110610b6357610b6361127e565b600a91828204019190066003026101000a81548162ffffff021916908362ffffff1602179055508080610b959061121f565b915050610b46565b5060005b6002811015610bef578060168160028110610bbe57610bbe61127e565b0180546001600160a01b0319166001600160a01b039290921691909117905580610be78161121f565b915050610ba1565b5060005b6004811015610c85578060188160048110610c1057610c1061127e565b01805460ff191660ff9290921691909117905560188160048110610c3657610c3661127e565b0154610c469060ff1660016113c6565b60188260048110610c5957610c5961127e565b01805460ff929092166101000261ff001990921691909117905580610c7d8161121f565b915050610bf3565b5060005b6003811015610d2f57610c9a6110b0565b60005b6004811215610cd85780828260048110610cb957610cb961127e565b600b9290920b6020909202015280610cd08161141b565b915050610c9d565b50601c8054600181018255600091909152610d1a906002027f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211018260046110ce565b50508080610d279061121f565b915050610c89565b5060005b6004811015610dc25760005b600481600b0b1215610daf57601d8260048110610d5e57610d5e61127e565b01805460018082018355600092835260209092206002820401805492909116600c026101000a6001600160601b03818102199093169284160291909117905580610da781611434565b915050610d3f565b5080610dba8161121f565b915050610d33565b5060005b6003811015610e4257600260218260038110610de457610de461127e565b825460029190910291909101805461ffff90921661ffff19831681178255835465ffffffffffff1990931617620100009283900463ffffffff1690920291909117815560019182015491015580610e3a8161121f565b915050610dc6565b50565b828054610e51906111b8565b90600052602060002090601f016020900481019282610e735760008555610eb9565b82601f10610e8c57805160ff1916838001178555610eb9565b82800160010185558215610eb9579182015b82811115610eb9578251825591602001919060010190610e9e565b50610ec5929150611164565b5090565b508054600082556005016006900490600052602060002090810190610e429190611164565b50805460008255601f016020900490600052602060002090810190610e429190611164565b5080546000825560020290600052602060002090810190610e429190611179565b506000610f418282611193565b506001016000610f518282611193565b506001016000610f618282611193565b5061041b906001016000611193565b82805482825590600052602060002090600501600690048101928215610eb95791602002820160005b83821115610fdf57835183826101000a81548164ffffffffff021916908364ffffffffff1602179055509260200192600501602081600401049283019260010302610f99565b80156110105782816101000a81549064ffffffffff0219169055600501602081600401049283019260010302610fdf565b5050610ec5929150611164565b82805482825590600052602060002090601f01602090048101928215610eb95791602002820160005b8382111561108357835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302611046565b80156110105782816101000a81549060ff0219169055600101602081600001049283019260010302611083565b60405180608001604052806004906020820280368337509192915050565b600283019183908215610eb95791602002820160005b8382111561113157835183826101000a8154816001600160601b030219169083600b0b6001600160601b031602179055509260200192600c01602081600b010492830192600103026110e4565b80156110105782816101000a8154906001600160601b030219169055600c01602081600b01049283019260010302611131565b5b80821115610ec55760008155600101611165565b80821115610ec55760008082556001820155600201611179565b508054600082556001016002900490600052602060002090810190610e429190611164565b600181811c908216806111cc57607f821691505b602082108114156111ed57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561123357611233611209565b5060010190565b60006001600160a01b038281168082141561125757611257611209565b6001019392505050565b60006001600160401b038083168181141561125757611257611209565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600064ffffffffff808316818516818304811182151516156112ce576112ce611209565b02949350505050565b600080845481600182811c9150808316806112f357607f831692505b602080841082141561131357634e487b7160e01b86526022600452602486fd5b818015611327576001811461133857611365565b60ff19861689528489019650611365565b60008b81526020902060005b8681101561135d5781548b820152908501908301611344565b505084890196505b50505061137e848860f81b6001600160f81b0319169052565b929092019695505050505050565b600060ff821660ff8114156113a3576113a3611209565b60010192915050565b60008160030b637fffffff8114156113a3576113a3611209565b600060ff821660ff84168060ff038211156113e3576113e3611209565b019392505050565b600060ff83168061140c57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60006001600160ff1b0382141561123357611233611209565b600081600b0b6b7fffffffffffffffffffffff8114156113a3576113a361120956fea26469706673582212207fff0c6884ce2f8f45ede07cfe79337eaccb3448f321aae188fca64654463c7b64736f6c63430008090033",
23
+ "linkReferences": {},
24
+ "deployedLinkReferences": {}
25
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1118,8 +1118,8 @@
1118
1118
  "type": "function"
1119
1119
  }
1120
1120
  ],
1121
- "bytecode": "0x610160604052306080526202000060a05246610100526200002b620001bc602090811b620024c917901c565b1515610120523480156200003e57600080fd5b5060405162003e2438038062003e24833981016040819052620000619162000295565b8282828260e081815250506101205115620000a5576001600160a01b038216156200009f576040516386657a5360e01b815260040160405180910390fd5b620000ee565b6001600160a01b038216620000ee576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0391821660c052151561014052600180549882166001600160a01b0319998a161781556002805490991633179098558551600a80546020808a01516040808c01516060909c01516001600160401b03908116600160c01b026001600160c01b039d8216600160801b029d909d166001600160801b0393821668010000000000000000026001600160801b031990961691909716179390931716939093179890981790559616600090815260039096525050509120805460ff191690921790915550620003b6565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620001fc919062000378565b600060405180830381855afa9150503d806000811462000239576040519150601f19603f3d011682016040523d82523d6000602084013e6200023e565b606091505b509150915081801562000252575080516020145b9250505090565b6001600160a01b03811681146200026f57600080fd5b50565b80516200027f8162000259565b919050565b805180151581146200027f57600080fd5b600080600080600080868803610120811215620002b157600080fd5b8751620002be8162000259565b6020890151909750620002d18162000259565b95506080603f1982011215620002e657600080fd5b50604051608081016001600160401b03811182821017156200031857634e487b7160e01b600052604160045260246000fd5b806040525060408801518152606088015160208201526080880151604082015260a088015160608201528094505060c087015192506200035b60e0880162000272565b91506200036c610100880162000284565b90509295509295509295565b6000825160005b818110156200039b57602081860181015185830152016200037f565b81811115620003ab576000828501525b509190910192915050565b60805160a05160c05160e0516101005161012051610140516139b86200046c600039600081816104490152818161072a01528181610c6901526129b5015260008181610c2001528181611d8901526129f7015260008181611a770152612e1d01526000818161051001528181612c710152612cad01526000818161040201528181610b2b015281816126470152612719015260008181610e1f01526117bb01526000818161060301526118b101526139b86000f3fe608060405234801561001057600080fd5b50600436106102125760003560e01c80637fa3a40e11610120578063cc2a1a0c116100b8578063e78cea921161007c578063e78cea92146104f8578063e8eb1dc31461050b578063ebea461d14610532578063f19815781461055a578063f60a50911461056d57600080fd5b8063cc2a1a0c146104a1578063d1ce8da8146104b4578063d9dd67ab146104c7578063e0bc9729146104da578063e5a358c8146104ed57600080fd5b80637fa3a40e146103e157806384420860146103ea5780638d910dde146103fd5780638f111f3c1461043157806392d9f7821461044457806395fcea781461046b57806396cc5c7814610473578063b31761f81461047b578063cb23bcb51461048e57600080fd5b80632cbf74e5116101ae5780636d46e987116101725780636d46e987146103235780636e7df3e7146103465780636f12b0c914610359578063715ea34b1461036c57806371c3e6fe146103be57600080fd5b80632cbf74e5146102df5780633e5aa082146102ea5780636633ae85146102fd5780636ae71f12146103105780636c8904501461031857600080fd5b806302c992751461021757806306f13056146102385780631637be481461024e57806316af91a7146102815780631f7a92b2146102895780631f9566321461029e5780631ff64790146102b1578063258f0495146102c457806327957a49146102d7575b600080fd5b610222600160fd1b81565b60405161022f9190612fba565b60405180910390f35b610240610578565b60405190815260200161022f565b61027161025c366004612fcf565b60009081526008602052604090205460ff1690565b604051901515815260200161022f565b610222600081565b61029c610297366004613000565b6105f8565b005b61029c6102ac36600461304f565b610831565b61029c6102bf366004613088565b610941565b6102406102d2366004612fcf565b610abf565b610240602881565b610222600560fc1b81565b61029c6102f83660046130ac565b610b28565b61029c61030b366004612fcf565b610f08565b61029c6110f3565b610222600160fb1b81565b610271610331366004613088565b60096020526000908152604090205460ff1681565b61029c61035436600461304f565b6112a6565b61029c61036736600461313d565b6113b6565b61039f61037a366004612fcf565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b0390911660208301520161022f565b6102716103cc366004613088565b60036020526000908152604090205460ff1681565b61024060005481565b61029c6103f8366004612fcf565b6113cf565b6104247f000000000000000000000000000000000000000000000000000000000000000081565b60405161022f91906131a7565b61029c61043f3660046131bb565b61153c565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b61029c6118a6565b61029c611a74565b61029c61048936600461327d565b611ad4565b600254610424906001600160a01b031681565b600b54610424906001600160a01b031681565b61029c6104c23660046132e2565b611bdb565b6102406104d5366004612fcf565b611ed9565b61029c6104e83660046131bb565b611f5c565b610222600160fe1b81565b600154610424906001600160a01b031681565b6102407f000000000000000000000000000000000000000000000000000000000000000081565b61053a6120b2565b60408051948552602085019390935291830152606082015260800161022f565b61029c610568366004613323565b6120ea565b610222600160ff1b81565b600154604080516221048360e21b815290516000926001600160a01b0316916284120c916004808301926020929190829003018186803b1580156105bb57600080fd5b505afa1580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190613393565b905090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561064a5760405162461bcd60e51b8152600401610641906133ac565b60405180910390fd5b6001546001600160a01b03161561067457604051633bcd329760e21b815260040160405180910390fd5b6001600160a01b03821661069b57604051631ad0f74360e01b815260040160405180910390fd5b6000826001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d657600080fd5b505afa925050508015610706575060408051601f3d908101601f19168201909252610703918101906133f8565b60015b61070f57610725565b6001600160a01b0381161561072357600191505b505b8015157f00000000000000000000000000000000000000000000000000000000000000001515146107695760405163c3e31f8d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0385169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f591906133f8565b600280546001600160a01b0319166001600160a01b039290921691909117905561082c6108273684900384018461327d565b612561565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906133f8565b6001600160a01b0316336001600160a01b0316141580156108e35750600b546001600160a01b03163314155b1561090357336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260096020526040808220805460ff19168415151790555160049160008051602061396383398151915291a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c791906133f8565b6001600160a01b0316336001600160a01b031614610a875760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b91906133f8565b604051631194af8760e11b81526001600160a01b03928316600482015291166024820152604401610641565b600b80546001600160a01b0319166001600160a01b03831617905560405160059060008051602061396383398151915290600090a250565b600081815260086020908152604080832081518083019092525460ff81161515825261010090046001600160401b031691810182905290610b155760405162f20c5d60e01b815260048101849052602401610641565b602001516001600160401b031692915050565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16610b8057604051632dd9fc9760e01b815260040160405180910390fd5b6000806000610b8e8a612638565b925092509250600080600080610ba8878f60008f8f612838565b929650909450925090508e808514801590610bc557506000198114155b15610bed5760405163ac7411c960e01b81526004810186905260248101829052604401610641565b818482600080516020613943833981519152866000548c6003604051610c169493929190613415565b60405180910390a47f000000000000000000000000000000000000000000000000000000000000000015610c5d576040516386657a5360e01b815260040160405180910390fd5b3332148015610c8a57507f0000000000000000000000000000000000000000000000000000000000000000155b15610c9b57610c9b888648896129f4565b505050506001600160a01b038716159350610efe92505050573660006020610cc483601f61349f565b610cce91906134b7565b9050610200610cde6002836135bd565b610ce891906134b7565b610cf38260066135cc565b610cfd919061349f565b610d07908461349f565b9250333214610d195760009150610e6e565b6001600160a01b03841615610e6e57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b158015610d6157600080fd5b505afa925050508015610d9657506040513d6000823e601f3d908101601f19168201604052610d9391908101906135eb565b60015b610d9f57610e6e565b805115610e6c576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190613393565b905048817f00000000000000000000000000000000000000000000000000000000000000008451610e4a91906135cc565b610e5491906135cc565b610e5e91906134b7565b610e68908661349f565b9450505b505b846001600160a01b031663e3db8a49335a610e899087613690565b856040518463ffffffff1660e01b8152600401610ea8939291906136a7565b602060405180830381600087803b158015610ec257600080fd5b505af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa91906136c8565b5050505b5050505050505050565b600081604051602001610f1d91815260200190565b60408051808303601f190181529082905260015481516020830120638db5993b60e01b8452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b90606401602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190613393565b9050801561100d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d111531056515117d253925560621b6044820152606401610641565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161103d9190613715565b60405180910390a26000806110526001612c2a565b9150915060008060008061106c8660016000806001612838565b9350935093509350836000146110b75760405162461bcd60e51b815260206004820152601060248201526f1053149150511657d4d15457d253925560821b6044820152606401610641565b808385600080516020613943833981519152856000548a60026040516110e09493929190613415565b60405180910390a4505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114157600080fd5b505afa158015611155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117991906133f8565b6001600160a01b0316336001600160a01b0316146111d55760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b6001546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb5916004808301926020929190829003018186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125291906133f8565b6002549091506001600160a01b03808316911614156112845760405163d054909f60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c91906133f8565b6001600160a01b0316336001600160a01b0316141580156113585750600b546001600160a01b03163314155b1561137857336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260036020526040808220805460ff19168415151790555160019160008051602061396383398151915291a25050565b6040516331cee75f60e21b815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145591906133f8565b6001600160a01b0316336001600160a01b0316146114b15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008181526008602052604090205460ff166114e25760405162f20c5d60e01b815260048101829052602401610641565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a260405160039060008051602061396383398151915290600090a250565b826000805a90503332146115635760405163feb3d07160e01b815260040160405180910390fd5b3360009081526003602052604090205460ff1661159357604051632dd9fc9760e01b815260040160405180910390fd5b6000806115a18b8b8b612c56565b90925090508b81838c8c8b8b60008080806115bf89888a8989612838565b93509350935093508a84141580156115d957506000198b14155b156116015760405163ac7411c960e01b815260048101859052602481018c9052604401610641565b808385600080516020613943833981519152856000548f600060405161162a9493929190613415565b60405180910390a4505050506001600160a01b038c1615985061189a97505050505050505057366000602061166083601f61349f565b61166a91906134b7565b905061020061167a6002836135bd565b61168491906134b7565b61168f8260066135cc565b611699919061349f565b6116a3908461349f565b92503332146116b5576000915061180a565b6001600160a01b0384161561180a57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b1580156116fd57600080fd5b505afa92505050801561173257506040513d6000823e601f3d908101601f1916820160405261172f91908101906135eb565b60015b61173b5761180a565b805115611808576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561177d57600080fd5b505afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613393565b905048817f000000000000000000000000000000000000000000000000000000000000000084516117e691906135cc565b6117f091906135cc565b6117fa91906134b7565b611804908661349f565b9450505b505b846001600160a01b031663e3db8a49335a6118259087613690565b856040518463ffffffff1660e01b8152600401611844939291906136a7565b602060405180830381600087803b15801561185e57600080fd5b505af1158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189691906136c8565b5050505b50505050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156118ef5760405162461bcd60e51b8152600401610641906133ac565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461194c57604051631194af8760e11b81523360048201526001600160a01b0382166024820152604401610641565b60045415801561195c5750600554155b80156119685750600654155b80156119745750600754155b1561199257604051633bcd329760e21b815260040160405180910390fd5b6004546001600160401b0310806119b157506005546001600160401b03105b806119c457506006546001600160401b03105b806119d757506007546001600160401b03105b156119f55760405163d0afb66160e01b815260040160405180910390fd5b505060048054600a80546005805460068054600780546001600160401b03908116600160c01b026001600160c01b03938216600160801b02939093166001600160801b03958216600160401b026001600160801b0319909816919099161795909517929092169590951717909255600093849055908390559082905555565b467f00000000000000000000000000000000000000000000000000000000000000001415611ab557604051635180dd8360e11b815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2257600080fd5b505afa158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a91906133f8565b6001600160a01b0316336001600160a01b031614611bb65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b611bbf81612561565b604051600090600080516020613963833981519152908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2957600080fd5b505afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906133f8565b6001600160a01b0316336001600160a01b031614611cbd5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008282604051611ccf929190613748565b604051908190038120607f60f91b6020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310611d535760405162461bcd60e51b81526020600482015260136024820152726b657973657420697320746f6f206c6172676560681b6044820152606401610641565b60008181526008602052604090205460ff1615611d8657604051637d17eeed60e11b815260048101829052602401610641565b437f000000000000000000000000000000000000000000000000000000000000000015611e225760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613393565b90505b604080518082018252600181526001600160401b0383811660208084019182526000878152600890915284902092518354915168ffffffffffffffffff1990921690151568ffffffffffffffff0019161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef65572290611eb09088908890613758565b60405180910390a260405160029060008051602061396383398151915290600090a25050505050565b6001546040516316bf557960e01b8152600481018390526000916001600160a01b0316906316bf55799060240160206040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190613393565b92915050565b826000805a3360009081526003602052604090205490915060ff16158015611f8f57506002546001600160a01b03163314155b15611fad57604051632dd9fc9760e01b815260040160405180910390fd5b600080611fbb8b8b8b612c56565b909250905060008c82848c8b8b868080611fd88787838888612838565b929c5090945092509050888a14801590611ff457506000198914155b1561201c5760405163ac7411c960e01b8152600481018b9052602481018a9052604401610641565b80838b600080516020613943833981519152856000548d60016040516120459493929190613415565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d604051612088929190613758565b60405180910390a25050506001600160a01b0383161561189a57366000602061166083601f61349f565b6000806000806000806000806120c6612e15565b6001600160401b039384169b50918316995082169750169450505050505b90919293565b600054861161210c57604051633eb9f37d60e11b815260040160405180910390fd5b60006121bc8684612120602089018961379d565b61213060408a0160208b0161379d565b61213b60018d613690565b6040805160f89690961b6001600160f81b03191660208088019190915260609590951b6001600160601b031916602187015260c093841b6001600160c01b031990811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b600a5490915043906001600160401b03166121da602088018861379d565b6121e491906137c6565b6001600160401b03161061220b5760405163ad3515d960e01b815260040160405180910390fd5b600a544290600160801b90046001600160401b0316612230604088016020890161379d565b61223a91906137c6565b6001600160401b0316106122615760405163c76d17e560e01b815260040160405180910390fd5b600060018811156122f9576001546001600160a01b031663d5719dc261228860028b613690565b6040518263ffffffff1660e01b81526004016122a691815260200190565b60206040518083038186803b1580156122be57600080fd5b505afa1580156122d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f69190613393565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc29061233f908c613690565b6040518263ffffffff1660e01b815260040161235d91815260200190565b60206040518083038186803b15801561237557600080fd5b505afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613393565b146123cb576040516313947fd760e01b815260040160405180910390fd5b6000806123d78a612c2a565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b815260040160206040518083038186803b15801561243057600080fd5b505afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190613393565b905080600080808061247d8988838880612838565b9350935093509350808385600080516020613943833981519152856000548d60026040516124ae9493929190613415565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649161250791906137f1565b600060405180830381855afa9150503d8060008114612542576040519150601f19603f3d011682016040523d82523d6000602084013e612547565b606091505b509150915081801561255a575080516020145b9250505090565b80516001600160401b031080612581575060208101516001600160401b03105b80612596575060408101516001600160401b03105b806125ab575060608101516001600160401b03105b156125c9576040516309cfba7560e01b815260040160405180910390fd5b8051600a8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055565b6000612642612f93565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b15801561269e57600080fd5b505afa1580156126b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126da91908101906135eb565b90508051600014156126ff57604051631e693f5b60e11b815260040160405180910390fd5b60008061270b87612e86565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190613393565b6127b291906135cc565b6127bc91906135cc565b6040519091508390600560fc1b906127d890879060200161380d565b60408051601f19818403018152908290526127f7939291602001613843565b60405160208183030381529060405280519060200120826000481161281d576000612827565b61282748846134b7565b965096509650505050509193909250565b60008060008060005488101561286157604051633eb9f37d60e11b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190613393565b8811156129075760405163925f8bd360e01b815260040160405180910390fd5b60015460405163432cc52b60e11b8152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a5690608401608060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299a9190613886565b60008c90559296509094509250905086158015906129d657507f0000000000000000000000000000000000000000000000000000000000000000155b156129e8576129e889854860006129f4565b95509550955095915050565b327f000000000000000000000000000000000000000000000000000000000000000015612aa9576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a5757600080fd5b505afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190613393565b9050612a9b48826134b7565b612aa5908461349f565b9250505b6001600160401b03821115612af75760405162461bcd60e51b8152602060048201526014602482015273115615149057d1d054d7d393d517d55253950d8d60621b6044820152606401610641565b604080514260208201526001600160601b0319606084901b16918101919091526054810186905260748101859052609481018490526001600160c01b031960c084901b1660b482015260009060bc0160408051808303601f190181529082905260015481516020830120637a88b10760e01b84526001600160a01b0386811660048601526024850191909152919350600092911690637a88b10790604401602060405180830381600087803b158015612baf57600080fd5b505af1158015612bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be79190613393565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051612c199190613715565b60405180910390a250505050505050565b6000612c34612f93565b600080612c4085612e86565b8151602090920191909120969095509350505050565b6000612c60612f93565b6000612c6d85602861349f565b90507f0000000000000000000000000000000000000000000000000000000000000000811115612cd957604051634634691b60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610641565b600080612ce586612e86565b90925090508615612ddb57612d1588886000818110612d0657612d06613787565b9050013560f81c60f81b612f2d565b612d505787876000818110612d2c57612d2c613787565b9050013560f81c60f81b60405163359999ab60e11b81526004016106419190612fba565b600160ff1b8888600081612d6657612d66613787565b6001600160f81b031992013592909216161580159150612d87575060218710155b15612ddb576000612d9c602160018a8c6138bc565b612da5916138e6565b60008181526008602052604090205490915060ff16612dd95760405162f20c5d60e01b815260048101829052602401610641565b505b818888604051602001612df093929190613904565b60408051601f1981840301815291905280516020909101209890975095505050505050565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014612e52575060019250829150819050806120e4565b5050600a546001600160401b038082169350600160401b820481169250600160801b8204811691600160c01b9004166120e4565b6060612e90612f93565b6000612e9a612f88565b90506000816000015182602001518360400151846060015188604051602001612f0295949392919060c095861b6001600160c01b0319908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b60405160208183030381529060405290506028815114612f2457612f2461392c565b94909350915050565b60006001600160f81b031982161580612f5357506001600160f81b03198216600160ff1b145b80612f6b57506001600160f81b03198216601160fb1b145b80611f5657506001600160f81b03198216600160fd1b1492915050565b612f90612f93565b90565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160f81b031991909116815260200190565b600060208284031215612fe157600080fd5b5035919050565b6001600160a01b0381168114612ffd57600080fd5b50565b60008082840360a081121561301457600080fd5b833561301f81612fe8565b92506080601f198201121561303357600080fd5b506020830190509250929050565b8015158114612ffd57600080fd5b6000806040838503121561306257600080fd5b823561306d81612fe8565b9150602083013561307d81613041565b809150509250929050565b60006020828403121561309a57600080fd5b81356130a581612fe8565b9392505050565b600080600080600060a086880312156130c457600080fd5b853594506020860135935060408601356130dd81612fe8565b94979396509394606081013594506080013592915050565b60008083601f84011261310757600080fd5b5081356001600160401b0381111561311e57600080fd5b60208301915083602082850101111561313657600080fd5b9250929050565b60008060008060006080868803121561315557600080fd5b8535945060208601356001600160401b0381111561317257600080fd5b61317e888289016130f5565b90955093505060408601359150606086013561319981612fe8565b809150509295509295909350565b6001600160a01b0391909116815260200190565b600080600080600080600060c0888a0312156131d657600080fd5b8735965060208801356001600160401b038111156131f357600080fd5b6131ff8a828b016130f5565b90975095505060408801359350606088013561321a81612fe8565b969995985093969295946080840135945060a09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561327557613275613237565b604052919050565b60006080828403121561328f57600080fd5b604051608081018181106001600160401b03821117156132b1576132b1613237565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156132f557600080fd5b82356001600160401b0381111561330b57600080fd5b613317858286016130f5565b90969095509350505050565b60008060008060008060e0878903121561333c57600080fd5b86359550602087013560ff8116811461335457600080fd5b9450608087018881111561336757600080fd5b60408801945035925060a087013561337e81612fe8565b8092505060c087013590509295509295509295565b6000602082840312156133a557600080fd5b5051919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60006020828403121561340a57600080fd5b81516130a581612fe8565b600060e0820190508582528460208301526001600160401b038085511660408401528060208601511660608401528060408601511660808401528060608601511660a0840152506004831061347a57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134b2576134b2613489565b500190565b6000826134d457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156135145781600019048211156134fa576134fa613489565b8085161561350757918102915b93841c93908002906134de565b509250929050565b60008261352b57506001611f56565b8161353857506000611f56565b816001811461354e576002811461355857613574565b6001915050611f56565b60ff84111561356957613569613489565b50506001821b611f56565b5060208310610133831016604e8410600b8410161715613597575081810a611f56565b6135a183836134d9565b80600019048211156135b5576135b5613489565b029392505050565b60006130a560ff84168361351c565b60008160001904831182151516156135e6576135e6613489565b500290565b600060208083850312156135fe57600080fd5b82516001600160401b038082111561361557600080fd5b818501915085601f83011261362957600080fd5b81518181111561363b5761363b613237565b8060051b915061364c84830161324d565b818152918301840191848101908884111561366657600080fd5b938501935b838510156136845784518252938501939085019061366b565b98975050505050505050565b6000828210156136a2576136a2613489565b500390565b6001600160a01b039390931683526020830191909152604082015260600190565b6000602082840312156136da57600080fd5b81516130a581613041565b60005b838110156137005781810151838201526020016136e8565b8381111561370f576000848401525b50505050565b60208152600082518060208401526137348160408501602087016136e5565b601f01601f19169190910160400192915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137af57600080fd5b81356001600160401b03811681146130a557600080fd5b60006001600160401b038083168185168083038211156137e8576137e8613489565b01949350505050565b600082516138038184602087016136e5565b9190910192915050565b815160009082906020808601845b838110156138375781518552938201939082019060010161381b565b50929695505050505050565b600084516138558184602089016136e5565b6001600160f81b0319851690830190815283516138798160018401602088016136e5565b0160010195945050505050565b6000806000806080858703121561389c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080858511156138cc57600080fd5b838611156138d957600080fd5b5050820193919092039150565b80356020831015611f5657600019602084900360031b1b1692915050565b600084516139168184602089016136e5565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fdfe7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7ea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456ea26469706673582212206705d8aed9a2fb3e963a10bd89ec2fde4c076711323861063b3ca592a3f8a7c664736f6c63430008090033",
1122
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102125760003560e01c80637fa3a40e11610120578063cc2a1a0c116100b8578063e78cea921161007c578063e78cea92146104f8578063e8eb1dc31461050b578063ebea461d14610532578063f19815781461055a578063f60a50911461056d57600080fd5b8063cc2a1a0c146104a1578063d1ce8da8146104b4578063d9dd67ab146104c7578063e0bc9729146104da578063e5a358c8146104ed57600080fd5b80637fa3a40e146103e157806384420860146103ea5780638d910dde146103fd5780638f111f3c1461043157806392d9f7821461044457806395fcea781461046b57806396cc5c7814610473578063b31761f81461047b578063cb23bcb51461048e57600080fd5b80632cbf74e5116101ae5780636d46e987116101725780636d46e987146103235780636e7df3e7146103465780636f12b0c914610359578063715ea34b1461036c57806371c3e6fe146103be57600080fd5b80632cbf74e5146102df5780633e5aa082146102ea5780636633ae85146102fd5780636ae71f12146103105780636c8904501461031857600080fd5b806302c992751461021757806306f13056146102385780631637be481461024e57806316af91a7146102815780631f7a92b2146102895780631f9566321461029e5780631ff64790146102b1578063258f0495146102c457806327957a49146102d7575b600080fd5b610222600160fd1b81565b60405161022f9190612fba565b60405180910390f35b610240610578565b60405190815260200161022f565b61027161025c366004612fcf565b60009081526008602052604090205460ff1690565b604051901515815260200161022f565b610222600081565b61029c610297366004613000565b6105f8565b005b61029c6102ac36600461304f565b610831565b61029c6102bf366004613088565b610941565b6102406102d2366004612fcf565b610abf565b610240602881565b610222600560fc1b81565b61029c6102f83660046130ac565b610b28565b61029c61030b366004612fcf565b610f08565b61029c6110f3565b610222600160fb1b81565b610271610331366004613088565b60096020526000908152604090205460ff1681565b61029c61035436600461304f565b6112a6565b61029c61036736600461313d565b6113b6565b61039f61037a366004612fcf565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b0390911660208301520161022f565b6102716103cc366004613088565b60036020526000908152604090205460ff1681565b61024060005481565b61029c6103f8366004612fcf565b6113cf565b6104247f000000000000000000000000000000000000000000000000000000000000000081565b60405161022f91906131a7565b61029c61043f3660046131bb565b61153c565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b61029c6118a6565b61029c611a74565b61029c61048936600461327d565b611ad4565b600254610424906001600160a01b031681565b600b54610424906001600160a01b031681565b61029c6104c23660046132e2565b611bdb565b6102406104d5366004612fcf565b611ed9565b61029c6104e83660046131bb565b611f5c565b610222600160fe1b81565b600154610424906001600160a01b031681565b6102407f000000000000000000000000000000000000000000000000000000000000000081565b61053a6120b2565b60408051948552602085019390935291830152606082015260800161022f565b61029c610568366004613323565b6120ea565b610222600160ff1b81565b600154604080516221048360e21b815290516000926001600160a01b0316916284120c916004808301926020929190829003018186803b1580156105bb57600080fd5b505afa1580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190613393565b905090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561064a5760405162461bcd60e51b8152600401610641906133ac565b60405180910390fd5b6001546001600160a01b03161561067457604051633bcd329760e21b815260040160405180910390fd5b6001600160a01b03821661069b57604051631ad0f74360e01b815260040160405180910390fd5b6000826001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d657600080fd5b505afa925050508015610706575060408051601f3d908101601f19168201909252610703918101906133f8565b60015b61070f57610725565b6001600160a01b0381161561072357600191505b505b8015157f00000000000000000000000000000000000000000000000000000000000000001515146107695760405163c3e31f8d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0385169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f591906133f8565b600280546001600160a01b0319166001600160a01b039290921691909117905561082c6108273684900384018461327d565b612561565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906133f8565b6001600160a01b0316336001600160a01b0316141580156108e35750600b546001600160a01b03163314155b1561090357336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260096020526040808220805460ff19168415151790555160049160008051602061396383398151915291a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c791906133f8565b6001600160a01b0316336001600160a01b031614610a875760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b91906133f8565b604051631194af8760e11b81526001600160a01b03928316600482015291166024820152604401610641565b600b80546001600160a01b0319166001600160a01b03831617905560405160059060008051602061396383398151915290600090a250565b600081815260086020908152604080832081518083019092525460ff81161515825261010090046001600160401b031691810182905290610b155760405162f20c5d60e01b815260048101849052602401610641565b602001516001600160401b031692915050565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16610b8057604051632dd9fc9760e01b815260040160405180910390fd5b6000806000610b8e8a612638565b925092509250600080600080610ba8878f60008f8f612838565b929650909450925090508e808514801590610bc557506000198114155b15610bed5760405163ac7411c960e01b81526004810186905260248101829052604401610641565b818482600080516020613943833981519152866000548c6003604051610c169493929190613415565b60405180910390a47f000000000000000000000000000000000000000000000000000000000000000015610c5d576040516386657a5360e01b815260040160405180910390fd5b3332148015610c8a57507f0000000000000000000000000000000000000000000000000000000000000000155b15610c9b57610c9b888648896129f4565b505050506001600160a01b038716159350610efe92505050573660006020610cc483601f61349f565b610cce91906134b7565b9050610200610cde6002836135bd565b610ce891906134b7565b610cf38260066135cc565b610cfd919061349f565b610d07908461349f565b9250333214610d195760009150610e6e565b6001600160a01b03841615610e6e57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b158015610d6157600080fd5b505afa925050508015610d9657506040513d6000823e601f3d908101601f19168201604052610d9391908101906135eb565b60015b610d9f57610e6e565b805115610e6c576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190613393565b905048817f00000000000000000000000000000000000000000000000000000000000000008451610e4a91906135cc565b610e5491906135cc565b610e5e91906134b7565b610e68908661349f565b9450505b505b846001600160a01b031663e3db8a49335a610e899087613690565b856040518463ffffffff1660e01b8152600401610ea8939291906136a7565b602060405180830381600087803b158015610ec257600080fd5b505af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa91906136c8565b5050505b5050505050505050565b600081604051602001610f1d91815260200190565b60408051808303601f190181529082905260015481516020830120638db5993b60e01b8452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b90606401602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190613393565b9050801561100d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d111531056515117d253925560621b6044820152606401610641565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161103d9190613715565b60405180910390a26000806110526001612c2a565b9150915060008060008061106c8660016000806001612838565b9350935093509350836000146110b75760405162461bcd60e51b815260206004820152601060248201526f1053149150511657d4d15457d253925560821b6044820152606401610641565b808385600080516020613943833981519152856000548a60026040516110e09493929190613415565b60405180910390a4505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114157600080fd5b505afa158015611155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117991906133f8565b6001600160a01b0316336001600160a01b0316146111d55760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b6001546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb5916004808301926020929190829003018186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125291906133f8565b6002549091506001600160a01b03808316911614156112845760405163d054909f60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c91906133f8565b6001600160a01b0316336001600160a01b0316141580156113585750600b546001600160a01b03163314155b1561137857336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260036020526040808220805460ff19168415151790555160019160008051602061396383398151915291a25050565b6040516331cee75f60e21b815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145591906133f8565b6001600160a01b0316336001600160a01b0316146114b15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008181526008602052604090205460ff166114e25760405162f20c5d60e01b815260048101829052602401610641565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a260405160039060008051602061396383398151915290600090a250565b826000805a90503332146115635760405163feb3d07160e01b815260040160405180910390fd5b3360009081526003602052604090205460ff1661159357604051632dd9fc9760e01b815260040160405180910390fd5b6000806115a18b8b8b612c56565b90925090508b81838c8c8b8b60008080806115bf89888a8989612838565b93509350935093508a84141580156115d957506000198b14155b156116015760405163ac7411c960e01b815260048101859052602481018c9052604401610641565b808385600080516020613943833981519152856000548f600060405161162a9493929190613415565b60405180910390a4505050506001600160a01b038c1615985061189a97505050505050505057366000602061166083601f61349f565b61166a91906134b7565b905061020061167a6002836135bd565b61168491906134b7565b61168f8260066135cc565b611699919061349f565b6116a3908461349f565b92503332146116b5576000915061180a565b6001600160a01b0384161561180a57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b1580156116fd57600080fd5b505afa92505050801561173257506040513d6000823e601f3d908101601f1916820160405261172f91908101906135eb565b60015b61173b5761180a565b805115611808576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561177d57600080fd5b505afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613393565b905048817f000000000000000000000000000000000000000000000000000000000000000084516117e691906135cc565b6117f091906135cc565b6117fa91906134b7565b611804908661349f565b9450505b505b846001600160a01b031663e3db8a49335a6118259087613690565b856040518463ffffffff1660e01b8152600401611844939291906136a7565b602060405180830381600087803b15801561185e57600080fd5b505af1158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189691906136c8565b5050505b50505050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156118ef5760405162461bcd60e51b8152600401610641906133ac565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461194c57604051631194af8760e11b81523360048201526001600160a01b0382166024820152604401610641565b60045415801561195c5750600554155b80156119685750600654155b80156119745750600754155b1561199257604051633bcd329760e21b815260040160405180910390fd5b6004546001600160401b0310806119b157506005546001600160401b03105b806119c457506006546001600160401b03105b806119d757506007546001600160401b03105b156119f55760405163d0afb66160e01b815260040160405180910390fd5b505060048054600a80546005805460068054600780546001600160401b03908116600160c01b026001600160c01b03938216600160801b02939093166001600160801b03958216600160401b026001600160801b0319909816919099161795909517929092169590951717909255600093849055908390559082905555565b467f00000000000000000000000000000000000000000000000000000000000000001415611ab557604051635180dd8360e11b815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2257600080fd5b505afa158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a91906133f8565b6001600160a01b0316336001600160a01b031614611bb65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b611bbf81612561565b604051600090600080516020613963833981519152908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2957600080fd5b505afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906133f8565b6001600160a01b0316336001600160a01b031614611cbd5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008282604051611ccf929190613748565b604051908190038120607f60f91b6020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310611d535760405162461bcd60e51b81526020600482015260136024820152726b657973657420697320746f6f206c6172676560681b6044820152606401610641565b60008181526008602052604090205460ff1615611d8657604051637d17eeed60e11b815260048101829052602401610641565b437f000000000000000000000000000000000000000000000000000000000000000015611e225760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613393565b90505b604080518082018252600181526001600160401b0383811660208084019182526000878152600890915284902092518354915168ffffffffffffffffff1990921690151568ffffffffffffffff0019161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef65572290611eb09088908890613758565b60405180910390a260405160029060008051602061396383398151915290600090a25050505050565b6001546040516316bf557960e01b8152600481018390526000916001600160a01b0316906316bf55799060240160206040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190613393565b92915050565b826000805a3360009081526003602052604090205490915060ff16158015611f8f57506002546001600160a01b03163314155b15611fad57604051632dd9fc9760e01b815260040160405180910390fd5b600080611fbb8b8b8b612c56565b909250905060008c82848c8b8b868080611fd88787838888612838565b929c5090945092509050888a14801590611ff457506000198914155b1561201c5760405163ac7411c960e01b8152600481018b9052602481018a9052604401610641565b80838b600080516020613943833981519152856000548d60016040516120459493929190613415565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d604051612088929190613758565b60405180910390a25050506001600160a01b0383161561189a57366000602061166083601f61349f565b6000806000806000806000806120c6612e15565b6001600160401b039384169b50918316995082169750169450505050505b90919293565b600054861161210c57604051633eb9f37d60e11b815260040160405180910390fd5b60006121bc8684612120602089018961379d565b61213060408a0160208b0161379d565b61213b60018d613690565b6040805160f89690961b6001600160f81b03191660208088019190915260609590951b6001600160601b031916602187015260c093841b6001600160c01b031990811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b600a5490915043906001600160401b03166121da602088018861379d565b6121e491906137c6565b6001600160401b03161061220b5760405163ad3515d960e01b815260040160405180910390fd5b600a544290600160801b90046001600160401b0316612230604088016020890161379d565b61223a91906137c6565b6001600160401b0316106122615760405163c76d17e560e01b815260040160405180910390fd5b600060018811156122f9576001546001600160a01b031663d5719dc261228860028b613690565b6040518263ffffffff1660e01b81526004016122a691815260200190565b60206040518083038186803b1580156122be57600080fd5b505afa1580156122d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f69190613393565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc29061233f908c613690565b6040518263ffffffff1660e01b815260040161235d91815260200190565b60206040518083038186803b15801561237557600080fd5b505afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613393565b146123cb576040516313947fd760e01b815260040160405180910390fd5b6000806123d78a612c2a565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b815260040160206040518083038186803b15801561243057600080fd5b505afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190613393565b905080600080808061247d8988838880612838565b9350935093509350808385600080516020613943833981519152856000548d60026040516124ae9493929190613415565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649161250791906137f1565b600060405180830381855afa9150503d8060008114612542576040519150601f19603f3d011682016040523d82523d6000602084013e612547565b606091505b509150915081801561255a575080516020145b9250505090565b80516001600160401b031080612581575060208101516001600160401b03105b80612596575060408101516001600160401b03105b806125ab575060608101516001600160401b03105b156125c9576040516309cfba7560e01b815260040160405180910390fd5b8051600a8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055565b6000612642612f93565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b15801561269e57600080fd5b505afa1580156126b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126da91908101906135eb565b90508051600014156126ff57604051631e693f5b60e11b815260040160405180910390fd5b60008061270b87612e86565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190613393565b6127b291906135cc565b6127bc91906135cc565b6040519091508390600560fc1b906127d890879060200161380d565b60408051601f19818403018152908290526127f7939291602001613843565b60405160208183030381529060405280519060200120826000481161281d576000612827565b61282748846134b7565b965096509650505050509193909250565b60008060008060005488101561286157604051633eb9f37d60e11b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190613393565b8811156129075760405163925f8bd360e01b815260040160405180910390fd5b60015460405163432cc52b60e11b8152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a5690608401608060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299a9190613886565b60008c90559296509094509250905086158015906129d657507f0000000000000000000000000000000000000000000000000000000000000000155b156129e8576129e889854860006129f4565b95509550955095915050565b327f000000000000000000000000000000000000000000000000000000000000000015612aa9576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a5757600080fd5b505afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190613393565b9050612a9b48826134b7565b612aa5908461349f565b9250505b6001600160401b03821115612af75760405162461bcd60e51b8152602060048201526014602482015273115615149057d1d054d7d393d517d55253950d8d60621b6044820152606401610641565b604080514260208201526001600160601b0319606084901b16918101919091526054810186905260748101859052609481018490526001600160c01b031960c084901b1660b482015260009060bc0160408051808303601f190181529082905260015481516020830120637a88b10760e01b84526001600160a01b0386811660048601526024850191909152919350600092911690637a88b10790604401602060405180830381600087803b158015612baf57600080fd5b505af1158015612bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be79190613393565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051612c199190613715565b60405180910390a250505050505050565b6000612c34612f93565b600080612c4085612e86565b8151602090920191909120969095509350505050565b6000612c60612f93565b6000612c6d85602861349f565b90507f0000000000000000000000000000000000000000000000000000000000000000811115612cd957604051634634691b60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610641565b600080612ce586612e86565b90925090508615612ddb57612d1588886000818110612d0657612d06613787565b9050013560f81c60f81b612f2d565b612d505787876000818110612d2c57612d2c613787565b9050013560f81c60f81b60405163359999ab60e11b81526004016106419190612fba565b600160ff1b8888600081612d6657612d66613787565b6001600160f81b031992013592909216161580159150612d87575060218710155b15612ddb576000612d9c602160018a8c6138bc565b612da5916138e6565b60008181526008602052604090205490915060ff16612dd95760405162f20c5d60e01b815260048101829052602401610641565b505b818888604051602001612df093929190613904565b60408051601f1981840301815291905280516020909101209890975095505050505050565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014612e52575060019250829150819050806120e4565b5050600a546001600160401b038082169350600160401b820481169250600160801b8204811691600160c01b9004166120e4565b6060612e90612f93565b6000612e9a612f88565b90506000816000015182602001518360400151846060015188604051602001612f0295949392919060c095861b6001600160c01b0319908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b60405160208183030381529060405290506028815114612f2457612f2461392c565b94909350915050565b60006001600160f81b031982161580612f5357506001600160f81b03198216600160ff1b145b80612f6b57506001600160f81b03198216601160fb1b145b80611f5657506001600160f81b03198216600160fd1b1492915050565b612f90612f93565b90565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160f81b031991909116815260200190565b600060208284031215612fe157600080fd5b5035919050565b6001600160a01b0381168114612ffd57600080fd5b50565b60008082840360a081121561301457600080fd5b833561301f81612fe8565b92506080601f198201121561303357600080fd5b506020830190509250929050565b8015158114612ffd57600080fd5b6000806040838503121561306257600080fd5b823561306d81612fe8565b9150602083013561307d81613041565b809150509250929050565b60006020828403121561309a57600080fd5b81356130a581612fe8565b9392505050565b600080600080600060a086880312156130c457600080fd5b853594506020860135935060408601356130dd81612fe8565b94979396509394606081013594506080013592915050565b60008083601f84011261310757600080fd5b5081356001600160401b0381111561311e57600080fd5b60208301915083602082850101111561313657600080fd5b9250929050565b60008060008060006080868803121561315557600080fd5b8535945060208601356001600160401b0381111561317257600080fd5b61317e888289016130f5565b90955093505060408601359150606086013561319981612fe8565b809150509295509295909350565b6001600160a01b0391909116815260200190565b600080600080600080600060c0888a0312156131d657600080fd5b8735965060208801356001600160401b038111156131f357600080fd5b6131ff8a828b016130f5565b90975095505060408801359350606088013561321a81612fe8565b969995985093969295946080840135945060a09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561327557613275613237565b604052919050565b60006080828403121561328f57600080fd5b604051608081018181106001600160401b03821117156132b1576132b1613237565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156132f557600080fd5b82356001600160401b0381111561330b57600080fd5b613317858286016130f5565b90969095509350505050565b60008060008060008060e0878903121561333c57600080fd5b86359550602087013560ff8116811461335457600080fd5b9450608087018881111561336757600080fd5b60408801945035925060a087013561337e81612fe8565b8092505060c087013590509295509295509295565b6000602082840312156133a557600080fd5b5051919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60006020828403121561340a57600080fd5b81516130a581612fe8565b600060e0820190508582528460208301526001600160401b038085511660408401528060208601511660608401528060408601511660808401528060608601511660a0840152506004831061347a57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134b2576134b2613489565b500190565b6000826134d457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156135145781600019048211156134fa576134fa613489565b8085161561350757918102915b93841c93908002906134de565b509250929050565b60008261352b57506001611f56565b8161353857506000611f56565b816001811461354e576002811461355857613574565b6001915050611f56565b60ff84111561356957613569613489565b50506001821b611f56565b5060208310610133831016604e8410600b8410161715613597575081810a611f56565b6135a183836134d9565b80600019048211156135b5576135b5613489565b029392505050565b60006130a560ff84168361351c565b60008160001904831182151516156135e6576135e6613489565b500290565b600060208083850312156135fe57600080fd5b82516001600160401b038082111561361557600080fd5b818501915085601f83011261362957600080fd5b81518181111561363b5761363b613237565b8060051b915061364c84830161324d565b818152918301840191848101908884111561366657600080fd5b938501935b838510156136845784518252938501939085019061366b565b98975050505050505050565b6000828210156136a2576136a2613489565b500390565b6001600160a01b039390931683526020830191909152604082015260600190565b6000602082840312156136da57600080fd5b81516130a581613041565b60005b838110156137005781810151838201526020016136e8565b8381111561370f576000848401525b50505050565b60208152600082518060208401526137348160408501602087016136e5565b601f01601f19169190910160400192915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137af57600080fd5b81356001600160401b03811681146130a557600080fd5b60006001600160401b038083168185168083038211156137e8576137e8613489565b01949350505050565b600082516138038184602087016136e5565b9190910192915050565b815160009082906020808601845b838110156138375781518552938201939082019060010161381b565b50929695505050505050565b600084516138558184602089016136e5565b6001600160f81b0319851690830190815283516138798160018401602088016136e5565b0160010195945050505050565b6000806000806080858703121561389c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080858511156138cc57600080fd5b838611156138d957600080fd5b5050820193919092039150565b80356020831015611f5657600019602084900360031b1b1692915050565b600084516139168184602089016136e5565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fdfe7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7ea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456ea26469706673582212206705d8aed9a2fb3e963a10bd89ec2fde4c076711323861063b3ca592a3f8a7c664736f6c63430008090033",
1121
+ "bytecode": "0x610160604052306080526202000060a05246610100526200002b620001bc602090811b620024c917901c565b1515610120523480156200003e57600080fd5b5060405162003e2438038062003e24833981016040819052620000619162000295565b8282828260e081815250506101205115620000a5576001600160a01b038216156200009f576040516386657a5360e01b815260040160405180910390fd5b620000ee565b6001600160a01b038216620000ee576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0391821660c052151561014052600180549882166001600160a01b0319998a161781556002805490991633179098558551600a80546020808a01516040808c01516060909c01516001600160401b03908116600160c01b026001600160c01b039d8216600160801b029d909d166001600160801b0393821668010000000000000000026001600160801b031990961691909716179390931716939093179890981790559616600090815260039096525050509120805460ff191690921790915550620003b6565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b179052905160009182918291606491620001fc919062000378565b600060405180830381855afa9150503d806000811462000239576040519150601f19603f3d011682016040523d82523d6000602084013e6200023e565b606091505b509150915081801562000252575080516020145b9250505090565b6001600160a01b03811681146200026f57600080fd5b50565b80516200027f8162000259565b919050565b805180151581146200027f57600080fd5b600080600080600080868803610120811215620002b157600080fd5b8751620002be8162000259565b6020890151909750620002d18162000259565b95506080603f1982011215620002e657600080fd5b50604051608081016001600160401b03811182821017156200031857634e487b7160e01b600052604160045260246000fd5b806040525060408801518152606088015160208201526080880151604082015260a088015160608201528094505060c087015192506200035b60e0880162000272565b91506200036c610100880162000284565b90509295509295509295565b6000825160005b818110156200039b57602081860181015185830152016200037f565b81811115620003ab576000828501525b509190910192915050565b60805160a05160c05160e0516101005161012051610140516139b86200046c600039600081816104490152818161072a01528181610c6901526129b5015260008181610c2001528181611d8901526129f7015260008181611a770152612e1d01526000818161051001528181612c710152612cad01526000818161040201528181610b2b015281816126470152612719015260008181610e1f01526117bb01526000818161060301526118b101526139b86000f3fe608060405234801561001057600080fd5b50600436106102125760003560e01c80637fa3a40e11610120578063cc2a1a0c116100b8578063e78cea921161007c578063e78cea92146104f8578063e8eb1dc31461050b578063ebea461d14610532578063f19815781461055a578063f60a50911461056d57600080fd5b8063cc2a1a0c146104a1578063d1ce8da8146104b4578063d9dd67ab146104c7578063e0bc9729146104da578063e5a358c8146104ed57600080fd5b80637fa3a40e146103e157806384420860146103ea5780638d910dde146103fd5780638f111f3c1461043157806392d9f7821461044457806395fcea781461046b57806396cc5c7814610473578063b31761f81461047b578063cb23bcb51461048e57600080fd5b80632cbf74e5116101ae5780636d46e987116101725780636d46e987146103235780636e7df3e7146103465780636f12b0c914610359578063715ea34b1461036c57806371c3e6fe146103be57600080fd5b80632cbf74e5146102df5780633e5aa082146102ea5780636633ae85146102fd5780636ae71f12146103105780636c8904501461031857600080fd5b806302c992751461021757806306f13056146102385780631637be481461024e57806316af91a7146102815780631f7a92b2146102895780631f9566321461029e5780631ff64790146102b1578063258f0495146102c457806327957a49146102d7575b600080fd5b610222600160fd1b81565b60405161022f9190612fba565b60405180910390f35b610240610578565b60405190815260200161022f565b61027161025c366004612fcf565b60009081526008602052604090205460ff1690565b604051901515815260200161022f565b610222600081565b61029c610297366004613000565b6105f8565b005b61029c6102ac36600461304f565b610831565b61029c6102bf366004613088565b610941565b6102406102d2366004612fcf565b610abf565b610240602881565b610222600560fc1b81565b61029c6102f83660046130ac565b610b28565b61029c61030b366004612fcf565b610f08565b61029c6110f3565b610222600160fb1b81565b610271610331366004613088565b60096020526000908152604090205460ff1681565b61029c61035436600461304f565b6112a6565b61029c61036736600461313d565b6113b6565b61039f61037a366004612fcf565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b0390911660208301520161022f565b6102716103cc366004613088565b60036020526000908152604090205460ff1681565b61024060005481565b61029c6103f8366004612fcf565b6113cf565b6104247f000000000000000000000000000000000000000000000000000000000000000081565b60405161022f91906131a7565b61029c61043f3660046131bb565b61153c565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b61029c6118a6565b61029c611a74565b61029c61048936600461327d565b611ad4565b600254610424906001600160a01b031681565b600b54610424906001600160a01b031681565b61029c6104c23660046132e2565b611bdb565b6102406104d5366004612fcf565b611ed9565b61029c6104e83660046131bb565b611f5c565b610222600160fe1b81565b600154610424906001600160a01b031681565b6102407f000000000000000000000000000000000000000000000000000000000000000081565b61053a6120b2565b60408051948552602085019390935291830152606082015260800161022f565b61029c610568366004613323565b6120ea565b610222600160ff1b81565b600154604080516221048360e21b815290516000926001600160a01b0316916284120c916004808301926020929190829003018186803b1580156105bb57600080fd5b505afa1580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190613393565b905090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561064a5760405162461bcd60e51b8152600401610641906133ac565b60405180910390fd5b6001546001600160a01b03161561067457604051633bcd329760e21b815260040160405180910390fd5b6001600160a01b03821661069b57604051631ad0f74360e01b815260040160405180910390fd5b6000826001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d657600080fd5b505afa925050508015610706575060408051601f3d908101601f19168201909252610703918101906133f8565b60015b61070f57610725565b6001600160a01b0381161561072357600191505b505b8015157f00000000000000000000000000000000000000000000000000000000000000001515146107695760405163c3e31f8d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0385169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f591906133f8565b600280546001600160a01b0319166001600160a01b039290921691909117905561082c6108273684900384018461327d565b612561565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906133f8565b6001600160a01b0316336001600160a01b0316141580156108e35750600b546001600160a01b03163314155b1561090357336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260096020526040808220805460ff19168415151790555160049160008051602061396383398151915291a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c791906133f8565b6001600160a01b0316336001600160a01b031614610a875760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b91906133f8565b604051631194af8760e11b81526001600160a01b03928316600482015291166024820152604401610641565b600b80546001600160a01b0319166001600160a01b03831617905560405160059060008051602061396383398151915290600090a250565b600081815260086020908152604080832081518083019092525460ff81161515825261010090046001600160401b031691810182905290610b155760405162f20c5d60e01b815260048101849052602401610641565b602001516001600160401b031692915050565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16610b8057604051632dd9fc9760e01b815260040160405180910390fd5b6000806000610b8e8a612638565b925092509250600080600080610ba8878f60008f8f612838565b929650909450925090508e808514801590610bc557506000198114155b15610bed5760405163ac7411c960e01b81526004810186905260248101829052604401610641565b818482600080516020613943833981519152866000548c6003604051610c169493929190613415565b60405180910390a47f000000000000000000000000000000000000000000000000000000000000000015610c5d576040516386657a5360e01b815260040160405180910390fd5b3332148015610c8a57507f0000000000000000000000000000000000000000000000000000000000000000155b15610c9b57610c9b888648896129f4565b505050506001600160a01b038716159350610efe92505050573660006020610cc483601f61349f565b610cce91906134b7565b9050610200610cde6002836135bd565b610ce891906134b7565b610cf38260066135cc565b610cfd919061349f565b610d07908461349f565b9250333214610d195760009150610e6e565b6001600160a01b03841615610e6e57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b158015610d6157600080fd5b505afa925050508015610d9657506040513d6000823e601f3d908101601f19168201604052610d9391908101906135eb565b60015b610d9f57610e6e565b805115610e6c576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190613393565b905048817f00000000000000000000000000000000000000000000000000000000000000008451610e4a91906135cc565b610e5491906135cc565b610e5e91906134b7565b610e68908661349f565b9450505b505b846001600160a01b031663e3db8a49335a610e899087613690565b856040518463ffffffff1660e01b8152600401610ea8939291906136a7565b602060405180830381600087803b158015610ec257600080fd5b505af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa91906136c8565b5050505b5050505050505050565b600081604051602001610f1d91815260200190565b60408051808303601f190181529082905260015481516020830120638db5993b60e01b8452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b90606401602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190613393565b9050801561100d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d111531056515117d253925560621b6044820152606401610641565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161103d9190613715565b60405180910390a26000806110526001612c2a565b9150915060008060008061106c8660016000806001612838565b9350935093509350836000146110b75760405162461bcd60e51b815260206004820152601060248201526f1053149150511657d4d15457d253925560821b6044820152606401610641565b808385600080516020613943833981519152856000548a60026040516110e09493929190613415565b60405180910390a4505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114157600080fd5b505afa158015611155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117991906133f8565b6001600160a01b0316336001600160a01b0316146111d55760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b6001546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb5916004808301926020929190829003018186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125291906133f8565b6002549091506001600160a01b03808316911614156112845760405163d054909f60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c91906133f8565b6001600160a01b0316336001600160a01b0316141580156113585750600b546001600160a01b03163314155b1561137857336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260036020526040808220805460ff19168415151790555160019160008051602061396383398151915291a25050565b6040516331cee75f60e21b815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145591906133f8565b6001600160a01b0316336001600160a01b0316146114b15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008181526008602052604090205460ff166114e25760405162f20c5d60e01b815260048101829052602401610641565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a260405160039060008051602061396383398151915290600090a250565b826000805a90503332146115635760405163feb3d07160e01b815260040160405180910390fd5b3360009081526003602052604090205460ff1661159357604051632dd9fc9760e01b815260040160405180910390fd5b6000806115a18b8b8b612c56565b90925090508b81838c8c8b8b60008080806115bf89888a8989612838565b93509350935093508a84141580156115d957506000198b14155b156116015760405163ac7411c960e01b815260048101859052602481018c9052604401610641565b808385600080516020613943833981519152856000548f600060405161162a9493929190613415565b60405180910390a4505050506001600160a01b038c1615985061189a97505050505050505057366000602061166083601f61349f565b61166a91906134b7565b905061020061167a6002836135bd565b61168491906134b7565b61168f8260066135cc565b611699919061349f565b6116a3908461349f565b92503332146116b5576000915061180a565b6001600160a01b0384161561180a57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b1580156116fd57600080fd5b505afa92505050801561173257506040513d6000823e601f3d908101601f1916820160405261172f91908101906135eb565b60015b61173b5761180a565b805115611808576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561177d57600080fd5b505afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613393565b905048817f000000000000000000000000000000000000000000000000000000000000000084516117e691906135cc565b6117f091906135cc565b6117fa91906134b7565b611804908661349f565b9450505b505b846001600160a01b031663e3db8a49335a6118259087613690565b856040518463ffffffff1660e01b8152600401611844939291906136a7565b602060405180830381600087803b15801561185e57600080fd5b505af1158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189691906136c8565b5050505b50505050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156118ef5760405162461bcd60e51b8152600401610641906133ac565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461194c57604051631194af8760e11b81523360048201526001600160a01b0382166024820152604401610641565b60045415801561195c5750600554155b80156119685750600654155b80156119745750600754155b1561199257604051633bcd329760e21b815260040160405180910390fd5b6004546001600160401b0310806119b157506005546001600160401b03105b806119c457506006546001600160401b03105b806119d757506007546001600160401b03105b156119f55760405163d0afb66160e01b815260040160405180910390fd5b505060048054600a80546005805460068054600780546001600160401b03908116600160c01b026001600160c01b03938216600160801b02939093166001600160801b03958216600160401b026001600160801b0319909816919099161795909517929092169590951717909255600093849055908390559082905555565b467f00000000000000000000000000000000000000000000000000000000000000001415611ab557604051635180dd8360e11b815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2257600080fd5b505afa158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a91906133f8565b6001600160a01b0316336001600160a01b031614611bb65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b611bbf81612561565b604051600090600080516020613963833981519152908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2957600080fd5b505afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906133f8565b6001600160a01b0316336001600160a01b031614611cbd5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008282604051611ccf929190613748565b604051908190038120607f60f91b6020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310611d535760405162461bcd60e51b81526020600482015260136024820152726b657973657420697320746f6f206c6172676560681b6044820152606401610641565b60008181526008602052604090205460ff1615611d8657604051637d17eeed60e11b815260048101829052602401610641565b437f000000000000000000000000000000000000000000000000000000000000000015611e225760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613393565b90505b604080518082018252600181526001600160401b0383811660208084019182526000878152600890915284902092518354915168ffffffffffffffffff1990921690151568ffffffffffffffff0019161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef65572290611eb09088908890613758565b60405180910390a260405160029060008051602061396383398151915290600090a25050505050565b6001546040516316bf557960e01b8152600481018390526000916001600160a01b0316906316bf55799060240160206040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190613393565b92915050565b826000805a3360009081526003602052604090205490915060ff16158015611f8f57506002546001600160a01b03163314155b15611fad57604051632dd9fc9760e01b815260040160405180910390fd5b600080611fbb8b8b8b612c56565b909250905060008c82848c8b8b868080611fd88787838888612838565b929c5090945092509050888a14801590611ff457506000198914155b1561201c5760405163ac7411c960e01b8152600481018b9052602481018a9052604401610641565b80838b600080516020613943833981519152856000548d60016040516120459493929190613415565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d604051612088929190613758565b60405180910390a25050506001600160a01b0383161561189a57366000602061166083601f61349f565b6000806000806000806000806120c6612e15565b6001600160401b039384169b50918316995082169750169450505050505b90919293565b600054861161210c57604051633eb9f37d60e11b815260040160405180910390fd5b60006121bc8684612120602089018961379d565b61213060408a0160208b0161379d565b61213b60018d613690565b6040805160f89690961b6001600160f81b03191660208088019190915260609590951b6001600160601b031916602187015260c093841b6001600160c01b031990811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b600a5490915043906001600160401b03166121da602088018861379d565b6121e491906137c6565b6001600160401b03161061220b5760405163ad3515d960e01b815260040160405180910390fd5b600a544290600160801b90046001600160401b0316612230604088016020890161379d565b61223a91906137c6565b6001600160401b0316106122615760405163c76d17e560e01b815260040160405180910390fd5b600060018811156122f9576001546001600160a01b031663d5719dc261228860028b613690565b6040518263ffffffff1660e01b81526004016122a691815260200190565b60206040518083038186803b1580156122be57600080fd5b505afa1580156122d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f69190613393565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc29061233f908c613690565b6040518263ffffffff1660e01b815260040161235d91815260200190565b60206040518083038186803b15801561237557600080fd5b505afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613393565b146123cb576040516313947fd760e01b815260040160405180910390fd5b6000806123d78a612c2a565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b815260040160206040518083038186803b15801561243057600080fd5b505afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190613393565b905080600080808061247d8988838880612838565b9350935093509350808385600080516020613943833981519152856000548d60026040516124ae9493929190613415565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649161250791906137f1565b600060405180830381855afa9150503d8060008114612542576040519150601f19603f3d011682016040523d82523d6000602084013e612547565b606091505b509150915081801561255a575080516020145b9250505090565b80516001600160401b031080612581575060208101516001600160401b03105b80612596575060408101516001600160401b03105b806125ab575060608101516001600160401b03105b156125c9576040516309cfba7560e01b815260040160405180910390fd5b8051600a8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055565b6000612642612f93565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b15801561269e57600080fd5b505afa1580156126b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126da91908101906135eb565b90508051600014156126ff57604051631e693f5b60e11b815260040160405180910390fd5b60008061270b87612e86565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190613393565b6127b291906135cc565b6127bc91906135cc565b6040519091508390600560fc1b906127d890879060200161380d565b60408051601f19818403018152908290526127f7939291602001613843565b60405160208183030381529060405280519060200120826000481161281d576000612827565b61282748846134b7565b965096509650505050509193909250565b60008060008060005488101561286157604051633eb9f37d60e11b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190613393565b8811156129075760405163925f8bd360e01b815260040160405180910390fd5b60015460405163432cc52b60e11b8152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a5690608401608060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299a9190613886565b60008c90559296509094509250905086158015906129d657507f0000000000000000000000000000000000000000000000000000000000000000155b156129e8576129e889854860006129f4565b95509550955095915050565b327f000000000000000000000000000000000000000000000000000000000000000015612aa9576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a5757600080fd5b505afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190613393565b9050612a9b48826134b7565b612aa5908461349f565b9250505b6001600160401b03821115612af75760405162461bcd60e51b8152602060048201526014602482015273115615149057d1d054d7d393d517d55253950d8d60621b6044820152606401610641565b604080514260208201526001600160601b0319606084901b16918101919091526054810186905260748101859052609481018490526001600160c01b031960c084901b1660b482015260009060bc0160408051808303601f190181529082905260015481516020830120637a88b10760e01b84526001600160a01b0386811660048601526024850191909152919350600092911690637a88b10790604401602060405180830381600087803b158015612baf57600080fd5b505af1158015612bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be79190613393565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051612c199190613715565b60405180910390a250505050505050565b6000612c34612f93565b600080612c4085612e86565b8151602090920191909120969095509350505050565b6000612c60612f93565b6000612c6d85602861349f565b90507f0000000000000000000000000000000000000000000000000000000000000000811115612cd957604051634634691b60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610641565b600080612ce586612e86565b90925090508615612ddb57612d1588886000818110612d0657612d06613787565b9050013560f81c60f81b612f2d565b612d505787876000818110612d2c57612d2c613787565b9050013560f81c60f81b60405163359999ab60e11b81526004016106419190612fba565b600160ff1b8888600081612d6657612d66613787565b6001600160f81b031992013592909216161580159150612d87575060218710155b15612ddb576000612d9c602160018a8c6138bc565b612da5916138e6565b60008181526008602052604090205490915060ff16612dd95760405162f20c5d60e01b815260048101829052602401610641565b505b818888604051602001612df093929190613904565b60408051601f1981840301815291905280516020909101209890975095505050505050565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014612e52575060019250829150819050806120e4565b5050600a546001600160401b038082169350600160401b820481169250600160801b8204811691600160c01b9004166120e4565b6060612e90612f93565b6000612e9a612f88565b90506000816000015182602001518360400151846060015188604051602001612f0295949392919060c095861b6001600160c01b0319908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b60405160208183030381529060405290506028815114612f2457612f2461392c565b94909350915050565b60006001600160f81b031982161580612f5357506001600160f81b03198216600160ff1b145b80612f6b57506001600160f81b03198216601160fb1b145b80611f5657506001600160f81b03198216600160fd1b1492915050565b612f90612f93565b90565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160f81b031991909116815260200190565b600060208284031215612fe157600080fd5b5035919050565b6001600160a01b0381168114612ffd57600080fd5b50565b60008082840360a081121561301457600080fd5b833561301f81612fe8565b92506080601f198201121561303357600080fd5b506020830190509250929050565b8015158114612ffd57600080fd5b6000806040838503121561306257600080fd5b823561306d81612fe8565b9150602083013561307d81613041565b809150509250929050565b60006020828403121561309a57600080fd5b81356130a581612fe8565b9392505050565b600080600080600060a086880312156130c457600080fd5b853594506020860135935060408601356130dd81612fe8565b94979396509394606081013594506080013592915050565b60008083601f84011261310757600080fd5b5081356001600160401b0381111561311e57600080fd5b60208301915083602082850101111561313657600080fd5b9250929050565b60008060008060006080868803121561315557600080fd5b8535945060208601356001600160401b0381111561317257600080fd5b61317e888289016130f5565b90955093505060408601359150606086013561319981612fe8565b809150509295509295909350565b6001600160a01b0391909116815260200190565b600080600080600080600060c0888a0312156131d657600080fd5b8735965060208801356001600160401b038111156131f357600080fd5b6131ff8a828b016130f5565b90975095505060408801359350606088013561321a81612fe8565b969995985093969295946080840135945060a09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561327557613275613237565b604052919050565b60006080828403121561328f57600080fd5b604051608081018181106001600160401b03821117156132b1576132b1613237565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156132f557600080fd5b82356001600160401b0381111561330b57600080fd5b613317858286016130f5565b90969095509350505050565b60008060008060008060e0878903121561333c57600080fd5b86359550602087013560ff8116811461335457600080fd5b9450608087018881111561336757600080fd5b60408801945035925060a087013561337e81612fe8565b8092505060c087013590509295509295509295565b6000602082840312156133a557600080fd5b5051919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60006020828403121561340a57600080fd5b81516130a581612fe8565b600060e0820190508582528460208301526001600160401b038085511660408401528060208601511660608401528060408601511660808401528060608601511660a0840152506004831061347a57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134b2576134b2613489565b500190565b6000826134d457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156135145781600019048211156134fa576134fa613489565b8085161561350757918102915b93841c93908002906134de565b509250929050565b60008261352b57506001611f56565b8161353857506000611f56565b816001811461354e576002811461355857613574565b6001915050611f56565b60ff84111561356957613569613489565b50506001821b611f56565b5060208310610133831016604e8410600b8410161715613597575081810a611f56565b6135a183836134d9565b80600019048211156135b5576135b5613489565b029392505050565b60006130a560ff84168361351c565b60008160001904831182151516156135e6576135e6613489565b500290565b600060208083850312156135fe57600080fd5b82516001600160401b038082111561361557600080fd5b818501915085601f83011261362957600080fd5b81518181111561363b5761363b613237565b8060051b915061364c84830161324d565b818152918301840191848101908884111561366657600080fd5b938501935b838510156136845784518252938501939085019061366b565b98975050505050505050565b6000828210156136a2576136a2613489565b500390565b6001600160a01b039390931683526020830191909152604082015260600190565b6000602082840312156136da57600080fd5b81516130a581613041565b60005b838110156137005781810151838201526020016136e8565b8381111561370f576000848401525b50505050565b60208152600082518060208401526137348160408501602087016136e5565b601f01601f19169190910160400192915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137af57600080fd5b81356001600160401b03811681146130a557600080fd5b60006001600160401b038083168185168083038211156137e8576137e8613489565b01949350505050565b600082516138038184602087016136e5565b9190910192915050565b815160009082906020808601845b838110156138375781518552938201939082019060010161381b565b50929695505050505050565b600084516138558184602089016136e5565b6001600160f81b0319851690830190815283516138798160018401602088016136e5565b0160010195945050505050565b6000806000806080858703121561389c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080858511156138cc57600080fd5b838611156138d957600080fd5b5050820193919092039150565b80356020831015611f5657600019602084900360031b1b1692915050565b600084516139168184602089016136e5565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fdfe7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7ea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456ea264697066735822122092e6bec9ac7af08f9eb1cf9fffe3ef64cd20af53d4830929875c2f323a63f6c864736f6c63430008090033",
1122
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102125760003560e01c80637fa3a40e11610120578063cc2a1a0c116100b8578063e78cea921161007c578063e78cea92146104f8578063e8eb1dc31461050b578063ebea461d14610532578063f19815781461055a578063f60a50911461056d57600080fd5b8063cc2a1a0c146104a1578063d1ce8da8146104b4578063d9dd67ab146104c7578063e0bc9729146104da578063e5a358c8146104ed57600080fd5b80637fa3a40e146103e157806384420860146103ea5780638d910dde146103fd5780638f111f3c1461043157806392d9f7821461044457806395fcea781461046b57806396cc5c7814610473578063b31761f81461047b578063cb23bcb51461048e57600080fd5b80632cbf74e5116101ae5780636d46e987116101725780636d46e987146103235780636e7df3e7146103465780636f12b0c914610359578063715ea34b1461036c57806371c3e6fe146103be57600080fd5b80632cbf74e5146102df5780633e5aa082146102ea5780636633ae85146102fd5780636ae71f12146103105780636c8904501461031857600080fd5b806302c992751461021757806306f13056146102385780631637be481461024e57806316af91a7146102815780631f7a92b2146102895780631f9566321461029e5780631ff64790146102b1578063258f0495146102c457806327957a49146102d7575b600080fd5b610222600160fd1b81565b60405161022f9190612fba565b60405180910390f35b610240610578565b60405190815260200161022f565b61027161025c366004612fcf565b60009081526008602052604090205460ff1690565b604051901515815260200161022f565b610222600081565b61029c610297366004613000565b6105f8565b005b61029c6102ac36600461304f565b610831565b61029c6102bf366004613088565b610941565b6102406102d2366004612fcf565b610abf565b610240602881565b610222600560fc1b81565b61029c6102f83660046130ac565b610b28565b61029c61030b366004612fcf565b610f08565b61029c6110f3565b610222600160fb1b81565b610271610331366004613088565b60096020526000908152604090205460ff1681565b61029c61035436600461304f565b6112a6565b61029c61036736600461313d565b6113b6565b61039f61037a366004612fcf565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b0390911660208301520161022f565b6102716103cc366004613088565b60036020526000908152604090205460ff1681565b61024060005481565b61029c6103f8366004612fcf565b6113cf565b6104247f000000000000000000000000000000000000000000000000000000000000000081565b60405161022f91906131a7565b61029c61043f3660046131bb565b61153c565b6102717f000000000000000000000000000000000000000000000000000000000000000081565b61029c6118a6565b61029c611a74565b61029c61048936600461327d565b611ad4565b600254610424906001600160a01b031681565b600b54610424906001600160a01b031681565b61029c6104c23660046132e2565b611bdb565b6102406104d5366004612fcf565b611ed9565b61029c6104e83660046131bb565b611f5c565b610222600160fe1b81565b600154610424906001600160a01b031681565b6102407f000000000000000000000000000000000000000000000000000000000000000081565b61053a6120b2565b60408051948552602085019390935291830152606082015260800161022f565b61029c610568366004613323565b6120ea565b610222600160ff1b81565b600154604080516221048360e21b815290516000926001600160a01b0316916284120c916004808301926020929190829003018186803b1580156105bb57600080fd5b505afa1580156105cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f39190613393565b905090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561064a5760405162461bcd60e51b8152600401610641906133ac565b60405180910390fd5b6001546001600160a01b03161561067457604051633bcd329760e21b815260040160405180910390fd5b6001600160a01b03821661069b57604051631ad0f74360e01b815260040160405180910390fd5b6000826001600160a01b031663e1758bd86040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d657600080fd5b505afa925050508015610706575060408051601f3d908101601f19168201909252610703918101906133f8565b60015b61070f57610725565b6001600160a01b0381161561072357600191505b505b8015157f00000000000000000000000000000000000000000000000000000000000000001515146107695760405163c3e31f8d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0385169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f591906133f8565b600280546001600160a01b0319166001600160a01b039290921691909117905561082c6108273684900384018461327d565b612561565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b791906133f8565b6001600160a01b0316336001600160a01b0316141580156108e35750600b546001600160a01b03163314155b1561090357336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260096020526040808220805460ff19168415151790555160049160008051602061396383398151915291a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c791906133f8565b6001600160a01b0316336001600160a01b031614610a875760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5b91906133f8565b604051631194af8760e11b81526001600160a01b03928316600482015291166024820152604401610641565b600b80546001600160a01b0319166001600160a01b03831617905560405160059060008051602061396383398151915290600090a250565b600081815260086020908152604080832081518083019092525460ff81161515825261010090046001600160401b031691810182905290610b155760405162f20c5d60e01b815260048101849052602401610641565b602001516001600160401b031692915050565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16610b8057604051632dd9fc9760e01b815260040160405180910390fd5b6000806000610b8e8a612638565b925092509250600080600080610ba8878f60008f8f612838565b929650909450925090508e808514801590610bc557506000198114155b15610bed5760405163ac7411c960e01b81526004810186905260248101829052604401610641565b818482600080516020613943833981519152866000548c6003604051610c169493929190613415565b60405180910390a47f000000000000000000000000000000000000000000000000000000000000000015610c5d576040516386657a5360e01b815260040160405180910390fd5b3332148015610c8a57507f0000000000000000000000000000000000000000000000000000000000000000155b15610c9b57610c9b888648896129f4565b505050506001600160a01b038716159350610efe92505050573660006020610cc483601f61349f565b610cce91906134b7565b9050610200610cde6002836135bd565b610ce891906134b7565b610cf38260066135cc565b610cfd919061349f565b610d07908461349f565b9250333214610d195760009150610e6e565b6001600160a01b03841615610e6e57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b158015610d6157600080fd5b505afa925050508015610d9657506040513d6000823e601f3d908101601f19168201604052610d9391908101906135eb565b60015b610d9f57610e6e565b805115610e6c576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190613393565b905048817f00000000000000000000000000000000000000000000000000000000000000008451610e4a91906135cc565b610e5491906135cc565b610e5e91906134b7565b610e68908661349f565b9450505b505b846001600160a01b031663e3db8a49335a610e899087613690565b856040518463ffffffff1660e01b8152600401610ea8939291906136a7565b602060405180830381600087803b158015610ec257600080fd5b505af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa91906136c8565b5050505b5050505050505050565b600081604051602001610f1d91815260200190565b60408051808303601f190181529082905260015481516020830120638db5993b60e01b8452600b6004850152600060248501819052604485019190915291935090916001600160a01b0390911690638db5993b90606401602060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190613393565b9050801561100d5760405162461bcd60e51b81526020600482015260146024820152731053149150511657d111531056515117d253925560621b6044820152606401610641565b807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b8360405161103d9190613715565b60405180910390a26000806110526001612c2a565b9150915060008060008061106c8660016000806001612838565b9350935093509350836000146110b75760405162461bcd60e51b815260206004820152601060248201526f1053149150511657d4d15457d253925560821b6044820152606401610641565b808385600080516020613943833981519152856000548a60026040516110e09493929190613415565b60405180910390a4505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114157600080fd5b505afa158015611155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117991906133f8565b6001600160a01b0316336001600160a01b0316146111d55760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b6001546040805163cb23bcb560e01b815290516000926001600160a01b03169163cb23bcb5916004808301926020929190829003018186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125291906133f8565b6002549091506001600160a01b03808316911614156112845760405163d054909f60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c91906133f8565b6001600160a01b0316336001600160a01b0316141580156113585750600b546001600160a01b03163314155b1561137857336040516333059da160e11b815260040161064191906131a7565b6001600160a01b038216600090815260036020526040808220805460ff19168415151790555160019160008051602061396383398151915291a25050565b6040516331cee75f60e21b815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145591906133f8565b6001600160a01b0316336001600160a01b0316146114b15760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008181526008602052604090205460ff166114e25760405162f20c5d60e01b815260048101829052602401610641565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a260405160039060008051602061396383398151915290600090a250565b826000805a90503332146115635760405163feb3d07160e01b815260040160405180910390fd5b3360009081526003602052604090205460ff1661159357604051632dd9fc9760e01b815260040160405180910390fd5b6000806115a18b8b8b612c56565b90925090508b81838c8c8b8b60008080806115bf89888a8989612838565b93509350935093508a84141580156115d957506000198b14155b156116015760405163ac7411c960e01b815260048101859052602481018c9052604401610641565b808385600080516020613943833981519152856000548f600060405161162a9493929190613415565b60405180910390a4505050506001600160a01b038c1615985061189a97505050505050505057366000602061166083601f61349f565b61166a91906134b7565b905061020061167a6002836135bd565b61168491906134b7565b61168f8260066135cc565b611699919061349f565b6116a3908461349f565b92503332146116b5576000915061180a565b6001600160a01b0384161561180a57836001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b1580156116fd57600080fd5b505afa92505050801561173257506040513d6000823e601f3d908101601f1916820160405261172f91908101906135eb565b60015b61173b5761180a565b805115611808576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561177d57600080fd5b505afa158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613393565b905048817f000000000000000000000000000000000000000000000000000000000000000084516117e691906135cc565b6117f091906135cc565b6117fa91906134b7565b611804908661349f565b9450505b505b846001600160a01b031663e3db8a49335a6118259087613690565b856040518463ffffffff1660e01b8152600401611844939291906136a7565b602060405180830381600087803b15801561185e57600080fd5b505af1158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189691906136c8565b5050505b50505050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156118ef5760405162461bcd60e51b8152600401610641906133ac565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461194c57604051631194af8760e11b81523360048201526001600160a01b0382166024820152604401610641565b60045415801561195c5750600554155b80156119685750600654155b80156119745750600754155b1561199257604051633bcd329760e21b815260040160405180910390fd5b6004546001600160401b0310806119b157506005546001600160401b03105b806119c457506006546001600160401b03105b806119d757506007546001600160401b03105b156119f55760405163d0afb66160e01b815260040160405180910390fd5b505060048054600a80546005805460068054600780546001600160401b03908116600160c01b026001600160c01b03938216600160801b02939093166001600160801b03958216600160401b026001600160801b0319909816919099161795909517929092169590951717909255600093849055908390559082905555565b467f00000000000000000000000000000000000000000000000000000000000000001415611ab557604051635180dd8360e11b815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2257600080fd5b505afa158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a91906133f8565b6001600160a01b0316336001600160a01b031614611bb65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b611bbf81612561565b604051600090600080516020613963833981519152908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2957600080fd5b505afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6191906133f8565b6001600160a01b0316336001600160a01b031614611cbd5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610a2357600080fd5b60008282604051611ccf929190613748565b604051908190038120607f60f91b6020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310611d535760405162461bcd60e51b81526020600482015260136024820152726b657973657420697320746f6f206c6172676560681b6044820152606401610641565b60008181526008602052604090205460ff1615611d8657604051637d17eeed60e11b815260048101829052602401610641565b437f000000000000000000000000000000000000000000000000000000000000000015611e225760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613393565b90505b604080518082018252600181526001600160401b0383811660208084019182526000878152600890915284902092518354915168ffffffffffffffffff1990921690151568ffffffffffffffff0019161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef65572290611eb09088908890613758565b60405180910390a260405160029060008051602061396383398151915290600090a25050505050565b6001546040516316bf557960e01b8152600481018390526000916001600160a01b0316906316bf55799060240160206040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190613393565b92915050565b826000805a3360009081526003602052604090205490915060ff16158015611f8f57506002546001600160a01b03163314155b15611fad57604051632dd9fc9760e01b815260040160405180910390fd5b600080611fbb8b8b8b612c56565b909250905060008c82848c8b8b868080611fd88787838888612838565b929c5090945092509050888a14801590611ff457506000198914155b1561201c5760405163ac7411c960e01b8152600481018b9052602481018a9052604401610641565b80838b600080516020613943833981519152856000548d60016040516120459493929190613415565b60405180910390a4505050505050505050807ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d604051612088929190613758565b60405180910390a25050506001600160a01b0383161561189a57366000602061166083601f61349f565b6000806000806000806000806120c6612e15565b6001600160401b039384169b50918316995082169750169450505050505b90919293565b600054861161210c57604051633eb9f37d60e11b815260040160405180910390fd5b60006121bc8684612120602089018961379d565b61213060408a0160208b0161379d565b61213b60018d613690565b6040805160f89690961b6001600160f81b03191660208088019190915260609590951b6001600160601b031916602187015260c093841b6001600160c01b031990811660358801529290931b909116603d85015260458401526065830188905260858084018790528151808503909101815260a59093019052815191012090565b600a5490915043906001600160401b03166121da602088018861379d565b6121e491906137c6565b6001600160401b03161061220b5760405163ad3515d960e01b815260040160405180910390fd5b600a544290600160801b90046001600160401b0316612230604088016020890161379d565b61223a91906137c6565b6001600160401b0316106122615760405163c76d17e560e01b815260040160405180910390fd5b600060018811156122f9576001546001600160a01b031663d5719dc261228860028b613690565b6040518263ffffffff1660e01b81526004016122a691815260200190565b60206040518083038186803b1580156122be57600080fd5b505afa1580156122d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f69190613393565b90505b60408051602080820184905281830185905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc29061233f908c613690565b6040518263ffffffff1660e01b815260040161235d91815260200190565b60206040518083038186803b15801561237557600080fd5b505afa158015612389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ad9190613393565b146123cb576040516313947fd760e01b815260040160405180910390fd5b6000806123d78a612c2a565b9150915060008a90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b815260040160206040518083038186803b15801561243057600080fd5b505afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190613393565b905080600080808061247d8988838880612838565b9350935093509350808385600080516020613943833981519152856000548d60026040516124ae9493929190613415565b60405180910390a45050505050505050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b17905290516000918291829160649161250791906137f1565b600060405180830381855afa9150503d8060008114612542576040519150601f19603f3d011682016040523d82523d6000602084013e612547565b606091505b509150915081801561255a575080516020145b9250505090565b80516001600160401b031080612581575060208101516001600160401b03105b80612596575060408101516001600160401b03105b806125ab575060608101516001600160401b03105b156125c9576040516309cfba7560e01b815260040160405180910390fd5b8051600a8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055565b6000612642612f93565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e83a2d826040518163ffffffff1660e01b815260040160006040518083038186803b15801561269e57600080fd5b505afa1580156126b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126da91908101906135eb565b90508051600014156126ff57604051631e693f5b60e11b815260040160405180910390fd5b60008061270b87612e86565b9150915060008351620200007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f6d6ef76040518163ffffffff1660e01b815260040160206040518083038186803b15801561277057600080fd5b505afa158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a89190613393565b6127b291906135cc565b6127bc91906135cc565b6040519091508390600560fc1b906127d890879060200161380d565b60408051601f19818403018152908290526127f7939291602001613843565b60405160208183030381529060405280519060200120826000481161281d576000612827565b61282748846134b7565b965096509650505050509193909250565b60008060008060005488101561286157604051633eb9f37d60e11b815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128af57600080fd5b505afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190613393565b8811156129075760405163925f8bd360e01b815260040160405180910390fd5b60015460405163432cc52b60e11b8152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a5690608401608060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299a9190613886565b60008c90559296509094509250905086158015906129d657507f0000000000000000000000000000000000000000000000000000000000000000155b156129e8576129e889854860006129f4565b95509550955095915050565b327f000000000000000000000000000000000000000000000000000000000000000015612aa9576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a5757600080fd5b505afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190613393565b9050612a9b48826134b7565b612aa5908461349f565b9250505b6001600160401b03821115612af75760405162461bcd60e51b8152602060048201526014602482015273115615149057d1d054d7d393d517d55253950d8d60621b6044820152606401610641565b604080514260208201526001600160601b0319606084901b16918101919091526054810186905260748101859052609481018490526001600160c01b031960c084901b1660b482015260009060bc0160408051808303601f190181529082905260015481516020830120637a88b10760e01b84526001600160a01b0386811660048601526024850191909152919350600092911690637a88b10790604401602060405180830381600087803b158015612baf57600080fd5b505af1158015612bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be79190613393565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051612c199190613715565b60405180910390a250505050505050565b6000612c34612f93565b600080612c4085612e86565b8151602090920191909120969095509350505050565b6000612c60612f93565b6000612c6d85602861349f565b90507f0000000000000000000000000000000000000000000000000000000000000000811115612cd957604051634634691b60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610641565b600080612ce586612e86565b90925090508615612ddb57612d1588886000818110612d0657612d06613787565b9050013560f81c60f81b612f2d565b612d505787876000818110612d2c57612d2c613787565b9050013560f81c60f81b60405163359999ab60e11b81526004016106419190612fba565b600160ff1b8888600081612d6657612d66613787565b6001600160f81b031992013592909216161580159150612d87575060218710155b15612ddb576000612d9c602160018a8c6138bc565b612da5916138e6565b60008181526008602052604090205490915060ff16612dd95760405162f20c5d60e01b815260048101829052602401610641565b505b818888604051602001612df093929190613904565b60408051601f1981840301815291905280516020909101209890975095505050505050565b6000808080467f000000000000000000000000000000000000000000000000000000000000000014612e52575060019250829150819050806120e4565b5050600a546001600160401b038082169350600160401b820481169250600160801b8204811691600160c01b9004166120e4565b6060612e90612f93565b6000612e9a612f88565b90506000816000015182602001518360400151846060015188604051602001612f0295949392919060c095861b6001600160c01b0319908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b60405160208183030381529060405290506028815114612f2457612f2461392c565b94909350915050565b60006001600160f81b031982161580612f5357506001600160f81b03198216600160ff1b145b80612f6b57506001600160f81b03198216601160fb1b145b80611f5657506001600160f81b03198216600160fd1b1492915050565b612f90612f93565b90565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160f81b031991909116815260200190565b600060208284031215612fe157600080fd5b5035919050565b6001600160a01b0381168114612ffd57600080fd5b50565b60008082840360a081121561301457600080fd5b833561301f81612fe8565b92506080601f198201121561303357600080fd5b506020830190509250929050565b8015158114612ffd57600080fd5b6000806040838503121561306257600080fd5b823561306d81612fe8565b9150602083013561307d81613041565b809150509250929050565b60006020828403121561309a57600080fd5b81356130a581612fe8565b9392505050565b600080600080600060a086880312156130c457600080fd5b853594506020860135935060408601356130dd81612fe8565b94979396509394606081013594506080013592915050565b60008083601f84011261310757600080fd5b5081356001600160401b0381111561311e57600080fd5b60208301915083602082850101111561313657600080fd5b9250929050565b60008060008060006080868803121561315557600080fd5b8535945060208601356001600160401b0381111561317257600080fd5b61317e888289016130f5565b90955093505060408601359150606086013561319981612fe8565b809150509295509295909350565b6001600160a01b0391909116815260200190565b600080600080600080600060c0888a0312156131d657600080fd5b8735965060208801356001600160401b038111156131f357600080fd5b6131ff8a828b016130f5565b90975095505060408801359350606088013561321a81612fe8565b969995985093969295946080840135945060a09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561327557613275613237565b604052919050565b60006080828403121561328f57600080fd5b604051608081018181106001600160401b03821117156132b1576132b1613237565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156132f557600080fd5b82356001600160401b0381111561330b57600080fd5b613317858286016130f5565b90969095509350505050565b60008060008060008060e0878903121561333c57600080fd5b86359550602087013560ff8116811461335457600080fd5b9450608087018881111561336757600080fd5b60408801945035925060a087013561337e81612fe8565b8092505060c087013590509295509295509295565b6000602082840312156133a557600080fd5b5051919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60006020828403121561340a57600080fd5b81516130a581612fe8565b600060e0820190508582528460208301526001600160401b038085511660408401528060208601511660608401528060408601511660808401528060608601511660a0840152506004831061347a57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156134b2576134b2613489565b500190565b6000826134d457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156135145781600019048211156134fa576134fa613489565b8085161561350757918102915b93841c93908002906134de565b509250929050565b60008261352b57506001611f56565b8161353857506000611f56565b816001811461354e576002811461355857613574565b6001915050611f56565b60ff84111561356957613569613489565b50506001821b611f56565b5060208310610133831016604e8410600b8410161715613597575081810a611f56565b6135a183836134d9565b80600019048211156135b5576135b5613489565b029392505050565b60006130a560ff84168361351c565b60008160001904831182151516156135e6576135e6613489565b500290565b600060208083850312156135fe57600080fd5b82516001600160401b038082111561361557600080fd5b818501915085601f83011261362957600080fd5b81518181111561363b5761363b613237565b8060051b915061364c84830161324d565b818152918301840191848101908884111561366657600080fd5b938501935b838510156136845784518252938501939085019061366b565b98975050505050505050565b6000828210156136a2576136a2613489565b500390565b6001600160a01b039390931683526020830191909152604082015260600190565b6000602082840312156136da57600080fd5b81516130a581613041565b60005b838110156137005781810151838201526020016136e8565b8381111561370f576000848401525b50505050565b60208152600082518060208401526137348160408501602087016136e5565b601f01601f19169190910160400192915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156137af57600080fd5b81356001600160401b03811681146130a557600080fd5b60006001600160401b038083168185168083038211156137e8576137e8613489565b01949350505050565b600082516138038184602087016136e5565b9190910192915050565b815160009082906020808601845b838110156138375781518552938201939082019060010161381b565b50929695505050505050565b600084516138558184602089016136e5565b6001600160f81b0319851690830190815283516138798160018401602088016136e5565b0160010195945050505050565b6000806000806080858703121561389c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080858511156138cc57600080fd5b838611156138d957600080fd5b5050820193919092039150565b80356020831015611f5657600019602084900360031b1b1692915050565b600084516139168184602089016136e5565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fdfe7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7ea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456ea264697066735822122092e6bec9ac7af08f9eb1cf9fffe3ef64cd20af53d4830929875c2f323a63f6c864736f6c63430008090033",
1123
1123
  "linkReferences": {},
1124
1124
  "deployedLinkReferences": {}
1125
1125
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SimpleCacheManager",
4
+ "sourceName": "src/mocks/SimpleCacheManager.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "program",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "cacheProgram",
15
+ "outputs": [],
16
+ "stateMutability": "nonpayable",
17
+ "type": "function"
18
+ },
19
+ {
20
+ "inputs": [
21
+ {
22
+ "internalType": "address",
23
+ "name": "program",
24
+ "type": "address"
25
+ }
26
+ ],
27
+ "name": "evictProgram",
28
+ "outputs": [],
29
+ "stateMutability": "nonpayable",
30
+ "type": "function"
31
+ }
32
+ ],
33
+ "bytecode": "0x608060405234801561001057600080fd5b50610122806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636c769c09146037578063e73ac9f2146048575b600080fd5b6046604236600460be565b6057565b005b6046605336600460be565b60b1565b607263ce972013823f5b6040518263ffffffff1660e01b8152600401607e91815260200190565b600060405180830381600087803b158015609757600080fd5b505af115801560aa573d6000803e3d6000fd5b5050505050565b6072634ceac817823f6061565b60006020828403121560cf57600080fd5b81356001600160a01b038116811460e557600080fd5b939250505056fea264697066735822122080860538c0b81fa8383ac0669fa33b595bc44eeea931e41884f118ac9b53bbf064736f6c63430008090033",
34
+ "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c80636c769c09146037578063e73ac9f2146048575b600080fd5b6046604236600460be565b6057565b005b6046605336600460be565b60b1565b607263ce972013823f5b6040518263ffffffff1660e01b8152600401607e91815260200190565b600060405180830381600087803b158015609757600080fd5b505af115801560aa573d6000803e3d6000fd5b5050505050565b6072634ceac817823f6061565b60006020828403121560cf57600080fd5b81356001600160a01b038116811460e557600080fd5b939250505056fea264697066735822122080860538c0b81fa8383ac0669fa33b595bc44eeea931e41884f118ac9b53bbf064736f6c63430008090033",
35
+ "linkReferences": {},
36
+ "deployedLinkReferences": {}
37
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -23,8 +23,8 @@
23
23
  "type": "receive"
24
24
  }
25
25
  ],
26
- "bytecode": "0x60a060405234801561001057600080fd5b5060405161011d38038061011d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051609561008860003960006017015260956000f3fe608060405236601057600e6013565b005b600e5b603a7f0000000000000000000000000000000000000000000000000000000000000000603c565b565b3660008037600080366000845af43d6000803e808015605a573d6000f35b3d6000fdfea26469706673582212207509cd70dccdfb4f725f4b8ea78e709940520b3ba4ea15a2b4b4870a7a3152ab64736f6c63430008090033",
27
- "deployedBytecode": "0x608060405236601057600e6013565b005b600e5b603a7f0000000000000000000000000000000000000000000000000000000000000000603c565b565b3660008037600080366000845af43d6000803e808015605a573d6000f35b3d6000fdfea26469706673582212207509cd70dccdfb4f725f4b8ea78e709940520b3ba4ea15a2b4b4870a7a3152ab64736f6c63430008090033",
26
+ "bytecode": "0x60a060405234801561001057600080fd5b5060405161011d38038061011d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051609561008860003960006017015260956000f3fe608060405236601057600e6013565b005b600e5b603a7f0000000000000000000000000000000000000000000000000000000000000000603c565b565b3660008037600080366000845af43d6000803e808015605a573d6000f35b3d6000fdfea26469706673582212205230b8d1b36d293dbe00e1d8a9aeaa45f08099bc77338fb96243f4d2089d94bd64736f6c63430008090033",
27
+ "deployedBytecode": "0x608060405236601057600e6013565b005b600e5b603a7f0000000000000000000000000000000000000000000000000000000000000000603c565b565b3660008037600080366000845af43d6000803e808015605a573d6000f35b3d6000fdfea26469706673582212205230b8d1b36d293dbe00e1d8a9aeaa45f08099bc77338fb96243f4d2089d94bd64736f6c63430008090033",
28
28
  "linkReferences": {},
29
29
  "deployedLinkReferences": {}
30
30
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }