@arbitrum/nitro-contracts 2.1.0 → 3.0.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) 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/Create2.sol/Create2.dbg.json +4 -0
  28. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
  29. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  31. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  52. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  53. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  55. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
  56. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
  57. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
  58. package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
  59. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
  60. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
  61. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
  62. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
  63. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
  64. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
  65. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
  66. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
  67. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
  68. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
  69. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
  70. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
  71. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
  72. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
  73. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
  74. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
  75. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
  76. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
  77. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
  78. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
  79. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  81. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
  83. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  85. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  86. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
  87. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
  88. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  89. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  90. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  91. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
  92. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  93. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  94. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  95. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  96. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  97. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  98. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  99. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  100. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
  101. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  102. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  103. package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
  104. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  105. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
  106. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  107. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  108. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  109. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
  110. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  111. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
  112. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  113. package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
  114. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  115. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  116. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  117. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
  118. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  119. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
  120. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
  121. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
  122. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
  123. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
  124. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
  125. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
  126. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
  127. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
  128. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
  129. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
  130. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
  131. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
  132. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
  133. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
  134. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
  135. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
  136. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  137. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
  138. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  139. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  140. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  141. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  142. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  143. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  144. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
  145. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  146. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
  147. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  148. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  149. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  150. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  151. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  152. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  153. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  154. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  155. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  156. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
  157. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  158. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
  159. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  160. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
  161. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  162. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  163. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
  164. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
  165. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
  166. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
  167. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  168. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
  169. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  170. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  171. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  172. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  173. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  174. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  175. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  176. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
  177. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
  178. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
  179. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  180. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
  181. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  182. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  183. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  184. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
  185. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
  186. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
  187. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  188. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  189. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
  190. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
  191. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
  192. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
  193. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  194. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  195. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  196. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  197. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  198. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
  199. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  200. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
  201. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  202. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  203. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  204. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
  205. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  206. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
  207. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  208. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
  209. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  210. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
  211. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  212. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
  213. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  214. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
  215. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  216. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  217. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  218. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  219. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  220. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  221. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  222. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  223. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  224. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  225. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  226. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  227. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  228. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  229. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  230. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  231. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  232. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
  233. package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
  234. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
  235. package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
  236. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
  237. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
  238. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
  239. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
  240. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
  241. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
  242. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
  243. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
  244. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
  245. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
  246. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
  247. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
  250. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  251. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
  252. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  253. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  254. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  255. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  256. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  257. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
  258. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  259. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  260. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  261. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  262. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  263. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
  264. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  265. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
  266. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  267. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  268. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -499
  269. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  270. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
  271. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  272. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
  273. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  274. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
  275. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  276. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  277. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  278. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  279. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  280. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
  281. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  282. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -535
  283. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  284. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
  285. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  286. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  287. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  288. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  289. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  290. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
  291. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  292. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  293. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  294. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  295. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  296. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  297. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  298. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  299. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  300. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  301. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  302. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
  303. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  304. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
  305. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  306. package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
  307. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  308. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  309. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  310. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  311. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  312. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  313. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  314. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  315. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  316. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  317. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  318. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
  319. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  320. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
  321. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  322. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
  323. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  324. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  325. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  326. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
  327. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  328. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  329. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  330. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  331. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  332. package/package.json +15 -5
  333. package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
  334. package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
  335. package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
  336. package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
  337. package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
  338. package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
  339. package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
  340. package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
  341. package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
  342. package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
  343. package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
  344. package/src/bridge/AbsBridge.sol +38 -48
  345. package/src/bridge/AbsInbox.sol +88 -97
  346. package/src/bridge/AbsOutbox.sol +23 -37
  347. package/src/bridge/Bridge.sol +6 -4
  348. package/src/bridge/DelayBuffer.sol +123 -0
  349. package/src/bridge/DelayBufferTypes.sol +38 -0
  350. package/src/bridge/ERC20Bridge.sol +8 -4
  351. package/src/bridge/ERC20Inbox.sol +46 -53
  352. package/src/bridge/ERC20Outbox.sol +7 -3
  353. package/src/bridge/GasRefunder.sol +38 -24
  354. package/src/bridge/IBridge.sol +30 -21
  355. package/src/bridge/IERC20Bridge.sol +1 -1
  356. package/src/bridge/IERC20Inbox.sol +4 -2
  357. package/src/bridge/IEthBridge.sol +4 -2
  358. package/src/bridge/IInbox.sol +4 -2
  359. package/src/bridge/IInboxBase.sol +17 -13
  360. package/src/bridge/IOutbox.sol +13 -8
  361. package/src/bridge/ISequencerInbox.sol +118 -13
  362. package/src/bridge/Inbox.sol +131 -151
  363. package/src/bridge/Messages.sol +48 -18
  364. package/src/bridge/Outbox.sol +6 -2
  365. package/src/bridge/SequencerInbox.sol +339 -274
  366. package/src/chain/CacheManager.sol +49 -18
  367. package/src/challengeV2/EdgeChallengeManager.sol +783 -0
  368. package/src/challengeV2/IAssertionChain.sol +39 -0
  369. package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
  370. package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
  371. package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
  372. package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
  373. package/src/challengeV2/libraries/Enums.sol +26 -0
  374. package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
  375. package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
  376. package/src/libraries/AddressAliasHelper.sol +6 -2
  377. package/src/libraries/AdminFallbackProxy.sol +8 -4
  378. package/src/libraries/ArbitrumChecker.sol +3 -4
  379. package/src/libraries/CryptographyPrimitives.sol +39 -46
  380. package/src/libraries/DecimalsConverterHelper.sol +2 -4
  381. package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
  382. package/src/libraries/Error.sol +18 -3
  383. package/src/libraries/GasRefundEnabled.sol +3 -4
  384. package/src/libraries/MerkleLib.sol +6 -5
  385. package/src/libraries/UUPSNotUpgradeable.sol +2 -4
  386. package/src/mocks/BridgeStub.sol +50 -48
  387. package/src/mocks/BridgeUnproxied.sol +2 -0
  388. package/src/mocks/InboxStub.sol +22 -17
  389. package/src/mocks/MerkleTreeAccess.sol +72 -0
  390. package/src/mocks/MockRollupEventInbox.sol +59 -0
  391. package/src/mocks/MultiCallTest.sol +3 -1
  392. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
  393. package/src/mocks/Program.sol +9 -7
  394. package/src/mocks/SequencerInboxBlobMock.sol +38 -0
  395. package/src/mocks/SequencerInboxStub.sol +9 -12
  396. package/src/mocks/Simple.sol +13 -25
  397. package/src/mocks/SimpleCacheManager.sol +10 -3
  398. package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
  399. package/src/mocks/SimpleProxy.sol +3 -1
  400. package/src/mocks/TestWETH9.sol +30 -0
  401. package/src/mocks/UpgradeExecutorMock.sol +10 -17
  402. package/src/node-interface/NodeInterface.sol +23 -22
  403. package/src/node-interface/NodeInterfaceDebug.sol +5 -3
  404. package/src/osp/HashProofHelper.sol +9 -10
  405. package/src/osp/IOneStepProofEntry.sol +14 -9
  406. package/src/osp/IOneStepProver.sol +1 -0
  407. package/src/osp/OneStepProofEntry.sol +63 -54
  408. package/src/osp/OneStepProver0.sol +14 -27
  409. package/src/osp/OneStepProverHostIo.sol +31 -58
  410. package/src/osp/OneStepProverMath.sol +15 -23
  411. package/src/osp/OneStepProverMemory.sol +9 -23
  412. package/src/precompiles/ArbAddressTable.sol +19 -9
  413. package/src/precompiles/ArbAggregator.sol +12 -4
  414. package/src/precompiles/ArbBLS.sol +1 -3
  415. package/src/precompiles/ArbDebug.sol +5 -11
  416. package/src/precompiles/ArbFunctionTable.sol +7 -10
  417. package/src/precompiles/ArbGasInfo.sol +9 -43
  418. package/src/precompiles/ArbInfo.sol +6 -2
  419. package/src/precompiles/ArbOwner.sol +101 -34
  420. package/src/precompiles/ArbOwnerPublic.sol +6 -2
  421. package/src/precompiles/ArbRetryableTx.sol +15 -5
  422. package/src/precompiles/ArbStatistics.sol +1 -8
  423. package/src/precompiles/ArbSys.sol +16 -18
  424. package/src/precompiles/ArbWasm.sol +24 -14
  425. package/src/precompiles/ArbWasmCache.sol +15 -5
  426. package/src/precompiles/ArbosTest.sol +3 -1
  427. package/src/rollup/AbsRollupEventInbox.sol +15 -16
  428. package/src/rollup/Assertion.sol +100 -0
  429. package/src/rollup/AssertionState.sol +29 -0
  430. package/src/rollup/BOLDUpgradeAction.sol +631 -0
  431. package/src/rollup/BridgeCreator.sol +42 -15
  432. package/src/rollup/Config.sol +15 -7
  433. package/src/rollup/DeployHelper.sol +12 -31
  434. package/src/rollup/ERC20RollupEventInbox.sol +8 -9
  435. package/src/rollup/FactoryDeployerHelper.sol +8 -10
  436. package/src/rollup/IRollupAdmin.sol +127 -45
  437. package/src/rollup/IRollupCore.sol +64 -84
  438. package/src/rollup/IRollupEventInbox.sol +3 -1
  439. package/src/rollup/IRollupLogic.sol +35 -72
  440. package/src/rollup/RollupAdminLogic.sol +224 -203
  441. package/src/rollup/RollupCore.sol +407 -428
  442. package/src/rollup/RollupCreator.sol +88 -75
  443. package/src/rollup/RollupEventInbox.sol +7 -7
  444. package/src/rollup/RollupLib.sol +50 -86
  445. package/src/rollup/RollupProxy.sol +8 -12
  446. package/src/rollup/RollupUserLogic.sol +279 -644
  447. package/src/rollup/ValidatorUtils.sol +0 -242
  448. package/src/rollup/ValidatorWallet.sol +22 -38
  449. package/src/rollup/ValidatorWalletCreator.sol +8 -8
  450. package/src/state/Deserialize.sol +74 -96
  451. package/src/state/GlobalState.sol +74 -20
  452. package/src/state/Instructions.sol +4 -3
  453. package/src/state/Machine.sol +18 -19
  454. package/src/state/Module.sol +14 -13
  455. package/src/state/ModuleMemory.sol +6 -25
  456. package/src/state/ModuleMemoryCompact.sol +3 -1
  457. package/src/state/MultiStack.sol +16 -20
  458. package/src/state/PcArray.sol +7 -7
  459. package/src/state/StackFrame.sol +21 -14
  460. package/src/state/Value.sol +18 -6
  461. package/src/state/ValueArray.sol +7 -7
  462. package/src/state/ValueStack.sol +9 -3
  463. package/src/test-helpers/BridgeTester.sol +32 -42
  464. package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
  465. package/src/test-helpers/EthVault.sol +4 -2
  466. package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
  467. package/src/test-helpers/MessageTester.sol +3 -10
  468. package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
  469. package/src/test-helpers/RollupMock.sol +3 -7
  470. package/src/test-helpers/TestToken.sol +4 -2
  471. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  472. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
  473. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
  474. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
  475. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
  476. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
  477. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
  478. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
  479. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
  480. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
  481. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
  482. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
  483. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
  484. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
  485. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
  486. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1332
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
  489. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
  490. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
  491. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1614
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
  494. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
  495. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
  496. package/src/challenge/ChallengeLib.sol +0 -88
  497. package/src/challenge/ChallengeManager.sol +0 -375
  498. package/src/challenge/IChallengeManager.sol +0 -86
  499. package/src/challenge/IChallengeResultReceiver.sol +0 -13
  500. package/src/mocks/MockResultReceiver.sol +0 -59
  501. package/src/mocks/SingleExecutionChallenge.sol +0 -41
  502. package/src/mocks/TimedOutChallengeManager.sol +0 -13
  503. package/src/rollup/Node.sol +0 -113
@@ -0,0 +1,1632 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SequencerInboxBlobMock",
4
+ "sourceName": "src/mocks/SequencerInboxBlobMock.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "uint256",
10
+ "name": "maxDataSize_",
11
+ "type": "uint256"
12
+ },
13
+ {
14
+ "internalType": "contract IReader4844",
15
+ "name": "reader_",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "bool",
20
+ "name": "isUsingFeeToken_",
21
+ "type": "bool"
22
+ },
23
+ {
24
+ "internalType": "bool",
25
+ "name": "isDelayBufferable_",
26
+ "type": "bool"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "AlreadyInit",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "bytes32",
41
+ "name": "",
42
+ "type": "bytes32"
43
+ }
44
+ ],
45
+ "name": "AlreadyValidDASKeyset",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "BadBufferConfig",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "BadMaxTimeVariation",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "uint256",
62
+ "name": "stored",
63
+ "type": "uint256"
64
+ },
65
+ {
66
+ "internalType": "uint256",
67
+ "name": "received",
68
+ "type": "uint256"
69
+ }
70
+ ],
71
+ "name": "BadSequencerNumber",
72
+ "type": "error"
73
+ },
74
+ {
75
+ "inputs": [],
76
+ "name": "DataBlobsNotSupported",
77
+ "type": "error"
78
+ },
79
+ {
80
+ "inputs": [
81
+ {
82
+ "internalType": "uint256",
83
+ "name": "dataLength",
84
+ "type": "uint256"
85
+ },
86
+ {
87
+ "internalType": "uint256",
88
+ "name": "maxDataLength",
89
+ "type": "uint256"
90
+ }
91
+ ],
92
+ "name": "DataTooLarge",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [],
97
+ "name": "DelayProofRequired",
98
+ "type": "error"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "DelayedBackwards",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [],
107
+ "name": "DelayedTooFar",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "Deprecated",
113
+ "type": "error"
114
+ },
115
+ {
116
+ "inputs": [],
117
+ "name": "ExtraGasNotUint64",
118
+ "type": "error"
119
+ },
120
+ {
121
+ "inputs": [],
122
+ "name": "ForceIncludeBlockTooSoon",
123
+ "type": "error"
124
+ },
125
+ {
126
+ "inputs": [],
127
+ "name": "HadZeroInit",
128
+ "type": "error"
129
+ },
130
+ {
131
+ "inputs": [],
132
+ "name": "IncorrectMessagePreimage",
133
+ "type": "error"
134
+ },
135
+ {
136
+ "inputs": [
137
+ {
138
+ "internalType": "string",
139
+ "name": "name",
140
+ "type": "string"
141
+ }
142
+ ],
143
+ "name": "InitParamZero",
144
+ "type": "error"
145
+ },
146
+ {
147
+ "inputs": [],
148
+ "name": "InvalidDelayedAccPreimage",
149
+ "type": "error"
150
+ },
151
+ {
152
+ "inputs": [
153
+ {
154
+ "internalType": "bytes1",
155
+ "name": "",
156
+ "type": "bytes1"
157
+ }
158
+ ],
159
+ "name": "InvalidHeaderFlag",
160
+ "type": "error"
161
+ },
162
+ {
163
+ "inputs": [],
164
+ "name": "KeysetTooLarge",
165
+ "type": "error"
166
+ },
167
+ {
168
+ "inputs": [],
169
+ "name": "MissingDataHashes",
170
+ "type": "error"
171
+ },
172
+ {
173
+ "inputs": [],
174
+ "name": "NativeTokenMismatch",
175
+ "type": "error"
176
+ },
177
+ {
178
+ "inputs": [
179
+ {
180
+ "internalType": "bytes32",
181
+ "name": "",
182
+ "type": "bytes32"
183
+ }
184
+ ],
185
+ "name": "NoSuchKeyset",
186
+ "type": "error"
187
+ },
188
+ {
189
+ "inputs": [],
190
+ "name": "NotBatchPoster",
191
+ "type": "error"
192
+ },
193
+ {
194
+ "inputs": [
195
+ {
196
+ "internalType": "address",
197
+ "name": "",
198
+ "type": "address"
199
+ }
200
+ ],
201
+ "name": "NotBatchPosterManager",
202
+ "type": "error"
203
+ },
204
+ {
205
+ "inputs": [],
206
+ "name": "NotDelayBufferable",
207
+ "type": "error"
208
+ },
209
+ {
210
+ "inputs": [],
211
+ "name": "NotForked",
212
+ "type": "error"
213
+ },
214
+ {
215
+ "inputs": [],
216
+ "name": "NotOrigin",
217
+ "type": "error"
218
+ },
219
+ {
220
+ "inputs": [
221
+ {
222
+ "internalType": "address",
223
+ "name": "sender",
224
+ "type": "address"
225
+ },
226
+ {
227
+ "internalType": "address",
228
+ "name": "owner",
229
+ "type": "address"
230
+ }
231
+ ],
232
+ "name": "NotOwner",
233
+ "type": "error"
234
+ },
235
+ {
236
+ "inputs": [],
237
+ "name": "RollupNotChanged",
238
+ "type": "error"
239
+ },
240
+ {
241
+ "anonymous": false,
242
+ "inputs": [
243
+ {
244
+ "indexed": false,
245
+ "internalType": "address",
246
+ "name": "newBatchPosterManager",
247
+ "type": "address"
248
+ }
249
+ ],
250
+ "name": "BatchPosterManagerSet",
251
+ "type": "event"
252
+ },
253
+ {
254
+ "anonymous": false,
255
+ "inputs": [
256
+ {
257
+ "indexed": false,
258
+ "internalType": "address",
259
+ "name": "batchPoster",
260
+ "type": "address"
261
+ },
262
+ {
263
+ "indexed": false,
264
+ "internalType": "bool",
265
+ "name": "isBatchPoster",
266
+ "type": "bool"
267
+ }
268
+ ],
269
+ "name": "BatchPosterSet",
270
+ "type": "event"
271
+ },
272
+ {
273
+ "anonymous": false,
274
+ "inputs": [
275
+ {
276
+ "components": [
277
+ {
278
+ "internalType": "uint64",
279
+ "name": "threshold",
280
+ "type": "uint64"
281
+ },
282
+ {
283
+ "internalType": "uint64",
284
+ "name": "max",
285
+ "type": "uint64"
286
+ },
287
+ {
288
+ "internalType": "uint64",
289
+ "name": "replenishRateInBasis",
290
+ "type": "uint64"
291
+ }
292
+ ],
293
+ "indexed": false,
294
+ "internalType": "struct BufferConfig",
295
+ "name": "bufferConfig",
296
+ "type": "tuple"
297
+ }
298
+ ],
299
+ "name": "BufferConfigSet",
300
+ "type": "event"
301
+ },
302
+ {
303
+ "anonymous": false,
304
+ "inputs": [
305
+ {
306
+ "indexed": true,
307
+ "internalType": "uint256",
308
+ "name": "messageNum",
309
+ "type": "uint256"
310
+ },
311
+ {
312
+ "indexed": false,
313
+ "internalType": "bytes",
314
+ "name": "data",
315
+ "type": "bytes"
316
+ }
317
+ ],
318
+ "name": "InboxMessageDelivered",
319
+ "type": "event"
320
+ },
321
+ {
322
+ "anonymous": false,
323
+ "inputs": [
324
+ {
325
+ "indexed": true,
326
+ "internalType": "uint256",
327
+ "name": "messageNum",
328
+ "type": "uint256"
329
+ }
330
+ ],
331
+ "name": "InboxMessageDeliveredFromOrigin",
332
+ "type": "event"
333
+ },
334
+ {
335
+ "anonymous": false,
336
+ "inputs": [
337
+ {
338
+ "indexed": true,
339
+ "internalType": "bytes32",
340
+ "name": "keysetHash",
341
+ "type": "bytes32"
342
+ }
343
+ ],
344
+ "name": "InvalidateKeyset",
345
+ "type": "event"
346
+ },
347
+ {
348
+ "anonymous": false,
349
+ "inputs": [
350
+ {
351
+ "components": [
352
+ {
353
+ "internalType": "uint256",
354
+ "name": "delayBlocks",
355
+ "type": "uint256"
356
+ },
357
+ {
358
+ "internalType": "uint256",
359
+ "name": "futureBlocks",
360
+ "type": "uint256"
361
+ },
362
+ {
363
+ "internalType": "uint256",
364
+ "name": "delaySeconds",
365
+ "type": "uint256"
366
+ },
367
+ {
368
+ "internalType": "uint256",
369
+ "name": "futureSeconds",
370
+ "type": "uint256"
371
+ }
372
+ ],
373
+ "indexed": false,
374
+ "internalType": "struct ISequencerInbox.MaxTimeVariation",
375
+ "name": "maxTimeVariation",
376
+ "type": "tuple"
377
+ }
378
+ ],
379
+ "name": "MaxTimeVariationSet",
380
+ "type": "event"
381
+ },
382
+ {
383
+ "anonymous": false,
384
+ "inputs": [
385
+ {
386
+ "indexed": true,
387
+ "internalType": "uint256",
388
+ "name": "id",
389
+ "type": "uint256"
390
+ }
391
+ ],
392
+ "name": "OwnerFunctionCalled",
393
+ "type": "event"
394
+ },
395
+ {
396
+ "anonymous": false,
397
+ "inputs": [
398
+ {
399
+ "indexed": true,
400
+ "internalType": "uint256",
401
+ "name": "batchSequenceNumber",
402
+ "type": "uint256"
403
+ },
404
+ {
405
+ "indexed": false,
406
+ "internalType": "bytes",
407
+ "name": "data",
408
+ "type": "bytes"
409
+ }
410
+ ],
411
+ "name": "SequencerBatchData",
412
+ "type": "event"
413
+ },
414
+ {
415
+ "anonymous": false,
416
+ "inputs": [
417
+ {
418
+ "indexed": true,
419
+ "internalType": "uint256",
420
+ "name": "batchSequenceNumber",
421
+ "type": "uint256"
422
+ },
423
+ {
424
+ "indexed": true,
425
+ "internalType": "bytes32",
426
+ "name": "beforeAcc",
427
+ "type": "bytes32"
428
+ },
429
+ {
430
+ "indexed": true,
431
+ "internalType": "bytes32",
432
+ "name": "afterAcc",
433
+ "type": "bytes32"
434
+ },
435
+ {
436
+ "indexed": false,
437
+ "internalType": "bytes32",
438
+ "name": "delayedAcc",
439
+ "type": "bytes32"
440
+ },
441
+ {
442
+ "indexed": false,
443
+ "internalType": "uint256",
444
+ "name": "afterDelayedMessagesRead",
445
+ "type": "uint256"
446
+ },
447
+ {
448
+ "components": [
449
+ {
450
+ "internalType": "uint64",
451
+ "name": "minTimestamp",
452
+ "type": "uint64"
453
+ },
454
+ {
455
+ "internalType": "uint64",
456
+ "name": "maxTimestamp",
457
+ "type": "uint64"
458
+ },
459
+ {
460
+ "internalType": "uint64",
461
+ "name": "minBlockNumber",
462
+ "type": "uint64"
463
+ },
464
+ {
465
+ "internalType": "uint64",
466
+ "name": "maxBlockNumber",
467
+ "type": "uint64"
468
+ }
469
+ ],
470
+ "indexed": false,
471
+ "internalType": "struct IBridge.TimeBounds",
472
+ "name": "timeBounds",
473
+ "type": "tuple"
474
+ },
475
+ {
476
+ "indexed": false,
477
+ "internalType": "enum IBridge.BatchDataLocation",
478
+ "name": "dataLocation",
479
+ "type": "uint8"
480
+ }
481
+ ],
482
+ "name": "SequencerBatchDelivered",
483
+ "type": "event"
484
+ },
485
+ {
486
+ "anonymous": false,
487
+ "inputs": [
488
+ {
489
+ "indexed": false,
490
+ "internalType": "address",
491
+ "name": "addr",
492
+ "type": "address"
493
+ },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "bool",
497
+ "name": "isSequencer",
498
+ "type": "bool"
499
+ }
500
+ ],
501
+ "name": "SequencerSet",
502
+ "type": "event"
503
+ },
504
+ {
505
+ "anonymous": false,
506
+ "inputs": [
507
+ {
508
+ "indexed": true,
509
+ "internalType": "bytes32",
510
+ "name": "keysetHash",
511
+ "type": "bytes32"
512
+ },
513
+ {
514
+ "indexed": false,
515
+ "internalType": "bytes",
516
+ "name": "keysetBytes",
517
+ "type": "bytes"
518
+ }
519
+ ],
520
+ "name": "SetValidKeyset",
521
+ "type": "event"
522
+ },
523
+ {
524
+ "inputs": [],
525
+ "name": "BROTLI_MESSAGE_HEADER_FLAG",
526
+ "outputs": [
527
+ {
528
+ "internalType": "bytes1",
529
+ "name": "",
530
+ "type": "bytes1"
531
+ }
532
+ ],
533
+ "stateMutability": "view",
534
+ "type": "function"
535
+ },
536
+ {
537
+ "inputs": [],
538
+ "name": "DAS_MESSAGE_HEADER_FLAG",
539
+ "outputs": [
540
+ {
541
+ "internalType": "bytes1",
542
+ "name": "",
543
+ "type": "bytes1"
544
+ }
545
+ ],
546
+ "stateMutability": "view",
547
+ "type": "function"
548
+ },
549
+ {
550
+ "inputs": [],
551
+ "name": "DATA_AUTHENTICATED_FLAG",
552
+ "outputs": [
553
+ {
554
+ "internalType": "bytes1",
555
+ "name": "",
556
+ "type": "bytes1"
557
+ }
558
+ ],
559
+ "stateMutability": "view",
560
+ "type": "function"
561
+ },
562
+ {
563
+ "inputs": [],
564
+ "name": "DATA_BLOB_HEADER_FLAG",
565
+ "outputs": [
566
+ {
567
+ "internalType": "bytes1",
568
+ "name": "",
569
+ "type": "bytes1"
570
+ }
571
+ ],
572
+ "stateMutability": "view",
573
+ "type": "function"
574
+ },
575
+ {
576
+ "inputs": [],
577
+ "name": "HEADER_LENGTH",
578
+ "outputs": [
579
+ {
580
+ "internalType": "uint256",
581
+ "name": "",
582
+ "type": "uint256"
583
+ }
584
+ ],
585
+ "stateMutability": "view",
586
+ "type": "function"
587
+ },
588
+ {
589
+ "inputs": [],
590
+ "name": "TREE_DAS_MESSAGE_HEADER_FLAG",
591
+ "outputs": [
592
+ {
593
+ "internalType": "bytes1",
594
+ "name": "",
595
+ "type": "bytes1"
596
+ }
597
+ ],
598
+ "stateMutability": "view",
599
+ "type": "function"
600
+ },
601
+ {
602
+ "inputs": [],
603
+ "name": "ZERO_HEAVY_MESSAGE_HEADER_FLAG",
604
+ "outputs": [
605
+ {
606
+ "internalType": "bytes1",
607
+ "name": "",
608
+ "type": "bytes1"
609
+ }
610
+ ],
611
+ "stateMutability": "view",
612
+ "type": "function"
613
+ },
614
+ {
615
+ "inputs": [
616
+ {
617
+ "internalType": "uint256",
618
+ "name": "sequenceNumber",
619
+ "type": "uint256"
620
+ },
621
+ {
622
+ "internalType": "bytes",
623
+ "name": "data",
624
+ "type": "bytes"
625
+ },
626
+ {
627
+ "internalType": "uint256",
628
+ "name": "afterDelayedMessagesRead",
629
+ "type": "uint256"
630
+ },
631
+ {
632
+ "internalType": "contract IGasRefunder",
633
+ "name": "gasRefunder",
634
+ "type": "address"
635
+ },
636
+ {
637
+ "internalType": "uint256",
638
+ "name": "prevMessageCount",
639
+ "type": "uint256"
640
+ },
641
+ {
642
+ "internalType": "uint256",
643
+ "name": "newMessageCount",
644
+ "type": "uint256"
645
+ }
646
+ ],
647
+ "name": "addSequencerL2Batch",
648
+ "outputs": [],
649
+ "stateMutability": "nonpayable",
650
+ "type": "function"
651
+ },
652
+ {
653
+ "inputs": [
654
+ {
655
+ "internalType": "uint256",
656
+ "name": "sequenceNumber",
657
+ "type": "uint256"
658
+ },
659
+ {
660
+ "internalType": "bytes",
661
+ "name": "data",
662
+ "type": "bytes"
663
+ },
664
+ {
665
+ "internalType": "uint256",
666
+ "name": "afterDelayedMessagesRead",
667
+ "type": "uint256"
668
+ },
669
+ {
670
+ "internalType": "contract IGasRefunder",
671
+ "name": "gasRefunder",
672
+ "type": "address"
673
+ },
674
+ {
675
+ "internalType": "uint256",
676
+ "name": "prevMessageCount",
677
+ "type": "uint256"
678
+ },
679
+ {
680
+ "internalType": "uint256",
681
+ "name": "newMessageCount",
682
+ "type": "uint256"
683
+ },
684
+ {
685
+ "components": [
686
+ {
687
+ "internalType": "bytes32",
688
+ "name": "beforeDelayedAcc",
689
+ "type": "bytes32"
690
+ },
691
+ {
692
+ "components": [
693
+ {
694
+ "internalType": "uint8",
695
+ "name": "kind",
696
+ "type": "uint8"
697
+ },
698
+ {
699
+ "internalType": "address",
700
+ "name": "sender",
701
+ "type": "address"
702
+ },
703
+ {
704
+ "internalType": "uint64",
705
+ "name": "blockNumber",
706
+ "type": "uint64"
707
+ },
708
+ {
709
+ "internalType": "uint64",
710
+ "name": "timestamp",
711
+ "type": "uint64"
712
+ },
713
+ {
714
+ "internalType": "uint256",
715
+ "name": "inboxSeqNum",
716
+ "type": "uint256"
717
+ },
718
+ {
719
+ "internalType": "uint256",
720
+ "name": "baseFeeL1",
721
+ "type": "uint256"
722
+ },
723
+ {
724
+ "internalType": "bytes32",
725
+ "name": "messageDataHash",
726
+ "type": "bytes32"
727
+ }
728
+ ],
729
+ "internalType": "struct Messages.Message",
730
+ "name": "delayedMessage",
731
+ "type": "tuple"
732
+ }
733
+ ],
734
+ "internalType": "struct DelayProof",
735
+ "name": "delayProof",
736
+ "type": "tuple"
737
+ }
738
+ ],
739
+ "name": "addSequencerL2BatchDelayProof",
740
+ "outputs": [],
741
+ "stateMutability": "nonpayable",
742
+ "type": "function"
743
+ },
744
+ {
745
+ "inputs": [
746
+ {
747
+ "internalType": "uint256",
748
+ "name": "sequenceNumber",
749
+ "type": "uint256"
750
+ },
751
+ {
752
+ "internalType": "uint256",
753
+ "name": "afterDelayedMessagesRead",
754
+ "type": "uint256"
755
+ },
756
+ {
757
+ "internalType": "contract IGasRefunder",
758
+ "name": "gasRefunder",
759
+ "type": "address"
760
+ },
761
+ {
762
+ "internalType": "uint256",
763
+ "name": "prevMessageCount",
764
+ "type": "uint256"
765
+ },
766
+ {
767
+ "internalType": "uint256",
768
+ "name": "newMessageCount",
769
+ "type": "uint256"
770
+ }
771
+ ],
772
+ "name": "addSequencerL2BatchFromBlobs",
773
+ "outputs": [],
774
+ "stateMutability": "nonpayable",
775
+ "type": "function"
776
+ },
777
+ {
778
+ "inputs": [
779
+ {
780
+ "internalType": "uint256",
781
+ "name": "sequenceNumber",
782
+ "type": "uint256"
783
+ },
784
+ {
785
+ "internalType": "uint256",
786
+ "name": "afterDelayedMessagesRead",
787
+ "type": "uint256"
788
+ },
789
+ {
790
+ "internalType": "contract IGasRefunder",
791
+ "name": "gasRefunder",
792
+ "type": "address"
793
+ },
794
+ {
795
+ "internalType": "uint256",
796
+ "name": "prevMessageCount",
797
+ "type": "uint256"
798
+ },
799
+ {
800
+ "internalType": "uint256",
801
+ "name": "newMessageCount",
802
+ "type": "uint256"
803
+ },
804
+ {
805
+ "components": [
806
+ {
807
+ "internalType": "bytes32",
808
+ "name": "beforeDelayedAcc",
809
+ "type": "bytes32"
810
+ },
811
+ {
812
+ "components": [
813
+ {
814
+ "internalType": "uint8",
815
+ "name": "kind",
816
+ "type": "uint8"
817
+ },
818
+ {
819
+ "internalType": "address",
820
+ "name": "sender",
821
+ "type": "address"
822
+ },
823
+ {
824
+ "internalType": "uint64",
825
+ "name": "blockNumber",
826
+ "type": "uint64"
827
+ },
828
+ {
829
+ "internalType": "uint64",
830
+ "name": "timestamp",
831
+ "type": "uint64"
832
+ },
833
+ {
834
+ "internalType": "uint256",
835
+ "name": "inboxSeqNum",
836
+ "type": "uint256"
837
+ },
838
+ {
839
+ "internalType": "uint256",
840
+ "name": "baseFeeL1",
841
+ "type": "uint256"
842
+ },
843
+ {
844
+ "internalType": "bytes32",
845
+ "name": "messageDataHash",
846
+ "type": "bytes32"
847
+ }
848
+ ],
849
+ "internalType": "struct Messages.Message",
850
+ "name": "delayedMessage",
851
+ "type": "tuple"
852
+ }
853
+ ],
854
+ "internalType": "struct DelayProof",
855
+ "name": "delayProof",
856
+ "type": "tuple"
857
+ }
858
+ ],
859
+ "name": "addSequencerL2BatchFromBlobsDelayProof",
860
+ "outputs": [],
861
+ "stateMutability": "nonpayable",
862
+ "type": "function"
863
+ },
864
+ {
865
+ "inputs": [
866
+ {
867
+ "internalType": "uint256",
868
+ "name": "",
869
+ "type": "uint256"
870
+ },
871
+ {
872
+ "internalType": "bytes",
873
+ "name": "",
874
+ "type": "bytes"
875
+ },
876
+ {
877
+ "internalType": "uint256",
878
+ "name": "",
879
+ "type": "uint256"
880
+ },
881
+ {
882
+ "internalType": "contract IGasRefunder",
883
+ "name": "",
884
+ "type": "address"
885
+ }
886
+ ],
887
+ "name": "addSequencerL2BatchFromOrigin",
888
+ "outputs": [],
889
+ "stateMutability": "pure",
890
+ "type": "function"
891
+ },
892
+ {
893
+ "inputs": [
894
+ {
895
+ "internalType": "uint256",
896
+ "name": "sequenceNumber",
897
+ "type": "uint256"
898
+ },
899
+ {
900
+ "internalType": "bytes",
901
+ "name": "data",
902
+ "type": "bytes"
903
+ },
904
+ {
905
+ "internalType": "uint256",
906
+ "name": "afterDelayedMessagesRead",
907
+ "type": "uint256"
908
+ },
909
+ {
910
+ "internalType": "contract IGasRefunder",
911
+ "name": "gasRefunder",
912
+ "type": "address"
913
+ },
914
+ {
915
+ "internalType": "uint256",
916
+ "name": "prevMessageCount",
917
+ "type": "uint256"
918
+ },
919
+ {
920
+ "internalType": "uint256",
921
+ "name": "newMessageCount",
922
+ "type": "uint256"
923
+ }
924
+ ],
925
+ "name": "addSequencerL2BatchFromOrigin",
926
+ "outputs": [],
927
+ "stateMutability": "nonpayable",
928
+ "type": "function"
929
+ },
930
+ {
931
+ "inputs": [
932
+ {
933
+ "internalType": "uint256",
934
+ "name": "sequenceNumber",
935
+ "type": "uint256"
936
+ },
937
+ {
938
+ "internalType": "bytes",
939
+ "name": "data",
940
+ "type": "bytes"
941
+ },
942
+ {
943
+ "internalType": "uint256",
944
+ "name": "afterDelayedMessagesRead",
945
+ "type": "uint256"
946
+ },
947
+ {
948
+ "internalType": "contract IGasRefunder",
949
+ "name": "gasRefunder",
950
+ "type": "address"
951
+ },
952
+ {
953
+ "internalType": "uint256",
954
+ "name": "prevMessageCount",
955
+ "type": "uint256"
956
+ },
957
+ {
958
+ "internalType": "uint256",
959
+ "name": "newMessageCount",
960
+ "type": "uint256"
961
+ },
962
+ {
963
+ "components": [
964
+ {
965
+ "internalType": "bytes32",
966
+ "name": "beforeDelayedAcc",
967
+ "type": "bytes32"
968
+ },
969
+ {
970
+ "components": [
971
+ {
972
+ "internalType": "uint8",
973
+ "name": "kind",
974
+ "type": "uint8"
975
+ },
976
+ {
977
+ "internalType": "address",
978
+ "name": "sender",
979
+ "type": "address"
980
+ },
981
+ {
982
+ "internalType": "uint64",
983
+ "name": "blockNumber",
984
+ "type": "uint64"
985
+ },
986
+ {
987
+ "internalType": "uint64",
988
+ "name": "timestamp",
989
+ "type": "uint64"
990
+ },
991
+ {
992
+ "internalType": "uint256",
993
+ "name": "inboxSeqNum",
994
+ "type": "uint256"
995
+ },
996
+ {
997
+ "internalType": "uint256",
998
+ "name": "baseFeeL1",
999
+ "type": "uint256"
1000
+ },
1001
+ {
1002
+ "internalType": "bytes32",
1003
+ "name": "messageDataHash",
1004
+ "type": "bytes32"
1005
+ }
1006
+ ],
1007
+ "internalType": "struct Messages.Message",
1008
+ "name": "delayedMessage",
1009
+ "type": "tuple"
1010
+ }
1011
+ ],
1012
+ "internalType": "struct DelayProof",
1013
+ "name": "delayProof",
1014
+ "type": "tuple"
1015
+ }
1016
+ ],
1017
+ "name": "addSequencerL2BatchFromOriginDelayProof",
1018
+ "outputs": [],
1019
+ "stateMutability": "nonpayable",
1020
+ "type": "function"
1021
+ },
1022
+ {
1023
+ "inputs": [],
1024
+ "name": "batchCount",
1025
+ "outputs": [
1026
+ {
1027
+ "internalType": "uint256",
1028
+ "name": "",
1029
+ "type": "uint256"
1030
+ }
1031
+ ],
1032
+ "stateMutability": "view",
1033
+ "type": "function"
1034
+ },
1035
+ {
1036
+ "inputs": [],
1037
+ "name": "batchPosterManager",
1038
+ "outputs": [
1039
+ {
1040
+ "internalType": "address",
1041
+ "name": "",
1042
+ "type": "address"
1043
+ }
1044
+ ],
1045
+ "stateMutability": "view",
1046
+ "type": "function"
1047
+ },
1048
+ {
1049
+ "inputs": [],
1050
+ "name": "bridge",
1051
+ "outputs": [
1052
+ {
1053
+ "internalType": "contract IBridge",
1054
+ "name": "",
1055
+ "type": "address"
1056
+ }
1057
+ ],
1058
+ "stateMutability": "view",
1059
+ "type": "function"
1060
+ },
1061
+ {
1062
+ "inputs": [],
1063
+ "name": "buffer",
1064
+ "outputs": [
1065
+ {
1066
+ "internalType": "uint64",
1067
+ "name": "bufferBlocks",
1068
+ "type": "uint64"
1069
+ },
1070
+ {
1071
+ "internalType": "uint64",
1072
+ "name": "max",
1073
+ "type": "uint64"
1074
+ },
1075
+ {
1076
+ "internalType": "uint64",
1077
+ "name": "threshold",
1078
+ "type": "uint64"
1079
+ },
1080
+ {
1081
+ "internalType": "uint64",
1082
+ "name": "prevBlockNumber",
1083
+ "type": "uint64"
1084
+ },
1085
+ {
1086
+ "internalType": "uint64",
1087
+ "name": "replenishRateInBasis",
1088
+ "type": "uint64"
1089
+ },
1090
+ {
1091
+ "internalType": "uint64",
1092
+ "name": "prevSequencedBlockNumber",
1093
+ "type": "uint64"
1094
+ }
1095
+ ],
1096
+ "stateMutability": "view",
1097
+ "type": "function"
1098
+ },
1099
+ {
1100
+ "inputs": [
1101
+ {
1102
+ "internalType": "bytes32",
1103
+ "name": "",
1104
+ "type": "bytes32"
1105
+ }
1106
+ ],
1107
+ "name": "dasKeySetInfo",
1108
+ "outputs": [
1109
+ {
1110
+ "internalType": "bool",
1111
+ "name": "isValidKeyset",
1112
+ "type": "bool"
1113
+ },
1114
+ {
1115
+ "internalType": "uint64",
1116
+ "name": "creationBlock",
1117
+ "type": "uint64"
1118
+ }
1119
+ ],
1120
+ "stateMutability": "view",
1121
+ "type": "function"
1122
+ },
1123
+ {
1124
+ "inputs": [
1125
+ {
1126
+ "internalType": "uint256",
1127
+ "name": "_totalDelayedMessagesRead",
1128
+ "type": "uint256"
1129
+ },
1130
+ {
1131
+ "internalType": "uint8",
1132
+ "name": "kind",
1133
+ "type": "uint8"
1134
+ },
1135
+ {
1136
+ "internalType": "uint64[2]",
1137
+ "name": "l1BlockAndTime",
1138
+ "type": "uint64[2]"
1139
+ },
1140
+ {
1141
+ "internalType": "uint256",
1142
+ "name": "baseFeeL1",
1143
+ "type": "uint256"
1144
+ },
1145
+ {
1146
+ "internalType": "address",
1147
+ "name": "sender",
1148
+ "type": "address"
1149
+ },
1150
+ {
1151
+ "internalType": "bytes32",
1152
+ "name": "messageDataHash",
1153
+ "type": "bytes32"
1154
+ }
1155
+ ],
1156
+ "name": "forceInclusion",
1157
+ "outputs": [],
1158
+ "stateMutability": "nonpayable",
1159
+ "type": "function"
1160
+ },
1161
+ {
1162
+ "inputs": [
1163
+ {
1164
+ "internalType": "uint64",
1165
+ "name": "blockNumber",
1166
+ "type": "uint64"
1167
+ }
1168
+ ],
1169
+ "name": "forceInclusionDeadline",
1170
+ "outputs": [
1171
+ {
1172
+ "internalType": "uint64",
1173
+ "name": "",
1174
+ "type": "uint64"
1175
+ }
1176
+ ],
1177
+ "stateMutability": "view",
1178
+ "type": "function"
1179
+ },
1180
+ {
1181
+ "inputs": [
1182
+ {
1183
+ "internalType": "bytes32",
1184
+ "name": "ksHash",
1185
+ "type": "bytes32"
1186
+ }
1187
+ ],
1188
+ "name": "getKeysetCreationBlock",
1189
+ "outputs": [
1190
+ {
1191
+ "internalType": "uint256",
1192
+ "name": "",
1193
+ "type": "uint256"
1194
+ }
1195
+ ],
1196
+ "stateMutability": "view",
1197
+ "type": "function"
1198
+ },
1199
+ {
1200
+ "inputs": [
1201
+ {
1202
+ "internalType": "uint256",
1203
+ "name": "index",
1204
+ "type": "uint256"
1205
+ }
1206
+ ],
1207
+ "name": "inboxAccs",
1208
+ "outputs": [
1209
+ {
1210
+ "internalType": "bytes32",
1211
+ "name": "",
1212
+ "type": "bytes32"
1213
+ }
1214
+ ],
1215
+ "stateMutability": "view",
1216
+ "type": "function"
1217
+ },
1218
+ {
1219
+ "inputs": [
1220
+ {
1221
+ "internalType": "contract IBridge",
1222
+ "name": "bridge_",
1223
+ "type": "address"
1224
+ },
1225
+ {
1226
+ "components": [
1227
+ {
1228
+ "internalType": "uint256",
1229
+ "name": "delayBlocks",
1230
+ "type": "uint256"
1231
+ },
1232
+ {
1233
+ "internalType": "uint256",
1234
+ "name": "futureBlocks",
1235
+ "type": "uint256"
1236
+ },
1237
+ {
1238
+ "internalType": "uint256",
1239
+ "name": "delaySeconds",
1240
+ "type": "uint256"
1241
+ },
1242
+ {
1243
+ "internalType": "uint256",
1244
+ "name": "futureSeconds",
1245
+ "type": "uint256"
1246
+ }
1247
+ ],
1248
+ "internalType": "struct ISequencerInbox.MaxTimeVariation",
1249
+ "name": "maxTimeVariation_",
1250
+ "type": "tuple"
1251
+ },
1252
+ {
1253
+ "components": [
1254
+ {
1255
+ "internalType": "uint64",
1256
+ "name": "threshold",
1257
+ "type": "uint64"
1258
+ },
1259
+ {
1260
+ "internalType": "uint64",
1261
+ "name": "max",
1262
+ "type": "uint64"
1263
+ },
1264
+ {
1265
+ "internalType": "uint64",
1266
+ "name": "replenishRateInBasis",
1267
+ "type": "uint64"
1268
+ }
1269
+ ],
1270
+ "internalType": "struct BufferConfig",
1271
+ "name": "bufferConfig_",
1272
+ "type": "tuple"
1273
+ }
1274
+ ],
1275
+ "name": "initialize",
1276
+ "outputs": [],
1277
+ "stateMutability": "nonpayable",
1278
+ "type": "function"
1279
+ },
1280
+ {
1281
+ "inputs": [
1282
+ {
1283
+ "internalType": "bytes32",
1284
+ "name": "ksHash",
1285
+ "type": "bytes32"
1286
+ }
1287
+ ],
1288
+ "name": "invalidateKeysetHash",
1289
+ "outputs": [],
1290
+ "stateMutability": "nonpayable",
1291
+ "type": "function"
1292
+ },
1293
+ {
1294
+ "inputs": [
1295
+ {
1296
+ "internalType": "address",
1297
+ "name": "",
1298
+ "type": "address"
1299
+ }
1300
+ ],
1301
+ "name": "isBatchPoster",
1302
+ "outputs": [
1303
+ {
1304
+ "internalType": "bool",
1305
+ "name": "",
1306
+ "type": "bool"
1307
+ }
1308
+ ],
1309
+ "stateMutability": "view",
1310
+ "type": "function"
1311
+ },
1312
+ {
1313
+ "inputs": [],
1314
+ "name": "isDelayBufferable",
1315
+ "outputs": [
1316
+ {
1317
+ "internalType": "bool",
1318
+ "name": "",
1319
+ "type": "bool"
1320
+ }
1321
+ ],
1322
+ "stateMutability": "view",
1323
+ "type": "function"
1324
+ },
1325
+ {
1326
+ "inputs": [
1327
+ {
1328
+ "internalType": "address",
1329
+ "name": "",
1330
+ "type": "address"
1331
+ }
1332
+ ],
1333
+ "name": "isSequencer",
1334
+ "outputs": [
1335
+ {
1336
+ "internalType": "bool",
1337
+ "name": "",
1338
+ "type": "bool"
1339
+ }
1340
+ ],
1341
+ "stateMutability": "view",
1342
+ "type": "function"
1343
+ },
1344
+ {
1345
+ "inputs": [],
1346
+ "name": "isUsingFeeToken",
1347
+ "outputs": [
1348
+ {
1349
+ "internalType": "bool",
1350
+ "name": "",
1351
+ "type": "bool"
1352
+ }
1353
+ ],
1354
+ "stateMutability": "view",
1355
+ "type": "function"
1356
+ },
1357
+ {
1358
+ "inputs": [
1359
+ {
1360
+ "internalType": "bytes32",
1361
+ "name": "ksHash",
1362
+ "type": "bytes32"
1363
+ }
1364
+ ],
1365
+ "name": "isValidKeysetHash",
1366
+ "outputs": [
1367
+ {
1368
+ "internalType": "bool",
1369
+ "name": "",
1370
+ "type": "bool"
1371
+ }
1372
+ ],
1373
+ "stateMutability": "view",
1374
+ "type": "function"
1375
+ },
1376
+ {
1377
+ "inputs": [],
1378
+ "name": "maxDataSize",
1379
+ "outputs": [
1380
+ {
1381
+ "internalType": "uint256",
1382
+ "name": "",
1383
+ "type": "uint256"
1384
+ }
1385
+ ],
1386
+ "stateMutability": "view",
1387
+ "type": "function"
1388
+ },
1389
+ {
1390
+ "inputs": [],
1391
+ "name": "maxTimeVariation",
1392
+ "outputs": [
1393
+ {
1394
+ "internalType": "uint256",
1395
+ "name": "",
1396
+ "type": "uint256"
1397
+ },
1398
+ {
1399
+ "internalType": "uint256",
1400
+ "name": "",
1401
+ "type": "uint256"
1402
+ },
1403
+ {
1404
+ "internalType": "uint256",
1405
+ "name": "",
1406
+ "type": "uint256"
1407
+ },
1408
+ {
1409
+ "internalType": "uint256",
1410
+ "name": "",
1411
+ "type": "uint256"
1412
+ }
1413
+ ],
1414
+ "stateMutability": "view",
1415
+ "type": "function"
1416
+ },
1417
+ {
1418
+ "inputs": [
1419
+ {
1420
+ "components": [
1421
+ {
1422
+ "internalType": "uint64",
1423
+ "name": "threshold",
1424
+ "type": "uint64"
1425
+ },
1426
+ {
1427
+ "internalType": "uint64",
1428
+ "name": "max",
1429
+ "type": "uint64"
1430
+ },
1431
+ {
1432
+ "internalType": "uint64",
1433
+ "name": "replenishRateInBasis",
1434
+ "type": "uint64"
1435
+ }
1436
+ ],
1437
+ "internalType": "struct BufferConfig",
1438
+ "name": "bufferConfig_",
1439
+ "type": "tuple"
1440
+ }
1441
+ ],
1442
+ "name": "postUpgradeInit",
1443
+ "outputs": [],
1444
+ "stateMutability": "nonpayable",
1445
+ "type": "function"
1446
+ },
1447
+ {
1448
+ "inputs": [],
1449
+ "name": "reader4844",
1450
+ "outputs": [
1451
+ {
1452
+ "internalType": "contract IReader4844",
1453
+ "name": "",
1454
+ "type": "address"
1455
+ }
1456
+ ],
1457
+ "stateMutability": "view",
1458
+ "type": "function"
1459
+ },
1460
+ {
1461
+ "inputs": [],
1462
+ "name": "removeDelayAfterFork",
1463
+ "outputs": [],
1464
+ "stateMutability": "nonpayable",
1465
+ "type": "function"
1466
+ },
1467
+ {
1468
+ "inputs": [],
1469
+ "name": "rollup",
1470
+ "outputs": [
1471
+ {
1472
+ "internalType": "contract IOwnable",
1473
+ "name": "",
1474
+ "type": "address"
1475
+ }
1476
+ ],
1477
+ "stateMutability": "view",
1478
+ "type": "function"
1479
+ },
1480
+ {
1481
+ "inputs": [
1482
+ {
1483
+ "internalType": "address",
1484
+ "name": "newBatchPosterManager",
1485
+ "type": "address"
1486
+ }
1487
+ ],
1488
+ "name": "setBatchPosterManager",
1489
+ "outputs": [],
1490
+ "stateMutability": "nonpayable",
1491
+ "type": "function"
1492
+ },
1493
+ {
1494
+ "inputs": [
1495
+ {
1496
+ "components": [
1497
+ {
1498
+ "internalType": "uint64",
1499
+ "name": "threshold",
1500
+ "type": "uint64"
1501
+ },
1502
+ {
1503
+ "internalType": "uint64",
1504
+ "name": "max",
1505
+ "type": "uint64"
1506
+ },
1507
+ {
1508
+ "internalType": "uint64",
1509
+ "name": "replenishRateInBasis",
1510
+ "type": "uint64"
1511
+ }
1512
+ ],
1513
+ "internalType": "struct BufferConfig",
1514
+ "name": "bufferConfig_",
1515
+ "type": "tuple"
1516
+ }
1517
+ ],
1518
+ "name": "setBufferConfig",
1519
+ "outputs": [],
1520
+ "stateMutability": "nonpayable",
1521
+ "type": "function"
1522
+ },
1523
+ {
1524
+ "inputs": [
1525
+ {
1526
+ "internalType": "address",
1527
+ "name": "addr",
1528
+ "type": "address"
1529
+ },
1530
+ {
1531
+ "internalType": "bool",
1532
+ "name": "isBatchPoster_",
1533
+ "type": "bool"
1534
+ }
1535
+ ],
1536
+ "name": "setIsBatchPoster",
1537
+ "outputs": [],
1538
+ "stateMutability": "nonpayable",
1539
+ "type": "function"
1540
+ },
1541
+ {
1542
+ "inputs": [
1543
+ {
1544
+ "internalType": "address",
1545
+ "name": "addr",
1546
+ "type": "address"
1547
+ },
1548
+ {
1549
+ "internalType": "bool",
1550
+ "name": "isSequencer_",
1551
+ "type": "bool"
1552
+ }
1553
+ ],
1554
+ "name": "setIsSequencer",
1555
+ "outputs": [],
1556
+ "stateMutability": "nonpayable",
1557
+ "type": "function"
1558
+ },
1559
+ {
1560
+ "inputs": [
1561
+ {
1562
+ "components": [
1563
+ {
1564
+ "internalType": "uint256",
1565
+ "name": "delayBlocks",
1566
+ "type": "uint256"
1567
+ },
1568
+ {
1569
+ "internalType": "uint256",
1570
+ "name": "futureBlocks",
1571
+ "type": "uint256"
1572
+ },
1573
+ {
1574
+ "internalType": "uint256",
1575
+ "name": "delaySeconds",
1576
+ "type": "uint256"
1577
+ },
1578
+ {
1579
+ "internalType": "uint256",
1580
+ "name": "futureSeconds",
1581
+ "type": "uint256"
1582
+ }
1583
+ ],
1584
+ "internalType": "struct ISequencerInbox.MaxTimeVariation",
1585
+ "name": "maxTimeVariation_",
1586
+ "type": "tuple"
1587
+ }
1588
+ ],
1589
+ "name": "setMaxTimeVariation",
1590
+ "outputs": [],
1591
+ "stateMutability": "nonpayable",
1592
+ "type": "function"
1593
+ },
1594
+ {
1595
+ "inputs": [
1596
+ {
1597
+ "internalType": "bytes",
1598
+ "name": "keysetBytes",
1599
+ "type": "bytes"
1600
+ }
1601
+ ],
1602
+ "name": "setValidKeyset",
1603
+ "outputs": [],
1604
+ "stateMutability": "nonpayable",
1605
+ "type": "function"
1606
+ },
1607
+ {
1608
+ "inputs": [],
1609
+ "name": "totalDelayedMessagesRead",
1610
+ "outputs": [
1611
+ {
1612
+ "internalType": "uint256",
1613
+ "name": "",
1614
+ "type": "uint256"
1615
+ }
1616
+ ],
1617
+ "stateMutability": "view",
1618
+ "type": "function"
1619
+ },
1620
+ {
1621
+ "inputs": [],
1622
+ "name": "updateRollupAddress",
1623
+ "outputs": [],
1624
+ "stateMutability": "nonpayable",
1625
+ "type": "function"
1626
+ }
1627
+ ],
1628
+ "bytecode": "0x610180604052306080526202000060a05246610100526200002b62000115602090811b62002ea417901c565b1515610120523480156200003e57600080fd5b50604051620053eb380380620053eb8339810160408190526200006191620001c8565b838383838360e081815250506101205115620000a6576001600160a01b03831615620000a0576040516386657a5360e01b815260040160405180910390fd5b620000ef565b6001600160a01b038316620000ef576040516380fc2c0360e01b815260206004820152600a60248201526914995859195c8d0e0d0d60b21b604482015260640160405180910390fd5b6001600160a01b0390921660c052151561014052151561016052506200025b9350505050565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200015591906200022a565b600060405180830381855afa9150503d806000811462000192576040519150601f19603f3d011682016040523d82523d6000602084013e62000197565b606091505b5091509150818015620001ab575080516020145b9250505090565b80518015158114620001c357600080fd5b919050565b60008060008060808587031215620001df57600080fd5b845160208601519094506001600160a01b0381168114620001ff57600080fd5b92506200020f60408601620001b2565b91506200021f60608601620001b2565b905092959194509250565b6000825160005b818110156200024d576020818601810151858301520162000231565b506000920191825250919050565b60805160a05160c05160e05161010051610120516101405161016051615089620003626000396000818161043701528181610b86015281816113f3015281816118e201528181611fb401528181612416015281816129ef01528181612b840152818161309801526132da0152600081816105f401528181610a45015281816134480152613ac20152600081816127d0015281816133e60152613ca8015260008181612271015261373901526000818161070e01528181613f910152613fe601526000818161058f0152818161109b0152611f5d01526000818161127b015281816115af01528181611e52015261216701526000818161089301526122f001526150896000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80637fa3a40e11610191578063d1ce8da8116100e3578063e78cea9211610097578063edaafe2011610071578063edaafe2014610758578063f1981578146107e1578063f60a5091146107f457600080fd5b8063e78cea92146106f6578063e8eb1dc314610709578063ebea461d1461073057600080fd5b8063dd44e6e0116100c8578063dd44e6e014610690578063e0bc9729146106bc578063e5a358c8146106cf57600080fd5b8063d1ce8da81461066a578063d9dd67ab1461067d57600080fd5b806392d9f78211610145578063b31761f81161011f578063b31761f814610631578063cb23bcb514610644578063cc2a1a0c1461065757600080fd5b806392d9f782146105ef57806396cc5c7814610616578063a655d9371461061e57600080fd5b80638d910dde116101765780638d910dde1461058a5780638f111f3c146105c9578063917cf8ac146105dc57600080fd5b80637fa3a40e1461056e578063844208601461057757600080fd5b80633e5aa0821161024a5780636d46e987116101fe5780636f12b0c9116101d85780636f12b0c9146104e4578063715ea34b146104f757806371c3e6fe1461054b57600080fd5b80636d46e9871461049b5780636e620055146104be5780636e7df3e7146104d157600080fd5b806369cacded1161022f57806369cacded146104595780636ae71f121461046c5780636c8904501461047457600080fd5b80633e5aa0821461041f5780634b678a661461043257600080fd5b80631f956632116102ac57806327957a491161028657806327957a49146103dd5780632cbf74e5146103e55780632f3985a71461040c57600080fd5b80631f956632146103a45780631ff64790146103b7578063258f0495146103ca57600080fd5b80631637be48116102dd5780631637be481461035457806316af91a7146103875780631ad87e451461038f57600080fd5b806302c99275146102f957806306f130561461033e575b600080fd5b6103207f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b6103466107ff565b604051908152602001610335565b6103776103623660046144b2565b60009081526008602052604090205460ff1690565b6040519015158152602001610335565b610320600081565b6103a261039d3660046145ff565b610889565b005b6103a26103b2366004614660565b610bb9565b6103a26103c5366004614699565b610d24565b6103466103d83660046144b2565b610ef2565b610346602881565b6103207f500000000000000000000000000000000000000000000000000000000000000081565b6103a261041a3660046146b6565b610f5f565b6103a261042d3660046146d2565b611098565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a261046736600461477d565b611381565b6103a26116b7565b6103207f080000000000000000000000000000000000000000000000000000000000000081565b6103776104a9366004614699565b60096020526000908152604090205460ff1681565b6103a26104cc36600461477d565b61188f565b6103a26104df366004614660565b611941565b6103a26104f236600461480b565b611aac565b61052b6105053660046144b2565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610335565b610377610559366004614699565b60036020526000908152604090205460ff1681565b61034660005481565b6103a26105853660046144b2565b611ade565b6105b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610335565b6103a26105d7366004614876565b611c53565b6103a26105ea3660046148f3565b611f5a565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a261226e565b6103a261062c3660046146b6565b6122e6565b6103a261063f36600461494f565b6124a4565b6002546105b1906001600160a01b031681565b600b546105b1906001600160a01b031681565b6103a26106783660046149b5565b612603565b61034661068b3660046144b2565b612950565b6106a361069e3660046149f7565b6129dd565b60405167ffffffffffffffff9091168152602001610335565b6103a26106ca366004614876565b612a40565b6103207f400000000000000000000000000000000000000000000000000000000000000081565b6001546105b1906001600160a01b031681565b6103467f000000000000000000000000000000000000000000000000000000000000000081565b610738612ac8565b604080519485526020850193909352918301526060820152608001610335565b600c54600d5461079e9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610335565b6103a26107ef366004614a23565b612b01565b610320600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190614a8b565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610989576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109c9576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a25575060408051601f3d908101601f19168201909252610a2291810190614aa4565b60015b15610a40576001600160a01b03811615610a3e57600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610a9d576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614aa4565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b84610b7f3685900385018561494f565b612f6a565b7f000000000000000000000000000000000000000000000000000000000000000015610bb357610bb382613096565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190614aa4565b6001600160a01b0316336001600160a01b031614158015610c5c5750600b546001600160a01b03163314155b15610c95576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600081815260096020908152604091829020805460ff19168515159081179091558251938452908301527feb12a9a53eec138c91b27b4f912a257bd690c18fc8bde744be92a0365eb9b87e910160405180910390a16040516004907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9b9190614aa4565b6001600160a01b0316336001600160a01b031614610e655760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e209190614aa4565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260440161093d565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f3cd6c184800297a0f2b00926a683cbe76890bb7fd01480ac0a10ed6c8f7f66599060200160405180910390a16040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610f4b5760405162f20c5d60e01b81526004810184905260240161093d565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd69190614aa4565b6001600160a01b0316336001600160a01b0316146110375760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b61104081613096565b60408051825167ffffffffffffffff908116825260208085015182169083015283830151168183015290517faa7a2d8175dee3b637814ad6346005dfcc357165396fb8327f649effe8abcf859181900360600190a150565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff166110f057604051632dd9fc9760e01b815260040160405180910390fd5b6110f9876132d6565b1561111757604051630e5da8fb60e01b815260040160405180910390fd5b6111238888878761331e565b6001600160a01b0383161561137757366000602061114283601f614ad7565b61114c9190614aea565b905061020061115c600283614bf0565b6111669190614aea565b611171826006614bff565b61117b9190614ad7565b6111859084614ad7565b925033321461119757600091506112ca565b6001600160a01b038416156112ca57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561120557506040513d6000823e601f3d908101601f191682016040526112029190810190614c16565b60015b156112ca578051156112c8576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112759190614a8b565b905048817f000000000000000000000000000000000000000000000000000000000000000084516112a69190614bff565b6112b09190614bff565b6112ba9190614aea565b6112c49086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a6112e59087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561134f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113739190614ccf565b5050505b5050505050505050565b836000805a90503332146113c1576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff166113f157604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061142f57604051631192b39960e31b815260040160405180910390fd5b6114478861144236879003870187614cec565b61347a565b6114578b8b8b8b8a8a6001613587565b6001600160a01b0383161561137357366000602061147683601f614ad7565b6114809190614aea565b9050610200611490600283614bf0565b61149a9190614aea565b6114a5826006614bff565b6114af9190614ad7565b6114b99084614ad7565b92503332146114cb57600091506115fe565b6001600160a01b038416156115fe57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561153957506040513d6000823e601f3d908101601f191682016040526115369190810190614c16565b60015b156115fe578051156115fc576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190614a8b565b905048817f000000000000000000000000000000000000000000000000000000000000000084516115da9190614bff565b6115e49190614bff565b6115ee9190614aea565b6115f89086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a6116199087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a79190614ccf565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172e9190614aa4565b6001600160a01b0316336001600160a01b03161461178f5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190614aa4565b6002549091506001600160a01b03808316911603611860576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff161580156118c257506002546001600160a01b03163314155b156118e057604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061191e57604051631192b39960e31b815260040160405180910390fd5b6119318861144236879003870187614cec565b6114578b8b8b8b8a8a6000613587565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b89190614aa4565b6001600160a01b0316336001600160a01b0316141580156119e45750600b546001600160a01b03163314155b15611a1d576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f28bcc5626d357efe966b4b0876aa1ee8ab99e26da4f131f6a2623f1800701c21910160405180910390a16040516001907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b559190614aa4565b6001600160a01b0316336001600160a01b031614611bb65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b60008181526008602052604090205460ff16611be75760405162f20c5d60e01b81526004810182905260240161093d565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611c93576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611cc357604051632dd9fc9760e01b815260040160405180910390fd5b611ccc876132d6565b15611cea57604051630e5da8fb60e01b815260040160405180910390fd5b611cfa8a8a8a8a89896001613587565b6001600160a01b03831615611f4e573660006020611d1983601f614ad7565b611d239190614aea565b9050610200611d33600283614bf0565b611d3d9190614aea565b611d48826006614bff565b611d529190614ad7565b611d5c9084614ad7565b9250333214611d6e5760009150611ea1565b6001600160a01b03841615611ea157836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611ddc57506040513d6000823e601f3d908101601f19168201604052611dd99190810190614c16565b60015b15611ea157805115611e9f576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4c9190614a8b565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611e7d9190614bff565b611e879190614bff565b611e919190614aea565b611e9b9086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a611ebc9087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a9190614ccf565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16611fb257604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611ff057604051631192b39960e31b815260040160405180910390fd5b6120038861144236879003870187614cec565b61200f8989888861331e565b6001600160a01b0383161561226357366000602061202e83601f614ad7565b6120389190614aea565b9050610200612048600283614bf0565b6120529190614aea565b61205d826006614bff565b6120679190614ad7565b6120719084614ad7565b925033321461208357600091506121b6565b6001600160a01b038416156121b657836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156120f157506040513d6000823e601f3d908101601f191682016040526120ee9190810190614c16565b60015b156121b6578051156121b4576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121619190614a8b565b905048817f000000000000000000000000000000000000000000000000000000000000000084516121929190614bff565b61219c9190614bff565b6121a69190614aea565b6121b09086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a6121d19087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225f9190614ccf565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036122c7576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093d565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614612414576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161093d565b7f000000000000000000000000000000000000000000000000000000000000000061245257604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff1615612496576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61249f83613096565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251b9190614aa4565b6001600160a01b0316336001600160a01b03161461257c5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b61258581612f6a565b60408051825181526020808401519082015282820151818301526060808401519082015290517faa6a58dad31128ff7ecc2b80987ee6e003df80bc50cd8d0b0d1af0e07da6d19d9181900360800190a16040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267a9190614aa4565b6001600160a01b0316336001600160a01b0316146126db5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b600082826040516126ed929190614d9a565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310612781576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156127cd576040517ffa2fddda0000000000000000000000000000000000000000000000000000000081526004810182905260240161093d565b437f00000000000000000000000000000000000000000000000000000000000000001561285a5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128579190614a8b565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906129159088908890614daa565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156129b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d79190614a8b565b92915050565b600a5460009067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612a2f576000612a20600c856136b2565b9050612a2b81613701565b9150505b612a398184614dd9565b9392505050565b826000805a3360009081526003602052604090205490915060ff16158015612a7357506002546001600160a01b03163314155b15612a9157604051632dd9fc9760e01b815260040160405180910390fd5b612a9a876132d6565b15612ab857604051630e5da8fb60e01b815260040160405180910390fd5b611cfa8a8a8a8a89896000613587565b600080600080600080600080612adc613731565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612b3c576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b728684612b5060208901896149f7565b612b6060408a0160208b016149f7565b612b6b60018d614cbc565b89886137a8565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612be357612bc0612bb860208801886149f7565b600c9061384d565b600c54612bd69067ffffffffffffffff16613701565b67ffffffffffffffff1690505b4381612bf260208901896149f7565b67ffffffffffffffff16612c069190614ad7565b10612c3d576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612cc6576001546001600160a01b031663d5719dc2612c6460028c614cbc565b6040518263ffffffff1660e01b8152600401612c8291815260200190565b602060405180830381865afa158015612c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc39190614a8b565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612d0c908d614cbc565b6040518263ffffffff1660e01b8152600401612d2a91815260200190565b602060405180830381865afa158015612d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6b9190614a8b565b14612da2576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612dae8b6138d3565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e309190614a8b565b9050806000808080612e458988838880613918565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612e889493929190614e17565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612f109190614eb0565b600060405180830381855afa9150503d8060008114612f4b576040519150601f19603f3d011682016040523d82523d6000602084013e612f50565b606091505b5091509150818015612f63575080516020145b9250505090565b805167ffffffffffffffff1080612f8c5750602081015167ffffffffffffffff105b80612fa25750604081015167ffffffffffffffff105b80612fb85750606081015167ffffffffffffffff105b15612fef576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006130d457604051631192b39960e31b815260040160405180910390fd5b6130dd81613b01565b613113576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061313f57506020810151600c5467ffffffffffffffff9182169116115b1561316b576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff918216911610156131a8578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa15801561329f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c39190614a8b565b036132d3576132d3600c4361384d565b50565b60007f00000000000000000000000000000000000000000000000000000000000000008015613306575060005482115b80156129d75750613317600c613b69565b1592915050565b600080600061332c86613b9c565b925092509250600080600080613346878b60008c8c613918565b93509350935093508a841415801561336057506000198b14155b156133a1576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c905260440161093d565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516133dc9493929190614e17565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000001561343c576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561346957507f0000000000000000000000000000000000000000000000000000000000000000155b156113735761137387854888613ca5565b6000548211156135835761348e600c613ee7565b1561358357600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916134e29160040190815260200190565b602060405180830381865afa1580156134ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135239190614a8b565b90506135388183600001518460200151613f18565b61356e576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208201516040015161249f90600c9061384d565b5050565b600080613595888888613f5d565b915091506000806000806135b9868b896135b05760006135b2565b8d5b8c8c613918565b93509350935093508c84141580156135d357506000198d14155b15613614576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e905260440161093d565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d61364957600161364c565b60005b60405161365c9493929190614e17565b60405180910390a486611f4a57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d60405161369b929190614daa565b60405180910390a250505050505050505050505050565b81546001830154600091612a399167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b81048316939190048216911661416b565b600a5460009067ffffffffffffffff9081169083161061372d57600a5467ffffffffffffffff166129d7565b5090565b6000808080467f00000000000000000000000000000000000000000000000000000000000000001461376e57506001925082915081905080612afb565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b900416612afb565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b61385782826136b2565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b604080516080810182526000808252602082018190529181018290526060810182905260008061390285614232565b8151602090920191909120969095509350505050565b60008060008060005488101561395a576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d19190614a8b565b881115613a0a576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa79190614ecc565b60008c9055929650909450925090508615801590613ae357507f0000000000000000000000000000000000000000000000000000000000000000155b15613af557613af58985486000613ca5565b95509550955095915050565b805160009067ffffffffffffffff1615801590613b2b5750602082015167ffffffffffffffff1615155b8015613b475750612710826040015167ffffffffffffffff1611155b80156129d75750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613b9491600160c01b9091041643614cbc565b111592915050565b604080516080810182526000808252602082018190529181018290526060810182905260408051606081018252600080825260208201819052918101829052600080613be787614232565b9092509050633b9aca0060006003613c026202000084614bff565b613c0c9190614bff565b60405190915084907f500000000000000000000000000000000000000000000000000000000000000090613c44908890602001614f02565b60408051601f1981840301815290829052613c63939291602001614f36565b604051602081830303815290604052805190602001208360004811613c89576000613c93565b613c934884614aea565b97509750975050505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613d4b576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d319190614a8b565b9050613d3d4882614aea565b613d479084614ad7565b9250505b67ffffffffffffffff821115613d8d576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015613e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea49190614a8b565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051613ed69190614f79565b60405180910390a250505050505050565b6000613ef282613b69565b15806129d75750505467ffffffffffffffff680100000000000000008204811691161090565b6000613f5383613f278461430a565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000613f8d856028614ad7565b90507f0000000000000000000000000000000000000000000000000000000000000000811115614012576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161093d565b60008061401e86614232565b909250905086156141315761404e8888600081811061403f5761403f614e01565b9050013560f81c60f81b614337565b6140a6578787600081811061406557614065614e01565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b03191660048301525060240161093d565b600160ff1b88886000816140bc576140bc614e01565b6001600160f81b0319920135929092161615801591506140dd575060218710155b156141315760006140f2602160018a8c614fac565b6140fb91614fd6565b60008181526008602052604090205490915060ff1661412f5760405162f20c5d60e01b81526004810182905260240161093d565b505b81888860405160200161414693929190614ff4565b60408051601f1981840301815291905280516020909101209890975095505050505050565b60008088881161417c576000614186565b6141868989614cbc565b905060008987116141985760006141a2565b6141a28a88614cbc565b90506127106141b18584614bff565b6141bb9190614aea565b6141c59089614ad7565b975060008682116141d75760006141e1565b6141e18783614cbc565b9050828111156141ee5750815b8089111561422357614200818a614cbc565b985086891115614223578589116142175788614219565b855b9350505050613842565b50949998505050505050505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161425f6143ca565b905060008160000151826020015183604001518460600151886040516020016142df95949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b604051602081830303815290604052905060288151146143015761430161501c565b94909350915050565b60006129d7826000015183602001518460400151856060015186608001518760a001518860c001516137a8565b60006001600160f81b03198216158061435d57506001600160f81b03198216600160ff1b145b8061439157506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b806129d757506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600080600080614420613731565b93509350935093508167ffffffffffffffff16421115614451576144448242615032565b67ffffffffffffffff1685525b61445b8142614dd9565b67ffffffffffffffff9081166020870152841643111561448f5761447f8443615032565b67ffffffffffffffff1660408601525b6144998343614dd9565b67ffffffffffffffff1660608601525092949350505050565b6000602082840312156144c457600080fd5b5035919050565b6001600160a01b03811681146132d357600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614519576145196144e0565b60405290565b60405160e0810167ffffffffffffffff81118282101715614519576145196144e0565b604051601f8201601f1916810167ffffffffffffffff8111828210171561456b5761456b6144e0565b604052919050565b803567ffffffffffffffff8116811461458b57600080fd5b919050565b6000606082840312156145a257600080fd5b6040516060810181811067ffffffffffffffff821117156145c5576145c56144e0565b6040529050806145d483614573565b81526145e260208401614573565b60208201526145f360408401614573565b60408201525092915050565b600080600083850361010081121561461657600080fd5b8435614621816144cb565b93506080601f198201121561463557600080fd5b506020840191506146498560a08601614590565b90509250925092565b80151581146132d357600080fd5b6000806040838503121561467357600080fd5b823561467e816144cb565b9150602083013561468e81614652565b809150509250929050565b6000602082840312156146ab57600080fd5b8135612a39816144cb565b6000606082840312156146c857600080fd5b612a398383614590565b600080600080600060a086880312156146ea57600080fd5b85359450602086013593506040860135614703816144cb565b94979396509394606081013594506080013592915050565b60008083601f84011261472d57600080fd5b50813567ffffffffffffffff81111561474557600080fd5b60208301915083602082850101111561475d57600080fd5b9250929050565b6000610100828403121561477757600080fd5b50919050565b6000806000806000806000806101c0898b03121561479a57600080fd5b88359750602089013567ffffffffffffffff8111156147b857600080fd5b6147c48b828c0161471b565b9098509650506040890135945060608901356147df816144cb565b93506080890135925060a089013591506147fc8a60c08b01614764565b90509295985092959890939650565b60008060008060006080868803121561482357600080fd5b85359450602086013567ffffffffffffffff81111561484157600080fd5b61484d8882890161471b565b909550935050604086013591506060860135614868816144cb565b809150509295509295909350565b600080600080600080600060c0888a03121561489157600080fd5b87359650602088013567ffffffffffffffff8111156148af57600080fd5b6148bb8a828b0161471b565b9097509550506040880135935060608801356148d6816144cb565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a0878903121561490d57600080fd5b86359550602087013594506040870135614926816144cb565b935060608701359250608087013591506149438860a08901614764565b90509295509295509295565b60006080828403121561496157600080fd5b6040516080810181811067ffffffffffffffff82111715614984576149846144e0565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156149c857600080fd5b823567ffffffffffffffff8111156149df57600080fd5b6149eb8582860161471b565b90969095509350505050565b600060208284031215614a0957600080fd5b612a3982614573565b803560ff8116811461458b57600080fd5b60008060008060008060e08789031215614a3c57600080fd5b86359550614a4c60208801614a12565b94506080870188811115614a5f57600080fd5b60408801945035925060a0870135614a76816144cb565b8092505060c087013590509295509295509295565b600060208284031215614a9d57600080fd5b5051919050565b600060208284031215614ab657600080fd5b8151612a39816144cb565b634e487b7160e01b600052601160045260246000fd5b808201808211156129d7576129d7614ac1565b600082614b0757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614b47578160001904821115614b2d57614b2d614ac1565b80851615614b3a57918102915b93841c9390800290614b11565b509250929050565b600082614b5e575060016129d7565b81614b6b575060006129d7565b8160018114614b815760028114614b8b57614ba7565b60019150506129d7565b60ff841115614b9c57614b9c614ac1565b50506001821b6129d7565b5060208310610133831016604e8410600b8410161715614bca575081810a6129d7565b614bd48383614b0c565b8060001904821115614be857614be8614ac1565b029392505050565b6000612a3960ff841683614b4f565b80820281158282048414176129d7576129d7614ac1565b60006020808385031215614c2957600080fd5b825167ffffffffffffffff80821115614c4157600080fd5b818501915085601f830112614c5557600080fd5b815181811115614c6757614c676144e0565b8060051b9150614c78848301614542565b8181529183018401918481019088841115614c9257600080fd5b938501935b83851015614cb057845182529385019390850190614c97565b98975050505050505050565b818103818111156129d7576129d7614ac1565b600060208284031215614ce157600080fd5b8151612a3981614652565b6000818303610100811215614d0057600080fd5b614d086144f6565b8335815260e0601f1983011215614d1e57600080fd5b614d2661451f565b9150614d3460208501614a12565b82526040840135614d44816144cb565b6020830152614d5560608501614573565b6040830152614d6660808501614573565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614dfa57614dfa614ac1565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614e7d57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b60005b83811015614ea7578181015183820152602001614e8f565b50506000910152565b60008251614ec2818460208701614e8c565b9190910192915050565b60008060008060808587031215614ee257600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008183825b6003811015614f27578151835260209283019290910190600101614f08565b50505060608201905092915050565b60008451614f48818460208901614e8c565b6001600160f81b031985169083019081528351614f6c816001840160208801614e8c565b0160010195945050505050565b6020815260008251806020840152614f98816040850160208701614e8c565b601f01601f19169190910160400192915050565b60008085851115614fbc57600080fd5b83861115614fc957600080fd5b5050820193919092039150565b803560208310156129d757600019602084900360031b1b1692915050565b60008451615006818460208901614e8c565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fd5b67ffffffffffffffff828116828216039080821115614dfa57614dfa614ac156fea2646970667358221220c28e6e821fbfe3ca801cc0632161efc2e8d1229b98ec517d709446368191b1cf64736f6c63430008110033",
1629
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80637fa3a40e11610191578063d1ce8da8116100e3578063e78cea9211610097578063edaafe2011610071578063edaafe2014610758578063f1981578146107e1578063f60a5091146107f457600080fd5b8063e78cea92146106f6578063e8eb1dc314610709578063ebea461d1461073057600080fd5b8063dd44e6e0116100c8578063dd44e6e014610690578063e0bc9729146106bc578063e5a358c8146106cf57600080fd5b8063d1ce8da81461066a578063d9dd67ab1461067d57600080fd5b806392d9f78211610145578063b31761f81161011f578063b31761f814610631578063cb23bcb514610644578063cc2a1a0c1461065757600080fd5b806392d9f782146105ef57806396cc5c7814610616578063a655d9371461061e57600080fd5b80638d910dde116101765780638d910dde1461058a5780638f111f3c146105c9578063917cf8ac146105dc57600080fd5b80637fa3a40e1461056e578063844208601461057757600080fd5b80633e5aa0821161024a5780636d46e987116101fe5780636f12b0c9116101d85780636f12b0c9146104e4578063715ea34b146104f757806371c3e6fe1461054b57600080fd5b80636d46e9871461049b5780636e620055146104be5780636e7df3e7146104d157600080fd5b806369cacded1161022f57806369cacded146104595780636ae71f121461046c5780636c8904501461047457600080fd5b80633e5aa0821461041f5780634b678a661461043257600080fd5b80631f956632116102ac57806327957a491161028657806327957a49146103dd5780632cbf74e5146103e55780632f3985a71461040c57600080fd5b80631f956632146103a45780631ff64790146103b7578063258f0495146103ca57600080fd5b80631637be48116102dd5780631637be481461035457806316af91a7146103875780631ad87e451461038f57600080fd5b806302c99275146102f957806306f130561461033e575b600080fd5b6103207f200000000000000000000000000000000000000000000000000000000000000081565b6040516001600160f81b031990911681526020015b60405180910390f35b6103466107ff565b604051908152602001610335565b6103776103623660046144b2565b60009081526008602052604090205460ff1690565b6040519015158152602001610335565b610320600081565b6103a261039d3660046145ff565b610889565b005b6103a26103b2366004614660565b610bb9565b6103a26103c5366004614699565b610d24565b6103466103d83660046144b2565b610ef2565b610346602881565b6103207f500000000000000000000000000000000000000000000000000000000000000081565b6103a261041a3660046146b6565b610f5f565b6103a261042d3660046146d2565b611098565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a261046736600461477d565b611381565b6103a26116b7565b6103207f080000000000000000000000000000000000000000000000000000000000000081565b6103776104a9366004614699565b60096020526000908152604090205460ff1681565b6103a26104cc36600461477d565b61188f565b6103a26104df366004614660565b611941565b6103a26104f236600461480b565b611aac565b61052b6105053660046144b2565b60086020526000908152604090205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610335565b610377610559366004614699565b60036020526000908152604090205460ff1681565b61034660005481565b6103a26105853660046144b2565b611ade565b6105b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610335565b6103a26105d7366004614876565b611c53565b6103a26105ea3660046148f3565b611f5a565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103a261226e565b6103a261062c3660046146b6565b6122e6565b6103a261063f36600461494f565b6124a4565b6002546105b1906001600160a01b031681565b600b546105b1906001600160a01b031681565b6103a26106783660046149b5565b612603565b61034661068b3660046144b2565b612950565b6106a361069e3660046149f7565b6129dd565b60405167ffffffffffffffff9091168152602001610335565b6103a26106ca366004614876565b612a40565b6103207f400000000000000000000000000000000000000000000000000000000000000081565b6001546105b1906001600160a01b031681565b6103467f000000000000000000000000000000000000000000000000000000000000000081565b610738612ac8565b604080519485526020850193909352918301526060820152608001610335565b600c54600d5461079e9167ffffffffffffffff8082169268010000000000000000808404831693600160801b8104841693600160c01b9091048116928082169290041686565b6040805167ffffffffffffffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610335565b6103a26107ef366004614a23565b612b01565b610320600160ff1b81565b600154604080517e84120c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916284120c9160048083019260209291908290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190614a8b565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001546001600160a01b031615610989576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166109c9576040517f1ad0f74300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a25575060408051601f3d908101601f19168201909252610a2291810190614aa4565b60015b15610a40576001600160a01b03811615610a3e57600191505b505b8015157f0000000000000000000000000000000000000000000000000000000000000000151514610a9d576040517fc3e31f8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155604080517fcb23bcb5000000000000000000000000000000000000000000000000000000008152905163cb23bcb5916004808201926020929091908290030181865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190614aa4565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055610b84610b7f3685900385018561494f565b612f6a565b7f000000000000000000000000000000000000000000000000000000000000000015610bb357610bb382613096565b50505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190614aa4565b6001600160a01b0316336001600160a01b031614158015610c5c5750600b546001600160a01b03163314155b15610c95576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600081815260096020908152604091829020805460ff19168515159081179091558251938452908301527feb12a9a53eec138c91b27b4f912a257bd690c18fc8bde744be92a0365eb9b87e910160405180910390a16040516004907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9b9190614aa4565b6001600160a01b0316336001600160a01b031614610e655760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e209190614aa4565b6040517f23295f0e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260440161093d565b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527f3cd6c184800297a0f2b00926a683cbe76890bb7fd01480ac0a10ed6c8f7f66599060200160405180910390a16040516005907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b600081815260086020908152604080832081518083019092525460ff811615158252610100900467ffffffffffffffff16918101829052908203610f4b5760405162f20c5d60e01b81526004810184905260240161093d565b6020015167ffffffffffffffff1692915050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd69190614aa4565b6001600160a01b0316336001600160a01b0316146110375760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b61104081613096565b60408051825167ffffffffffffffff908116825260208085015182169083015283830151168183015290517faa7a2d8175dee3b637814ad6346005dfcc357165396fb8327f649effe8abcf859181900360600190a150565b827f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff166110f057604051632dd9fc9760e01b815260040160405180910390fd5b6110f9876132d6565b1561111757604051630e5da8fb60e01b815260040160405180910390fd5b6111238888878761331e565b6001600160a01b0383161561137757366000602061114283601f614ad7565b61114c9190614aea565b905061020061115c600283614bf0565b6111669190614aea565b611171826006614bff565b61117b9190614ad7565b6111859084614ad7565b925033321461119757600091506112ca565b6001600160a01b038416156112ca57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561120557506040513d6000823e601f3d908101601f191682016040526112029190810190614c16565b60015b156112ca578051156112c8576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112759190614a8b565b905048817f000000000000000000000000000000000000000000000000000000000000000084516112a69190614bff565b6112b09190614bff565b6112ba9190614aea565b6112c49086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a6112e59087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561134f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113739190614ccf565b5050505b5050505050505050565b836000805a90503332146113c1576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff166113f157604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061142f57604051631192b39960e31b815260040160405180910390fd5b6114478861144236879003870187614cec565b61347a565b6114578b8b8b8b8a8a6001613587565b6001600160a01b0383161561137357366000602061147683601f614ad7565b6114809190614aea565b9050610200611490600283614bf0565b61149a9190614aea565b6114a5826006614bff565b6114af9190614ad7565b6114b99084614ad7565b92503332146114cb57600091506115fe565b6001600160a01b038416156115fe57836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561153957506040513d6000823e601f3d908101601f191682016040526115369190810190614c16565b60015b156115fe578051156115fc576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190614a8b565b905048817f000000000000000000000000000000000000000000000000000000000000000084516115da9190614bff565b6115e49190614bff565b6115ee9190614aea565b6115f89086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a6116199087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a79190614ccf565b5050505050505050505050505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172e9190614aa4565b6001600160a01b0316336001600160a01b03161461178f5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b600154604080517fcb23bcb500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cb23bcb59160048083019260209291908290030181865afa1580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190614aa4565b6002549091506001600160a01b03808316911603611860576040517fd054909f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b836000805a3360009081526003602052604090205490915060ff161580156118c257506002546001600160a01b03163314155b156118e057604051632dd9fc9760e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061191e57604051631192b39960e31b815260040160405180910390fd5b6119318861144236879003870187614cec565b6114578b8b8b8b8a8a6000613587565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b89190614aa4565b6001600160a01b0316336001600160a01b0316141580156119e45750600b546001600160a01b03163314155b15611a1d576040517f660b3b4200000000000000000000000000000000000000000000000000000000815233600482015260240161093d565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f28bcc5626d357efe966b4b0876aa1ee8ab99e26da4f131f6a2623f1800701c21910160405180910390a16040516001907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050565b6040517fc73b9d7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b559190614aa4565b6001600160a01b0316336001600160a01b031614611bb65760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b60008181526008602052604090205460ff16611be75760405162f20c5d60e01b81526004810182905260240161093d565b600081815260086020526040808220805460ff191690555182917f5cb4218b272fd214168ac43e90fb4d05d6c36f0b17ffb4c2dd07c234d744eb2a91a26040516003907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a250565b826000805a9050333214611c93576040517ffeb3d07100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526003602052604090205460ff16611cc357604051632dd9fc9760e01b815260040160405180910390fd5b611ccc876132d6565b15611cea57604051630e5da8fb60e01b815260040160405180910390fd5b611cfa8a8a8a8a89896001613587565b6001600160a01b03831615611f4e573660006020611d1983601f614ad7565b611d239190614aea565b9050610200611d33600283614bf0565b611d3d9190614aea565b611d48826006614bff565b611d529190614ad7565b611d5c9084614ad7565b9250333214611d6e5760009150611ea1565b6001600160a01b03841615611ea157836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa925050508015611ddc57506040513d6000823e601f3d908101601f19168201604052611dd99190810190614c16565b60015b15611ea157805115611e9f576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4c9190614a8b565b905048817f00000000000000000000000000000000000000000000000000000000000000008451611e7d9190614bff565b611e879190614bff565b611e919190614aea565b611e9b9086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a611ebc9087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af1158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a9190614ccf565b5050505b50505050505050505050565b837f000000000000000000000000000000000000000000000000000000000000000060005a3360009081526003602052604090205490915060ff16611fb257604051632dd9fc9760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000611ff057604051631192b39960e31b815260040160405180910390fd5b6120038861144236879003870187614cec565b61200f8989888861331e565b6001600160a01b0383161561226357366000602061202e83601f614ad7565b6120389190614aea565b9050610200612048600283614bf0565b6120529190614aea565b61205d826006614bff565b6120679190614ad7565b6120719084614ad7565b925033321461208357600091506121b6565b6001600160a01b038416156121b657836001600160a01b031663e83a2d826040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156120f157506040513d6000823e601f3d908101601f191682016040526120ee9190810190614c16565b60015b156121b6578051156121b4576000856001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121619190614a8b565b905048817f000000000000000000000000000000000000000000000000000000000000000084516121929190614bff565b61219c9190614bff565b6121a69190614aea565b6121b09086614ad7565b9450505b505b846001600160a01b031663e3db8a49335a6121d19087614cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604481018590526064016020604051808303816000875af115801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225f9190614ccf565b5050505b505050505050505050565b467f0000000000000000000000000000000000000000000000000000000000000000036122c7576040517fa301bb0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7801000000000000000100000000000000010000000000000001600a55565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161093d565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b03821614612414576040517f23295f0e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260440161093d565b7f000000000000000000000000000000000000000000000000000000000000000061245257604051631192b39960e31b815260040160405180910390fd5b600c5467ffffffffffffffff1615612496576040517fef34ca5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61249f83613096565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251b9190614aa4565b6001600160a01b0316336001600160a01b03161461257c5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b61258581612f6a565b60408051825181526020808401519082015282820151818301526060808401519082015290517faa6a58dad31128ff7ecc2b80987ee6e003df80bc50cd8d0b0d1af0e07da6d19d9181900360800190a16040516000907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e908290a250565b600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267a9190614aa4565b6001600160a01b0316336001600160a01b0316146126db5760025460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610dfc573d6000803e3d6000fd5b600082826040516126ed929190614d9a565b6040519081900381207ffe000000000000000000000000000000000000000000000000000000000000006020830152602182015260410160408051601f1981840301815291905280516020909101209050600160ff1b8118620100008310612781576040517fb3d1f41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181526008602052604090205460ff16156127cd576040517ffa2fddda0000000000000000000000000000000000000000000000000000000081526004810182905260240161093d565b437f00000000000000000000000000000000000000000000000000000000000000001561285a5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128579190614a8b565b90505b6040805180820182526001815267ffffffffffffffff8381166020808401918252600087815260089091528490209251835491517fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000009092169015157fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff161761010091909216021790555182907fabca9b7986bc22ad0160eb0cb88ae75411eacfba4052af0b457a9335ef655722906129159088908890614daa565b60405180910390a26040516002907fea8787f128d10b2cc0317b0c3960f9ad447f7f6c1ed189db1083ccffd20f456e90600090a25050505050565b6001546040517f16bf5579000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906316bf557990602401602060405180830381865afa1580156129b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d79190614a8b565b92915050565b600a5460009067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612a2f576000612a20600c856136b2565b9050612a2b81613701565b9150505b612a398184614dd9565b9392505050565b826000805a3360009081526003602052604090205490915060ff16158015612a7357506002546001600160a01b03163314155b15612a9157604051632dd9fc9760e01b815260040160405180910390fd5b612a9a876132d6565b15612ab857604051630e5da8fb60e01b815260040160405180910390fd5b611cfa8a8a8a8a89896000613587565b600080600080600080600080612adc613731565b67ffffffffffffffff9384169b50918316995082169750169450505050505b90919293565b6000548611612b3c576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b728684612b5060208901896149f7565b612b6060408a0160208b016149f7565b612b6b60018d614cbc565b89886137a8565b600a5490915067ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000015612be357612bc0612bb860208801886149f7565b600c9061384d565b600c54612bd69067ffffffffffffffff16613701565b67ffffffffffffffff1690505b4381612bf260208901896149f7565b67ffffffffffffffff16612c069190614ad7565b10612c3d576040517fad3515d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001891115612cc6576001546001600160a01b031663d5719dc2612c6460028c614cbc565b6040518263ffffffff1660e01b8152600401612c8291815260200190565b602060405180830381865afa158015612c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc39190614a8b565b90505b60408051602080820184905281830186905282518083038401815260609092019092528051910120600180546001600160a01b03169063d5719dc290612d0c908d614cbc565b6040518263ffffffff1660e01b8152600401612d2a91815260200190565b602060405180830381865afa158015612d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6b9190614a8b565b14612da2576040517f13947fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080612dae8b6138d3565b9150915060008b90506000600160009054906101000a90046001600160a01b03166001600160a01b0316635fca4a166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e309190614a8b565b9050806000808080612e458988838880613918565b93509350935093508083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548d6002604051612e889493929190614e17565b60405180910390a4505050505050505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f051038f200000000000000000000000000000000000000000000000000000000179052905160009182918291606491612f109190614eb0565b600060405180830381855afa9150503d8060008114612f4b576040519150601f19603f3d011682016040523d82523d6000602084013e612f50565b606091505b5091509150818015612f63575080516020145b9250505090565b805167ffffffffffffffff1080612f8c5750602081015167ffffffffffffffff105b80612fa25750604081015167ffffffffffffffff105b80612fb85750606081015167ffffffffffffffff105b15612fef576040517f09cfba7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600a80546020840151604085015160609095015167ffffffffffffffff908116600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff968216600160801b02969096166fffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169190951617919091171691909117919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006130d457604051631192b39960e31b815260040160405180910390fd5b6130dd81613b01565b613113576040517fda1c8eb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5467ffffffffffffffff16158061313f57506020810151600c5467ffffffffffffffff9182169116115b1561316b576020810151600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b8051600c5467ffffffffffffffff918216911610156131a8578051600c805467ffffffffffffffff191667ffffffffffffffff9092169190911790555b602081810151600c805484517fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9091166801000000000000000067ffffffffffffffff948516027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1617600160801b91841691909102179055604080840151600d805467ffffffffffffffff1916919093161790915560005460015482517feca067ad000000000000000000000000000000000000000000000000000000008152925191936001600160a01b039091169263eca067ad92600480830193928290030181865afa15801561329f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c39190614a8b565b036132d3576132d3600c4361384d565b50565b60007f00000000000000000000000000000000000000000000000000000000000000008015613306575060005482115b80156129d75750613317600c613b69565b1592915050565b600080600061332c86613b9c565b925092509250600080600080613346878b60008c8c613918565b93509350935093508a841415801561336057506000198b14155b156133a1576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018c905260440161093d565b80838c7f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548b60036040516133dc9493929190614e17565b60405180910390a47f00000000000000000000000000000000000000000000000000000000000000001561343c576040517f86657a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333214801561346957507f0000000000000000000000000000000000000000000000000000000000000000155b156113735761137387854888613ca5565b6000548211156135835761348e600c613ee7565b1561358357600154600080546040517fd5719dc200000000000000000000000000000000000000000000000000000000815291926001600160a01b03169163d5719dc2916134e29160040190815260200190565b602060405180830381865afa1580156134ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135239190614a8b565b90506135388183600001518460200151613f18565b61356e576040517fc334542d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208201516040015161249f90600c9061384d565b5050565b600080613595888888613f5d565b915091506000806000806135b9868b896135b05760006135b2565b8d5b8c8c613918565b93509350935093508c84141580156135d357506000198d14155b15613614576040517fac7411c900000000000000000000000000000000000000000000000000000000815260048101859052602481018e905260440161093d565b8083857f7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7856000548a8d61364957600161364c565b60005b60405161365c9493929190614e17565b60405180910390a486611f4a57837ffe325ca1efe4c5c1062c981c3ee74b781debe4ea9440306a96d2a55759c66c208d8d60405161369b929190614daa565b60405180910390a250505050505050505050505050565b81546001830154600091612a399167ffffffffffffffff600160c01b8304811692868216928282169268010000000000000000808304821693600160801b81048316939190048216911661416b565b600a5460009067ffffffffffffffff9081169083161061372d57600a5467ffffffffffffffff166129d7565b5090565b6000808080467f00000000000000000000000000000000000000000000000000000000000000001461376e57506001925082915081905080612afb565b5050600a5467ffffffffffffffff808216935068010000000000000000820481169250600160801b8204811691600160c01b900416612afb565b6040516001600160f81b031960f889901b1660208201526bffffffffffffffffffffffff19606088901b1660218201527fffffffffffffffff00000000000000000000000000000000000000000000000060c087811b8216603584015286901b16603d82015260458101849052606581018390526085810182905260009060a5016040516020818303038152906040528051906020012090505b979650505050505050565b61385782826136b2565b825467ffffffffffffffff928316600160c01b0277ffffffffffffffffffffffffffffffff000000000000000090911691831691909117178255600190910180544390921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b604080516080810182526000808252602082018190529181018290526060810182905260008061390285614232565b8151602090920191909120969095509350505050565b60008060008060005488101561395a576040517f7d73e6fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663eca067ad6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d19190614a8b565b881115613a0a576040517f925f8bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f86598a56000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a905260448101889052606481018790526001600160a01b03909116906386598a56906084016080604051808303816000875af1158015613a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa79190614ecc565b60008c9055929650909450925090508615801590613ae357507f0000000000000000000000000000000000000000000000000000000000000000155b15613af557613af58985486000613ca5565b95509550955095915050565b805160009067ffffffffffffffff1615801590613b2b5750602082015167ffffffffffffffff1615155b8015613b475750612710826040015167ffffffffffffffff1611155b80156129d75750506020810151905167ffffffffffffffff9182169116111590565b805460009067ffffffffffffffff600160801b8204811691613b9491600160c01b9091041643614cbc565b111592915050565b604080516080810182526000808252602082018190529181018290526060810182905260408051606081018252600080825260208201819052918101829052600080613be787614232565b9092509050633b9aca0060006003613c026202000084614bff565b613c0c9190614bff565b60405190915084907f500000000000000000000000000000000000000000000000000000000000000090613c44908890602001614f02565b60408051601f1981840301815290829052613c63939291602001614f36565b604051602081830303815290604052805190602001208360004811613c89576000613c93565b613c934884614aea565b97509750975050505050509193909250565b327f000000000000000000000000000000000000000000000000000000000000000015613d4b576000606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d319190614a8b565b9050613d3d4882614aea565b613d479084614ad7565b9250505b67ffffffffffffffff821115613d8d576040517f04d5501200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080514260208201526bffffffffffffffffffffffff19606084901b16918101919091526054810186905260748101859052609481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b1660b482015260009060bc0160408051808303601f1901815290829052600154815160208301207f7a88b1070000000000000000000000000000000000000000000000000000000084526001600160a01b0386811660048601526024850191909152919350600092911690637a88b107906044016020604051808303816000875af1158015613e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea49190614a8b565b9050807fff64905f73a67fb594e0f940a8075a860db489ad991e032f48c81123eb52d60b83604051613ed69190614f79565b60405180910390a250505050505050565b6000613ef282613b69565b15806129d75750505467ffffffffffffffff680100000000000000008204811691161090565b6000613f5383613f278461430a565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b9093149392505050565b60408051608081018252600080825260208201819052918101829052606081018290526000613f8d856028614ad7565b90507f0000000000000000000000000000000000000000000000000000000000000000811115614012576040517f4634691b000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000000000000000000000000000000000000000000602482015260440161093d565b60008061401e86614232565b909250905086156141315761404e8888600081811061403f5761403f614e01565b9050013560f81c60f81b614337565b6140a6578787600081811061406557614065614e01565b6040517f6b3333560000000000000000000000000000000000000000000000000000000081529201356001600160f81b03191660048301525060240161093d565b600160ff1b88886000816140bc576140bc614e01565b6001600160f81b0319920135929092161615801591506140dd575060218710155b156141315760006140f2602160018a8c614fac565b6140fb91614fd6565b60008181526008602052604090205490915060ff1661412f5760405162f20c5d60e01b81526004810182905260240161093d565b505b81888860405160200161414693929190614ff4565b60408051601f1981840301815291905280516020909101209890975095505050505050565b60008088881161417c576000614186565b6141868989614cbc565b905060008987116141985760006141a2565b6141a28a88614cbc565b90506127106141b18584614bff565b6141bb9190614aea565b6141c59089614ad7565b975060008682116141d75760006141e1565b6141e18783614cbc565b9050828111156141ee5750815b8089111561422357614200818a614cbc565b985086891115614223578589116142175788614219565b855b9350505050613842565b50949998505050505050505050565b6040805160808101825260008082526020820181905291810182905260608082018390529161425f6143ca565b905060008160000151826020015183604001518460600151886040516020016142df95949392919060c095861b7fffffffffffffffff000000000000000000000000000000000000000000000000908116825294861b8516600882015292851b8416601084015290841b8316601883015290921b16602082015260280190565b604051602081830303815290604052905060288151146143015761430161501c565b94909350915050565b60006129d7826000015183602001518460400151856060015186608001518760a001518860c001516137a8565b60006001600160f81b03198216158061435d57506001600160f81b03198216600160ff1b145b8061439157506001600160f81b031982167f8800000000000000000000000000000000000000000000000000000000000000145b806129d757506001600160f81b031982167f20000000000000000000000000000000000000000000000000000000000000001492915050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600080600080614420613731565b93509350935093508167ffffffffffffffff16421115614451576144448242615032565b67ffffffffffffffff1685525b61445b8142614dd9565b67ffffffffffffffff9081166020870152841643111561448f5761447f8443615032565b67ffffffffffffffff1660408601525b6144998343614dd9565b67ffffffffffffffff1660608601525092949350505050565b6000602082840312156144c457600080fd5b5035919050565b6001600160a01b03811681146132d357600080fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614519576145196144e0565b60405290565b60405160e0810167ffffffffffffffff81118282101715614519576145196144e0565b604051601f8201601f1916810167ffffffffffffffff8111828210171561456b5761456b6144e0565b604052919050565b803567ffffffffffffffff8116811461458b57600080fd5b919050565b6000606082840312156145a257600080fd5b6040516060810181811067ffffffffffffffff821117156145c5576145c56144e0565b6040529050806145d483614573565b81526145e260208401614573565b60208201526145f360408401614573565b60408201525092915050565b600080600083850361010081121561461657600080fd5b8435614621816144cb565b93506080601f198201121561463557600080fd5b506020840191506146498560a08601614590565b90509250925092565b80151581146132d357600080fd5b6000806040838503121561467357600080fd5b823561467e816144cb565b9150602083013561468e81614652565b809150509250929050565b6000602082840312156146ab57600080fd5b8135612a39816144cb565b6000606082840312156146c857600080fd5b612a398383614590565b600080600080600060a086880312156146ea57600080fd5b85359450602086013593506040860135614703816144cb565b94979396509394606081013594506080013592915050565b60008083601f84011261472d57600080fd5b50813567ffffffffffffffff81111561474557600080fd5b60208301915083602082850101111561475d57600080fd5b9250929050565b6000610100828403121561477757600080fd5b50919050565b6000806000806000806000806101c0898b03121561479a57600080fd5b88359750602089013567ffffffffffffffff8111156147b857600080fd5b6147c48b828c0161471b565b9098509650506040890135945060608901356147df816144cb565b93506080890135925060a089013591506147fc8a60c08b01614764565b90509295985092959890939650565b60008060008060006080868803121561482357600080fd5b85359450602086013567ffffffffffffffff81111561484157600080fd5b61484d8882890161471b565b909550935050604086013591506060860135614868816144cb565b809150509295509295909350565b600080600080600080600060c0888a03121561489157600080fd5b87359650602088013567ffffffffffffffff8111156148af57600080fd5b6148bb8a828b0161471b565b9097509550506040880135935060608801356148d6816144cb565b969995985093969295946080840135945060a09093013592915050565b6000806000806000806101a0878903121561490d57600080fd5b86359550602087013594506040870135614926816144cb565b935060608701359250608087013591506149438860a08901614764565b90509295509295509295565b60006080828403121561496157600080fd5b6040516080810181811067ffffffffffffffff82111715614984576149846144e0565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600080602083850312156149c857600080fd5b823567ffffffffffffffff8111156149df57600080fd5b6149eb8582860161471b565b90969095509350505050565b600060208284031215614a0957600080fd5b612a3982614573565b803560ff8116811461458b57600080fd5b60008060008060008060e08789031215614a3c57600080fd5b86359550614a4c60208801614a12565b94506080870188811115614a5f57600080fd5b60408801945035925060a0870135614a76816144cb565b8092505060c087013590509295509295509295565b600060208284031215614a9d57600080fd5b5051919050565b600060208284031215614ab657600080fd5b8151612a39816144cb565b634e487b7160e01b600052601160045260246000fd5b808201808211156129d7576129d7614ac1565b600082614b0757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115614b47578160001904821115614b2d57614b2d614ac1565b80851615614b3a57918102915b93841c9390800290614b11565b509250929050565b600082614b5e575060016129d7565b81614b6b575060006129d7565b8160018114614b815760028114614b8b57614ba7565b60019150506129d7565b60ff841115614b9c57614b9c614ac1565b50506001821b6129d7565b5060208310610133831016604e8410600b8410161715614bca575081810a6129d7565b614bd48383614b0c565b8060001904821115614be857614be8614ac1565b029392505050565b6000612a3960ff841683614b4f565b80820281158282048414176129d7576129d7614ac1565b60006020808385031215614c2957600080fd5b825167ffffffffffffffff80821115614c4157600080fd5b818501915085601f830112614c5557600080fd5b815181811115614c6757614c676144e0565b8060051b9150614c78848301614542565b8181529183018401918481019088841115614c9257600080fd5b938501935b83851015614cb057845182529385019390850190614c97565b98975050505050505050565b818103818111156129d7576129d7614ac1565b600060208284031215614ce157600080fd5b8151612a3981614652565b6000818303610100811215614d0057600080fd5b614d086144f6565b8335815260e0601f1983011215614d1e57600080fd5b614d2661451f565b9150614d3460208501614a12565b82526040840135614d44816144cb565b6020830152614d5560608501614573565b6040830152614d6660808501614573565b606083015260a0840135608083015260c084013560a083015260e084013560c0830152816020820152809250505092915050565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b67ffffffffffffffff818116838216019080821115614dfa57614dfa614ac1565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060e08201905085825284602083015267ffffffffffffffff8085511660408401528060208601511660608401528060408601511660808401528060608601511660a08401525060048310614e7d57634e487b7160e01b600052602160045260246000fd5b8260c083015295945050505050565b60005b83811015614ea7578181015183820152602001614e8f565b50506000910152565b60008251614ec2818460208701614e8c565b9190910192915050565b60008060008060808587031215614ee257600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008183825b6003811015614f27578151835260209283019290910190600101614f08565b50505060608201905092915050565b60008451614f48818460208901614e8c565b6001600160f81b031985169083019081528351614f6c816001840160208801614e8c565b0160010195945050505050565b6020815260008251806020840152614f98816040850160208701614e8c565b601f01601f19169190910160400192915050565b60008085851115614fbc57600080fd5b83861115614fc957600080fd5b5050820193919092039150565b803560208310156129d757600019602084900360031b1b1692915050565b60008451615006818460208901614e8c565b8201838582376000930192835250909392505050565b634e487b7160e01b600052600160045260246000fd5b67ffffffffffffffff828116828216039080821115614dfa57614dfa614ac156fea2646970667358221220c28e6e821fbfe3ca801cc0632161efc2e8d1229b98ec517d709446368191b1cf64736f6c63430008110033",
1630
+ "linkReferences": {},
1631
+ "deployedLinkReferences": {}
1632
+ }