@arbitrum/nitro-contracts 2.0.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 -494
  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 -530
  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 +16 -6
  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 -12
  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 +36 -69
  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 -642
  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 -1327
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1461
  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 -1609
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1743
  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
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/28754c4998b67fc9c9d6d849262cf39e.json"
4
4
  }
@@ -6,17 +6,36 @@
6
6
  {
7
7
  "inputs": [
8
8
  {
9
- "internalType": "enum MachineStatus",
10
- "name": "status",
11
- "type": "uint8"
12
- },
13
- {
14
- "internalType": "bytes32",
15
- "name": "globalStateHash",
16
- "type": "bytes32"
9
+ "components": [
10
+ {
11
+ "components": [
12
+ {
13
+ "internalType": "bytes32[2]",
14
+ "name": "bytes32Vals",
15
+ "type": "bytes32[2]"
16
+ },
17
+ {
18
+ "internalType": "uint64[2]",
19
+ "name": "u64Vals",
20
+ "type": "uint64[2]"
21
+ }
22
+ ],
23
+ "internalType": "struct GlobalState",
24
+ "name": "globalState",
25
+ "type": "tuple"
26
+ },
27
+ {
28
+ "internalType": "enum MachineStatus",
29
+ "name": "machineStatus",
30
+ "type": "uint8"
31
+ }
32
+ ],
33
+ "internalType": "struct ExecutionState",
34
+ "name": "execState",
35
+ "type": "tuple"
17
36
  }
18
37
  ],
19
- "name": "getEndMachineHash",
38
+ "name": "getMachineHash",
20
39
  "outputs": [
21
40
  {
22
41
  "internalType": "bytes32",
@@ -64,6 +83,11 @@
64
83
  "internalType": "contract IBridge",
65
84
  "name": "bridge",
66
85
  "type": "address"
86
+ },
87
+ {
88
+ "internalType": "bytes32",
89
+ "name": "initialWasmModuleRoot",
90
+ "type": "bytes32"
67
91
  }
68
92
  ],
69
93
  "internalType": "struct ExecutionContext",
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/28754c4998b67fc9c9d6d849262cf39e.json"
4
4
  }
@@ -3,8 +3,8 @@
3
3
  "contractName": "OneStepProofEntryLib",
4
4
  "sourceName": "src/osp/IOneStepProofEntry.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220223fd026c9ded55afa397377c4fd1d09617b50854daf739261c2555ea51d443264736f6c63430008090033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220223fd026c9ded55afa397377c4fd1d09617b50854daf739261c2555ea51d443264736f6c63430008090033",
6
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205f2e52c94c0b2525dc3372cd1c53d157c4746beea240be274afe04d49cbe611364736f6c63430008110033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205f2e52c94c0b2525dc3372cd1c53d157c4746beea240be274afe04d49cbe611364736f6c63430008110033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/28754c4998b67fc9c9d6d849262cf39e.json"
4
4
  }
@@ -16,6 +16,11 @@
16
16
  "internalType": "contract IBridge",
17
17
  "name": "bridge",
18
18
  "type": "address"
19
+ },
20
+ {
21
+ "internalType": "bytes32",
22
+ "name": "initialWasmModuleRoot",
23
+ "type": "bytes32"
19
24
  }
20
25
  ],
21
26
  "internalType": "struct ExecutionContext",
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/28754c4998b67fc9c9d6d849262cf39e.json"
4
4
  }
@@ -32,17 +32,36 @@
32
32
  {
33
33
  "inputs": [
34
34
  {
35
- "internalType": "enum MachineStatus",
36
- "name": "status",
37
- "type": "uint8"
38
- },
39
- {
40
- "internalType": "bytes32",
41
- "name": "globalStateHash",
42
- "type": "bytes32"
35
+ "components": [
36
+ {
37
+ "components": [
38
+ {
39
+ "internalType": "bytes32[2]",
40
+ "name": "bytes32Vals",
41
+ "type": "bytes32[2]"
42
+ },
43
+ {
44
+ "internalType": "uint64[2]",
45
+ "name": "u64Vals",
46
+ "type": "uint64[2]"
47
+ }
48
+ ],
49
+ "internalType": "struct GlobalState",
50
+ "name": "globalState",
51
+ "type": "tuple"
52
+ },
53
+ {
54
+ "internalType": "enum MachineStatus",
55
+ "name": "machineStatus",
56
+ "type": "uint8"
57
+ }
58
+ ],
59
+ "internalType": "struct ExecutionState",
60
+ "name": "execState",
61
+ "type": "tuple"
43
62
  }
44
63
  ],
45
- "name": "getEndMachineHash",
64
+ "name": "getMachineHash",
46
65
  "outputs": [
47
66
  {
48
67
  "internalType": "bytes32",
@@ -90,6 +109,11 @@
90
109
  "internalType": "contract IBridge",
91
110
  "name": "bridge",
92
111
  "type": "address"
112
+ },
113
+ {
114
+ "internalType": "bytes32",
115
+ "name": "initialWasmModuleRoot",
116
+ "type": "bytes32"
93
117
  }
94
118
  ],
95
119
  "internalType": "struct ExecutionContext",
@@ -176,8 +200,8 @@
176
200
  "type": "function"
177
201
  }
178
202
  ],
179
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162002f2f38038062002f2f8339810160408190526200003491620000a5565b600080546001600160a01b039586166001600160a01b031991821617909155600180549486169482169490941790935560028054928516928416929092179091556003805491909316911617905562000102565b80516001600160a01b0381168114620000a057600080fd5b919050565b60008060008060808587031215620000bc57600080fd5b620000c78562000088565b9350620000d76020860162000088565b9250620000e76040860162000088565b9150620000f76060860162000088565b905092959194509250565b612e1d80620001126000396000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c806304997be4146100725780631f128bc01461009857806330a5509f146100c35780635d3adcfb146100d65780635f52fd7c146100e957806366e5d9c3146100fc578063d8558b871461010f575b600080fd5b6100856100803660046121c8565b610122565b6040519081526020015b60405180910390f35b6001546100ab906001600160a01b031681565b6040516001600160a01b03909116815260200161008f565b6000546100ab906001600160a01b031681565b6100856100e43660046121ea565b6102c8565b6003546100ab906001600160a01b031681565b6002546100ab906001600160a01b031681565b61008561011d366004612295565b61095a565b60408051600380825260808201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161013d57505060408051808201825260008082526020918201819052825180840190935260048352908201529091508160008151811061019f5761019f6122d7565b60200260200101819052506101b46000610a5b565b816001815181106101c7576101c76122d7565b60200260200101819052506101dc6000610a5b565b816002815181106101ef576101ef6122d7565b6020908102919091018101919091526040805180830182528381528151808301909252808252600092820192909252610226612067565b604080518082018252606080825260006020808401829052845180860186528082018390526000198082528651610180810188528481529283018990529582018190529281018690526080810184905260a0810183905260c081018c905260e081018290526101008101829052610120810191909152610140810193909352610160830189905290916102b881610a8e565b9750505050505050505b92915050565b60006102d2612085565b6102da61213c565b6040805160208101909152606081526040805180820190915260008082526020820152600061030a888883610ccc565b90955090508861031986610a8e565b146103615760405162461bcd60e51b815260206004820152601360248201527209a828690929c8abe848a8c9ea48abe9082a69606b1b60448201526064015b60405180910390fd5b600085516003811115610376576103766122ed565b146103905761038485610a8e565b95505050505050610951565b650800000000006103a28b6001612319565b14156103b5576002855261038485610a8e565b6103c0888883610f28565b90945090506103d0888883610fec565b80925081945050508461016001516103fd8660e0015163ffffffff1686866110c69092919063ffffffff16565b146104395760405162461bcd60e51b815260206004820152600c60248201526b1353d115531154d7d493d3d560a21b6044820152606401610358565b60606104516040518060200160405280606081525090565b60408051602081019091526060815261046b8b8b86611111565b9450925061047a8b8b86610fec565b945091506104898b8b86610fec565b809550819250505060006104bf60408a61012001516104a89190612347565b63ffffffff1685856112109092919063ffffffff16565b905060006104e38a610100015163ffffffff1683856112569092919063ffffffff16565b90508860600151811461052d5760405162461bcd60e51b815260206004820152601260248201527110905117d1955390d51253d394d7d493d3d560721b6044820152606401610358565b8460408b6101200151610540919061236a565b63ffffffff1681518110610556576105566122d7565b6020026020010151965050505050508787829080926105779392919061238d565b975097505060008460e0015163ffffffff1690506001856101200181815161059f91906123b7565b63ffffffff1690525081516000602861ffff8316108015906105c65750603561ffff831611155b806105e65750603661ffff8316108015906105e65750603e61ffff831611155b806105f5575061ffff8216603f145b80610604575061ffff82166040145b1561061b57506001546001600160a01b0316610832565b61ffff821660451480610632575061ffff82166050145b806106605750604661ffff8316108015906106605750610654600960466123df565b61ffff168261ffff1611155b8061068e5750606761ffff83161080159061068e5750610682600260676123df565b61ffff168261ffff1611155b806106ae5750606a61ffff8316108015906106ae5750607861ffff831611155b806106dc5750605161ffff8316108015906106dc57506106d0600960516123df565b61ffff168261ffff1611155b8061070a5750607961ffff83161080159061070a57506106fe600260796123df565b61ffff168261ffff1611155b8061072a5750607c61ffff83161080159061072a5750608a61ffff831611155b80610739575061ffff821660a7145b80610756575061ffff821660ac1480610756575061ffff821660ad145b80610776575060c061ffff831610801590610776575060c461ffff831611155b80610796575060bc61ffff831610801590610796575060bf61ffff831611155b156107ad57506002546001600160a01b0316610832565b61801061ffff8316108015906107c9575061801361ffff831611155b806107eb575061802061ffff8316108015906107eb575061802461ffff831611155b8061080d575061803061ffff83161080159061080d575061803261ffff831611155b1561082457506003546001600160a01b0316610832565b506000546001600160a01b03165b806001600160a01b0316633604366f8e8989888f8f6040518763ffffffff1660e01b81526004016108689695949392919061253e565b60006040518083038186803b15801561088057600080fd5b505afa158015610894573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190612b67565b9097509550600061ffff831661802314806108dc575061ffff8316618024145b15905080156108f7576108f08685896110c6565b6101608901525b60028851600381111561090c5761090c6122ed565b148015610920575061014088015160001914155b1561093d5761092e886112cb565b6109378861134f565b50600088525b61094688610a8e565b985050505050505050505b95945050505050565b60006001836003811115610970576109706122ed565b14156109a457816040516020016109879190612cc1565b6040516020818303038152906040528051906020012090506102c2565b60028360038111156109b8576109b86122ed565b14156109e2576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610987565b60038360038111156109f6576109f66122ed565b1415610a20576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610987565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b6044820152606401610358565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b60008082516003811115610aa457610aa46122ed565b1415610bc2576000610ad3610abc846020015161137f565b610140850151604086015191906000191415611404565b90506000610afe610ae785608001516114f7565b61014086015160a087015191906000191415611404565b9050600082610b10866060015161137f565b60c087015160e0808901516101008a01516101208b01516101408c01516101608d01516040516f26b0b1b434b73290393ab73734b7339d60811b602082015260308101999099526050890197909752607088018a905260908801959095526001600160e01b031992841b831660b088015290831b821660b487015290911b1660b884015260bc83015260dc82015260fc0160408051601f19818403018152919052805160209091012095945050505050565b600182516003811115610bd757610bd76122ed565b1415610c0f578160c00151604051602001610bf29190612cc1565b604051602081830303815290604052805190602001209050919050565b600282516003811115610c2457610c246122ed565b1415610c4e576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610bf2565b600382516003811115610c6357610c636122ed565b1415610c8d576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610bf2565b60405162461bcd60e51b815260206004820152600f60248201526e4241445f4d4143485f53544154555360881b6044820152606401610358565b919050565b610cd4612085565b81600080610ce3878785611590565b9350905060ff8116610cf85760009150610d75565b8060ff1660011415610d0d5760019150610d75565b8060ff1660021415610d225760029150610d75565b8060ff1660031415610d375760039150610d75565b60405162461bcd60e51b8152602060048201526013602482015272554e4b4e4f574e5f4d4143485f53544154555360681b6044820152606401610358565b50610d7e612067565b610d86612067565b60408051808201909152600080825260208201526040805180820190915260608152600060208201526040805180820190915260008082526020820152610dce8b8b896115c6565b97509450610ddd8b8b896116c5565b97509250610dec8b8b896115c6565b97509350610dfb8b8b8961171b565b97509150610e0a8b8b896116c5565b8098508192505050604051806101800160405280876003811115610e3057610e306122ed565b8152602081019690965260408601939093526060850193909352608084015260a0830191909152600060c0830181905260e08301819052610100830181905261012083018190526101408301819052610160909201919091529250610e989050858583611843565b60c08401919091529050610ead85858361185f565b63ffffffff90911660e08401529050610ec785858361185f565b63ffffffff9091166101008401529050610ee285858361185f565b63ffffffff9091166101208401529050610efd858583611843565b6101408401919091529050610f13858583611843565b61016084019190915291959194509092505050565b610f3061213c565b60408051606081018252600080825260208201819052918101829052839190600080600080610f608b8b89611843565b97509550610f6f8b8b896118c3565b97509450610f7e8b8b89611843565b97509350610f8d8b8b89611843565b97509250610f9c8b8b89611843565b97509150610fab8b8b8961185f565b6040805160c081018252988952602089019790975295870194909452506060850191909152608084015263ffffffff1660a083015290969095509350505050565b604080516020810190915260608152816000611009868684611590565b92509050600060ff82166001600160401b0381111561102a5761102a6122c1565b604051908082528060200260200182016040528015611053578160200160208202803683370190505b50905060005b8260ff168160ff1610156110aa57611072888886611843565b838360ff1681518110611087576110876122d7565b6020026020010181965082815250505080806110a290612ce6565b915050611059565b5060405180602001604052808281525093505050935093915050565b600061110784846110d68561193e565b6040518060400160405280601381526020017226b7b23ab6329036b2b935b632903a3932b29d60691b8152506119ba565b90505b9392505050565b6060816000611121868684611590565b9250905060ff81166001600160401b03811115611140576111406122c1565b60405190808252806020026020018201604052801561118557816020015b604080518082019091526000808252602082015281526020019060019003908161115e5790505b50925060005b8160ff16811015611206576000806111a4898987611acc565b955091506111b3898987611b25565b809650819250505060405180604001604052808361ffff168152602001828152508684815181106111e6576111e66122d7565b6020026020010181905250505080806111fe90612d06565b91505061118b565b5050935093915050565b6000611107848461122085611b7a565b6040518060400160405280601881526020017724b739ba393ab1ba34b7b71036b2b935b632903a3932b29d60411b8152506119ba565b60405168233ab731ba34b7b71d60b91b602082015260298101829052600090819060490160405160208183030381529060405280519060200120905061095185858360405180604001604052806015815260200174233ab731ba34b7b71036b2b935b632903a3932b29d60591b8152506119ba565b60408101515160a0820151516000198114806112e8575060001982145b156112f557505060029052565b61130283608001516114f7565b60a08401515260208301516113169061137f565b60408401515260808301516113319082602082015260609052565b50602091820151808301919091526040805192830190526060825252565b60006113638283610140015160001c611d19565b61136f57506000919050565b5060001961014090910152600190565b60208101518151515160005b818110156113fd5783516113a8906113a39083611d5b565b611d93565b6040516b2b30b63ab29039ba30b1b59d60a11b6020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806113f590612d06565b91505061138b565b5050919050565b60006000198314156114545760405162461bcd60e51b81526020600482015260196024820152784d554c5449535441434b5f4e4f535441434b5f41435449564560381b6044820152606401610358565b81156114dd57835160001914156114a75760405162461bcd60e51b815260206004820152601760248201527626aaa62a24a9aa20a1a5afa727a9aa20a1a5afa6a0a4a760491b6044820152606401610358565b83516020808601516040516114c0939287929101612d21565b60405160208183030381529060405280519060200120905061110a565b83516020808601516040516114c093879390929101612d21565b602081015160005b82515181101561158a5761152f83600001518281518110611522576115226122d7565b6020026020010151611db0565b6040517129ba30b1b590333930b6b29039ba30b1b59d60711b6020820152603281019190915260528101839052607201604051602081830303815290604052805190602001209150808061158290612d06565b9150506114ff565b50919050565b6000818484828181106115a5576115a56122d7565b919091013560f81c92508190506115bb81612d06565b915050935093915050565b6115ce612067565b8160006115dc868684611843565b9250905060006115ed878785611b25565b935090506000816001600160401b0381111561160b5761160b6122c1565b60405190808252806020026020018201604052801561165057816020015b60408051808201909152600080825260208201528152602001906001900390816116295790505b50905060005b815181101561169e5761166a898987611e20565b83838151811061167c5761167c6122d7565b602002602001018197508290525050808061169690612d06565b915050611656565b50604080516060810182529081019182529081526020810192909252509590945092505050565b60408051808201909152600080825260208201528160006116e7868684611843565b9250905060006116f8878785611843565b604080518082019091529384526020840191909152919791965090945050505050565b60408051808201909152606081526000602082015281600061173e868684611843565b925090506060868684818110611756576117566122d7565b909101356001600160f81b0319161590506117de578261177581612d06565b604080516001808252818301909252919550909150816020015b611797612194565b81526020019060019003908161178f5790505090506117b7878785611f1c565b826000815181106117ca576117ca6122d7565b602002602001018195508290525050611822565b826117e881612d06565b6040805160008082526020820190925291955090915061181e565b61180b612194565b8152602001906001900390816118035790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181611852868684611b25565b9097909650945050505050565b600081815b60048110156118ba5760088363ffffffff16901b925085858381811061188c5761188c6122d7565b919091013560f81c939093179250816118a481612d06565b92505080806118b290612d06565b915050611864565b50935093915050565b604080516060810182526000808252602082018190529181019190915281600080806118f0888886611fb5565b945092506118ff888886611fb5565b9450915061190e888886611843565b604080516060810182526001600160401b0396871681529490951660208501529383015250969095509350505050565b600081600001516119528360200151612013565b6040808501516060860151608087015160a08801519351610bf2969594906020016626b7b23ab6329d60c91b81526007810196909652602786019490945260478501929092526067840152608783015260e01b6001600160e01b03191660a782015260ab0190565b8160005b855151811015611a835760018516611a1f578282876000015183815181106119e8576119e86122d7565b6020026020010151604051602001611a0293929190612d4d565b604051602081830303815290604052805190602001209150611a6a565b8286600001518281518110611a3657611a366122d7565b602002602001015183604051602001611a5193929190612d4d565b6040516020818303038152906040528051906020012091505b60019490941c9380611a7b81612d06565b9150506119be565b508315611ac45760405162461bcd60e51b815260206004820152600f60248201526e141493d3d197d513d3d7d4d213d495608a1b6044820152606401610358565b949350505050565b600081815b60028110156118ba5760088361ffff16901b9250858583818110611af757611af76122d7565b919091013560f81c93909317925081611b0f81612d06565b9250508080611b1d90612d06565b915050611ad1565b600081815b60208110156118ba57600883901b9250858583818110611b4c57611b4c6122d7565b919091013560f81c93909317925081611b6481612d06565b9250508080611b7290612d06565b915050611b2a565b60008082516022611b8b9190612d93565b611b9690600e612319565b6001600160401b03811115611bad57611bad6122c1565b6040519080825280601f01601f191660200182016040528015611bd7576020820181803683370190505b5090506c24b739ba393ab1ba34b7b7399d60991b60208201526000600d9050835160f81b828281518110611c0d57611c0d6122d7565b60200101906001600160f81b031916908160001a90535080611c2e81612d06565b91505060005b8451811015611d09576000858281518110611c5157611c516122d7565b602002602001015190506008816000015161ffff16901c60f81b848481518110611c7d57611c7d6122d7565b60200101906001600160f81b031916908160001a905350805160f81b84611ca5856001612319565b81518110611cb557611cb56122d7565b60200101906001600160f81b031916908160001a905350611cd7600284612319565b6020808301518683018201819052919450611cf29085612319565b935050508080611d0190612d06565b915050611c34565b5050805160209091012092915050565b6000606082901c15611d2d575060006102c2565b5063ffffffff818116610120840152602082901c811661010084015260409190911c1660e090910152600190565b60408051808201909152600080825260208201528251805183908110611d8357611d836122d7565b6020026020010151905092915050565b600081600001518260200151604051602001610bf2929190612db2565b6000611dbf8260000151611d93565b602080840151604080860151606087015191516b29ba30b1b590333930b6b29d60a11b94810194909452602c840194909452604c8301919091526001600160e01b031960e093841b8116606c840152921b9091166070820152607401610bf2565b6040805180820190915260008082526020820152816000858583818110611e4957611e496122d7565b919091013560f81c9150829050611e5f81612d06565b925050611e6a600690565b6006811115611e7b57611e7b6122ed565b60ff168160ff161115611ec15760405162461bcd60e51b815260206004820152600e60248201526d4241445f56414c55455f5459504560901b6044820152606401610358565b6000611ece878785611b25565b809450819250505060405180604001604052808360ff166006811115611ef657611ef66122ed565b6006811115611f0757611f076122ed565b81526020018281525093505050935093915050565b611f24612194565b81611f3f604080518082019091526000808252602082015290565b6000806000611f4f898987611e20565b95509350611f5e898987611843565b95509250611f6d89898761185f565b95509150611f7c89898761185f565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b600081815b60088110156118ba576008836001600160401b0316901b9250858583818110611fe557611fe56122d7565b919091013560f81c93909317925081611ffd81612d06565b925050808061200b90612d06565b915050611fba565b805160208083015160408085015190516626b2b6b7b93c9d60c91b938101939093526001600160c01b031960c094851b811660278501529190931b16602f8201526037810191909152600090605701610bf2565b60408051606080820183529181019182529081526000602082015290565b60408051610180810190915280600081526020016120a1612067565b81526020016120c0604080518082019091526000808252602082015290565b81526020016120cd612067565b81526020016120ed60408051808201909152606081526000602082015290565b815260200161210c604080518082019091526000808252602082015290565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6040805160c081019091526000815260208101612172604080516060810182526000808252602082018190529181019190915290565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160c08101825260006080820181815260a08301829052825260208201819052918101829052606081019190915290565b600080604083850312156121db57600080fd5b50508035926020909101359150565b600080600080600085870360a081121561220357600080fd5b604081121561221157600080fd5b50859450604086013593506060860135925060808601356001600160401b038082111561223d57600080fd5b818801915088601f83011261225157600080fd5b81358181111561226057600080fd5b89602082850101111561227257600080fd5b9699959850939650602001949392505050565b6004811061229257600080fd5b50565b600080604083850312156122a857600080fd5b82356122b381612285565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232c5761232c612303565b500190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061235e5761235e612331565b92169190910492915050565b600063ffffffff8084168061238157612381612331565b92169190910692915050565b6000808585111561239d57600080fd5b838611156123aa57600080fd5b5050820193919092039150565b600063ffffffff8083168185168083038211156123d6576123d6612303565b01949350505050565b600061ffff8083168185168083038211156123d6576123d6612303565b6004811061240c5761240c6122ed565b9052565b805160078110612422576124226122ed565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b8084101561247f5761246b828651612410565b938201936001939093019290850190612458565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b828110156124fe5784516124ca858251612410565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a0909301926001016124b5565b509687015197909601969096525093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8635815260006101c060208901356001600160a01b03811680821461256257600080fd5b806020860152505080604084015261257d81840189516123fc565b6020880151816101e085015261259761038085018261242f565b91505060408801516125b761020085018280518252602090810151910152565b5060608801516101bf1980858403016102408601526125d6838361242f565b925060808a015191508085840301610260860152506125f58282612493565b91505060a088015161261561028085018280518252602090810151910152565b5060c08801516102c084015260e088015163ffffffff81166102e08501525061010088015163ffffffff81166103008501525061012088015163ffffffff811661032085015250610140880151610340840152610160808901516103608501526126e160608501898051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b6126fb81850188805161ffff168252602090810151910152565b508281036101a0840152612710818587612515565b9998505050505050505050565b604080519081016001600160401b038111828210171561273f5761273f6122c1565b60405290565b604051602081016001600160401b038111828210171561273f5761273f6122c1565b604051608081016001600160401b038111828210171561273f5761273f6122c1565b60405160c081016001600160401b038111828210171561273f5761273f6122c1565b604051606081016001600160401b038111828210171561273f5761273f6122c1565b60405161018081016001600160401b038111828210171561273f5761273f6122c1565b604051601f8201601f191681016001600160401b0381118282101715612818576128186122c1565b604052919050565b8051610cc781612285565b60006001600160401b03821115612844576128446122c1565b5060051b60200190565b60006040828403121561286057600080fd5b61286861271d565b905081516007811061287957600080fd5b808252506020820151602082015292915050565b600060408083850312156128a057600080fd5b6128a861271d565b915082516001600160401b03808211156128c157600080fd5b818501915060208083880312156128d757600080fd5b6128df612745565b8351838111156128ee57600080fd5b80850194505087601f85011261290357600080fd5b835192506129186129138461282b565b6127f0565b83815260069390931b8401820192828101908985111561293757600080fd5b948301945b8486101561295d5761294e8a8761284e565b8252948601949083019061293c565b8252508552948501519484019490945250909392505050565b60006040828403121561298857600080fd5b61299061271d565b9050815181526020820151602082015292915050565b805163ffffffff81168114610cc757600080fd5b600060408083850312156129cd57600080fd5b6129d561271d565b915082516001600160401b038111156129ed57600080fd5b8301601f810185136129fe57600080fd5b80516020612a0e6129138361282b565b82815260a09283028401820192828201919089851115612a2d57600080fd5b948301945b84861015612a965780868b031215612a4a5760008081fd5b612a52612767565b612a5c8b8861284e565b815287870151858201526060612a738189016129a6565b89830152612a83608089016129a6565b9082015283529485019491830191612a32565b50808752505080860151818601525050505092915050565b80516001600160401b0381168114610cc757600080fd5b6000818303610100811215612ad957600080fd5b612ae1612789565b8351815291506060601f1982011215612af957600080fd5b50612b026127ab565b612b0e60208401612aae565b8152612b1c60408401612aae565b602082015260608301516040820152806020830152506080820151604082015260a0820151606082015260c08201516080820152612b5c60e083016129a6565b60a082015292915050565b600080610120808486031215612b7c57600080fd5b83516001600160401b0380821115612b9357600080fd5b908501906101c08288031215612ba857600080fd5b612bb06127cd565b612bb983612820565b8152602083015182811115612bcd57600080fd5b612bd98982860161288d565b602083015250612bec8860408501612976565b6040820152608083015182811115612c0357600080fd5b612c0f8982860161288d565b60608301525060a083015182811115612c2757600080fd5b612c33898286016129ba565b608083015250612c468860c08501612976565b60a082015261010091508183015160c0820152612c648484016129a6565b60e0820152610140612c778185016129a6565b838301526101609250612c8b8385016129a6565b8583015261018084015181830152506101a08301518282015280955050505050612cb88460208501612ac5565b90509250929050565b7026b0b1b434b732903334b734b9b432b21d60791b8152601181019190915260310190565b600060ff821660ff811415612cfd57612cfd612303565b60010192915050565b6000600019821415612d1a57612d1a612303565b5060010190565b6a36bab63a34b9ba30b1b59d60a91b8152600b810193909352602b830191909152604b820152606b0190565b6000845160005b81811015612d6e5760208188018101518583015201612d54565b81811115612d7d576000828501525b5091909101928352506020820152604001919050565b6000816000190483118215151615612dad57612dad612303565b500290565b652b30b63ab29d60d11b8152600060078410612dd057612dd06122ed565b5060f89290921b600683015260078201526027019056fea26469706673582212206630cc3ca936424a379d3ba5328e6633b67f26f2f4c58f0334dbe3c122002ad364736f6c63430008090033",
180
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061006d5760003560e01c806304997be4146100725780631f128bc01461009857806330a5509f146100c35780635d3adcfb146100d65780635f52fd7c146100e957806366e5d9c3146100fc578063d8558b871461010f575b600080fd5b6100856100803660046121c8565b610122565b6040519081526020015b60405180910390f35b6001546100ab906001600160a01b031681565b6040516001600160a01b03909116815260200161008f565b6000546100ab906001600160a01b031681565b6100856100e43660046121ea565b6102c8565b6003546100ab906001600160a01b031681565b6002546100ab906001600160a01b031681565b61008561011d366004612295565b61095a565b60408051600380825260808201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161013d57505060408051808201825260008082526020918201819052825180840190935260048352908201529091508160008151811061019f5761019f6122d7565b60200260200101819052506101b46000610a5b565b816001815181106101c7576101c76122d7565b60200260200101819052506101dc6000610a5b565b816002815181106101ef576101ef6122d7565b6020908102919091018101919091526040805180830182528381528151808301909252808252600092820192909252610226612067565b604080518082018252606080825260006020808401829052845180860186528082018390526000198082528651610180810188528481529283018990529582018190529281018690526080810184905260a0810183905260c081018c905260e081018290526101008101829052610120810191909152610140810193909352610160830189905290916102b881610a8e565b9750505050505050505b92915050565b60006102d2612085565b6102da61213c565b6040805160208101909152606081526040805180820190915260008082526020820152600061030a888883610ccc565b90955090508861031986610a8e565b146103615760405162461bcd60e51b815260206004820152601360248201527209a828690929c8abe848a8c9ea48abe9082a69606b1b60448201526064015b60405180910390fd5b600085516003811115610376576103766122ed565b146103905761038485610a8e565b95505050505050610951565b650800000000006103a28b6001612319565b14156103b5576002855261038485610a8e565b6103c0888883610f28565b90945090506103d0888883610fec565b80925081945050508461016001516103fd8660e0015163ffffffff1686866110c69092919063ffffffff16565b146104395760405162461bcd60e51b815260206004820152600c60248201526b1353d115531154d7d493d3d560a21b6044820152606401610358565b60606104516040518060200160405280606081525090565b60408051602081019091526060815261046b8b8b86611111565b9450925061047a8b8b86610fec565b945091506104898b8b86610fec565b809550819250505060006104bf60408a61012001516104a89190612347565b63ffffffff1685856112109092919063ffffffff16565b905060006104e38a610100015163ffffffff1683856112569092919063ffffffff16565b90508860600151811461052d5760405162461bcd60e51b815260206004820152601260248201527110905117d1955390d51253d394d7d493d3d560721b6044820152606401610358565b8460408b6101200151610540919061236a565b63ffffffff1681518110610556576105566122d7565b6020026020010151965050505050508787829080926105779392919061238d565b975097505060008460e0015163ffffffff1690506001856101200181815161059f91906123b7565b63ffffffff1690525081516000602861ffff8316108015906105c65750603561ffff831611155b806105e65750603661ffff8316108015906105e65750603e61ffff831611155b806105f5575061ffff8216603f145b80610604575061ffff82166040145b1561061b57506001546001600160a01b0316610832565b61ffff821660451480610632575061ffff82166050145b806106605750604661ffff8316108015906106605750610654600960466123df565b61ffff168261ffff1611155b8061068e5750606761ffff83161080159061068e5750610682600260676123df565b61ffff168261ffff1611155b806106ae5750606a61ffff8316108015906106ae5750607861ffff831611155b806106dc5750605161ffff8316108015906106dc57506106d0600960516123df565b61ffff168261ffff1611155b8061070a5750607961ffff83161080159061070a57506106fe600260796123df565b61ffff168261ffff1611155b8061072a5750607c61ffff83161080159061072a5750608a61ffff831611155b80610739575061ffff821660a7145b80610756575061ffff821660ac1480610756575061ffff821660ad145b80610776575060c061ffff831610801590610776575060c461ffff831611155b80610796575060bc61ffff831610801590610796575060bf61ffff831611155b156107ad57506002546001600160a01b0316610832565b61801061ffff8316108015906107c9575061801361ffff831611155b806107eb575061802061ffff8316108015906107eb575061802461ffff831611155b8061080d575061803061ffff83161080159061080d575061803261ffff831611155b1561082457506003546001600160a01b0316610832565b506000546001600160a01b03165b806001600160a01b0316633604366f8e8989888f8f6040518763ffffffff1660e01b81526004016108689695949392919061253e565b60006040518083038186803b15801561088057600080fd5b505afa158015610894573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190612b67565b9097509550600061ffff831661802314806108dc575061ffff8316618024145b15905080156108f7576108f08685896110c6565b6101608901525b60028851600381111561090c5761090c6122ed565b148015610920575061014088015160001914155b1561093d5761092e886112cb565b6109378861134f565b50600088525b61094688610a8e565b985050505050505050505b95945050505050565b60006001836003811115610970576109706122ed565b14156109a457816040516020016109879190612cc1565b6040516020818303038152906040528051906020012090506102c2565b60028360038111156109b8576109b86122ed565b14156109e2576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610987565b60038360038111156109f6576109f66122ed565b1415610a20576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610987565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b6044820152606401610358565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b60008082516003811115610aa457610aa46122ed565b1415610bc2576000610ad3610abc846020015161137f565b610140850151604086015191906000191415611404565b90506000610afe610ae785608001516114f7565b61014086015160a087015191906000191415611404565b9050600082610b10866060015161137f565b60c087015160e0808901516101008a01516101208b01516101408c01516101608d01516040516f26b0b1b434b73290393ab73734b7339d60811b602082015260308101999099526050890197909752607088018a905260908801959095526001600160e01b031992841b831660b088015290831b821660b487015290911b1660b884015260bc83015260dc82015260fc0160408051601f19818403018152919052805160209091012095945050505050565b600182516003811115610bd757610bd76122ed565b1415610c0f578160c00151604051602001610bf29190612cc1565b604051602081830303815290604052805190602001209050919050565b600282516003811115610c2457610c246122ed565b1415610c4e576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610bf2565b600382516003811115610c6357610c636122ed565b1415610c8d576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610bf2565b60405162461bcd60e51b815260206004820152600f60248201526e4241445f4d4143485f53544154555360881b6044820152606401610358565b919050565b610cd4612085565b81600080610ce3878785611590565b9350905060ff8116610cf85760009150610d75565b8060ff1660011415610d0d5760019150610d75565b8060ff1660021415610d225760029150610d75565b8060ff1660031415610d375760039150610d75565b60405162461bcd60e51b8152602060048201526013602482015272554e4b4e4f574e5f4d4143485f53544154555360681b6044820152606401610358565b50610d7e612067565b610d86612067565b60408051808201909152600080825260208201526040805180820190915260608152600060208201526040805180820190915260008082526020820152610dce8b8b896115c6565b97509450610ddd8b8b896116c5565b97509250610dec8b8b896115c6565b97509350610dfb8b8b8961171b565b97509150610e0a8b8b896116c5565b8098508192505050604051806101800160405280876003811115610e3057610e306122ed565b8152602081019690965260408601939093526060850193909352608084015260a0830191909152600060c0830181905260e08301819052610100830181905261012083018190526101408301819052610160909201919091529250610e989050858583611843565b60c08401919091529050610ead85858361185f565b63ffffffff90911660e08401529050610ec785858361185f565b63ffffffff9091166101008401529050610ee285858361185f565b63ffffffff9091166101208401529050610efd858583611843565b6101408401919091529050610f13858583611843565b61016084019190915291959194509092505050565b610f3061213c565b60408051606081018252600080825260208201819052918101829052839190600080600080610f608b8b89611843565b97509550610f6f8b8b896118c3565b97509450610f7e8b8b89611843565b97509350610f8d8b8b89611843565b97509250610f9c8b8b89611843565b97509150610fab8b8b8961185f565b6040805160c081018252988952602089019790975295870194909452506060850191909152608084015263ffffffff1660a083015290969095509350505050565b604080516020810190915260608152816000611009868684611590565b92509050600060ff82166001600160401b0381111561102a5761102a6122c1565b604051908082528060200260200182016040528015611053578160200160208202803683370190505b50905060005b8260ff168160ff1610156110aa57611072888886611843565b838360ff1681518110611087576110876122d7565b6020026020010181965082815250505080806110a290612ce6565b915050611059565b5060405180602001604052808281525093505050935093915050565b600061110784846110d68561193e565b6040518060400160405280601381526020017226b7b23ab6329036b2b935b632903a3932b29d60691b8152506119ba565b90505b9392505050565b6060816000611121868684611590565b9250905060ff81166001600160401b03811115611140576111406122c1565b60405190808252806020026020018201604052801561118557816020015b604080518082019091526000808252602082015281526020019060019003908161115e5790505b50925060005b8160ff16811015611206576000806111a4898987611acc565b955091506111b3898987611b25565b809650819250505060405180604001604052808361ffff168152602001828152508684815181106111e6576111e66122d7565b6020026020010181905250505080806111fe90612d06565b91505061118b565b5050935093915050565b6000611107848461122085611b7a565b6040518060400160405280601881526020017724b739ba393ab1ba34b7b71036b2b935b632903a3932b29d60411b8152506119ba565b60405168233ab731ba34b7b71d60b91b602082015260298101829052600090819060490160405160208183030381529060405280519060200120905061095185858360405180604001604052806015815260200174233ab731ba34b7b71036b2b935b632903a3932b29d60591b8152506119ba565b60408101515160a0820151516000198114806112e8575060001982145b156112f557505060029052565b61130283608001516114f7565b60a08401515260208301516113169061137f565b60408401515260808301516113319082602082015260609052565b50602091820151808301919091526040805192830190526060825252565b60006113638283610140015160001c611d19565b61136f57506000919050565b5060001961014090910152600190565b60208101518151515160005b818110156113fd5783516113a8906113a39083611d5b565b611d93565b6040516b2b30b63ab29039ba30b1b59d60a11b6020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806113f590612d06565b91505061138b565b5050919050565b60006000198314156114545760405162461bcd60e51b81526020600482015260196024820152784d554c5449535441434b5f4e4f535441434b5f41435449564560381b6044820152606401610358565b81156114dd57835160001914156114a75760405162461bcd60e51b815260206004820152601760248201527626aaa62a24a9aa20a1a5afa727a9aa20a1a5afa6a0a4a760491b6044820152606401610358565b83516020808601516040516114c0939287929101612d21565b60405160208183030381529060405280519060200120905061110a565b83516020808601516040516114c093879390929101612d21565b602081015160005b82515181101561158a5761152f83600001518281518110611522576115226122d7565b6020026020010151611db0565b6040517129ba30b1b590333930b6b29039ba30b1b59d60711b6020820152603281019190915260528101839052607201604051602081830303815290604052805190602001209150808061158290612d06565b9150506114ff565b50919050565b6000818484828181106115a5576115a56122d7565b919091013560f81c92508190506115bb81612d06565b915050935093915050565b6115ce612067565b8160006115dc868684611843565b9250905060006115ed878785611b25565b935090506000816001600160401b0381111561160b5761160b6122c1565b60405190808252806020026020018201604052801561165057816020015b60408051808201909152600080825260208201528152602001906001900390816116295790505b50905060005b815181101561169e5761166a898987611e20565b83838151811061167c5761167c6122d7565b602002602001018197508290525050808061169690612d06565b915050611656565b50604080516060810182529081019182529081526020810192909252509590945092505050565b60408051808201909152600080825260208201528160006116e7868684611843565b9250905060006116f8878785611843565b604080518082019091529384526020840191909152919791965090945050505050565b60408051808201909152606081526000602082015281600061173e868684611843565b925090506060868684818110611756576117566122d7565b909101356001600160f81b0319161590506117de578261177581612d06565b604080516001808252818301909252919550909150816020015b611797612194565b81526020019060019003908161178f5790505090506117b7878785611f1c565b826000815181106117ca576117ca6122d7565b602002602001018195508290525050611822565b826117e881612d06565b6040805160008082526020820190925291955090915061181e565b61180b612194565b8152602001906001900390816118035790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181611852868684611b25565b9097909650945050505050565b600081815b60048110156118ba5760088363ffffffff16901b925085858381811061188c5761188c6122d7565b919091013560f81c939093179250816118a481612d06565b92505080806118b290612d06565b915050611864565b50935093915050565b604080516060810182526000808252602082018190529181019190915281600080806118f0888886611fb5565b945092506118ff888886611fb5565b9450915061190e888886611843565b604080516060810182526001600160401b0396871681529490951660208501529383015250969095509350505050565b600081600001516119528360200151612013565b6040808501516060860151608087015160a08801519351610bf2969594906020016626b7b23ab6329d60c91b81526007810196909652602786019490945260478501929092526067840152608783015260e01b6001600160e01b03191660a782015260ab0190565b8160005b855151811015611a835760018516611a1f578282876000015183815181106119e8576119e86122d7565b6020026020010151604051602001611a0293929190612d4d565b604051602081830303815290604052805190602001209150611a6a565b8286600001518281518110611a3657611a366122d7565b602002602001015183604051602001611a5193929190612d4d565b6040516020818303038152906040528051906020012091505b60019490941c9380611a7b81612d06565b9150506119be565b508315611ac45760405162461bcd60e51b815260206004820152600f60248201526e141493d3d197d513d3d7d4d213d495608a1b6044820152606401610358565b949350505050565b600081815b60028110156118ba5760088361ffff16901b9250858583818110611af757611af76122d7565b919091013560f81c93909317925081611b0f81612d06565b9250508080611b1d90612d06565b915050611ad1565b600081815b60208110156118ba57600883901b9250858583818110611b4c57611b4c6122d7565b919091013560f81c93909317925081611b6481612d06565b9250508080611b7290612d06565b915050611b2a565b60008082516022611b8b9190612d93565b611b9690600e612319565b6001600160401b03811115611bad57611bad6122c1565b6040519080825280601f01601f191660200182016040528015611bd7576020820181803683370190505b5090506c24b739ba393ab1ba34b7b7399d60991b60208201526000600d9050835160f81b828281518110611c0d57611c0d6122d7565b60200101906001600160f81b031916908160001a90535080611c2e81612d06565b91505060005b8451811015611d09576000858281518110611c5157611c516122d7565b602002602001015190506008816000015161ffff16901c60f81b848481518110611c7d57611c7d6122d7565b60200101906001600160f81b031916908160001a905350805160f81b84611ca5856001612319565b81518110611cb557611cb56122d7565b60200101906001600160f81b031916908160001a905350611cd7600284612319565b6020808301518683018201819052919450611cf29085612319565b935050508080611d0190612d06565b915050611c34565b5050805160209091012092915050565b6000606082901c15611d2d575060006102c2565b5063ffffffff818116610120840152602082901c811661010084015260409190911c1660e090910152600190565b60408051808201909152600080825260208201528251805183908110611d8357611d836122d7565b6020026020010151905092915050565b600081600001518260200151604051602001610bf2929190612db2565b6000611dbf8260000151611d93565b602080840151604080860151606087015191516b29ba30b1b590333930b6b29d60a11b94810194909452602c840194909452604c8301919091526001600160e01b031960e093841b8116606c840152921b9091166070820152607401610bf2565b6040805180820190915260008082526020820152816000858583818110611e4957611e496122d7565b919091013560f81c9150829050611e5f81612d06565b925050611e6a600690565b6006811115611e7b57611e7b6122ed565b60ff168160ff161115611ec15760405162461bcd60e51b815260206004820152600e60248201526d4241445f56414c55455f5459504560901b6044820152606401610358565b6000611ece878785611b25565b809450819250505060405180604001604052808360ff166006811115611ef657611ef66122ed565b6006811115611f0757611f076122ed565b81526020018281525093505050935093915050565b611f24612194565b81611f3f604080518082019091526000808252602082015290565b6000806000611f4f898987611e20565b95509350611f5e898987611843565b95509250611f6d89898761185f565b95509150611f7c89898761185f565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b600081815b60088110156118ba576008836001600160401b0316901b9250858583818110611fe557611fe56122d7565b919091013560f81c93909317925081611ffd81612d06565b925050808061200b90612d06565b915050611fba565b805160208083015160408085015190516626b2b6b7b93c9d60c91b938101939093526001600160c01b031960c094851b811660278501529190931b16602f8201526037810191909152600090605701610bf2565b60408051606080820183529181019182529081526000602082015290565b60408051610180810190915280600081526020016120a1612067565b81526020016120c0604080518082019091526000808252602082015290565b81526020016120cd612067565b81526020016120ed60408051808201909152606081526000602082015290565b815260200161210c604080518082019091526000808252602082015290565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6040805160c081019091526000815260208101612172604080516060810182526000808252602082018190529181019190915290565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160c08101825260006080820181815260a08301829052825260208201819052918101829052606081019190915290565b600080604083850312156121db57600080fd5b50508035926020909101359150565b600080600080600085870360a081121561220357600080fd5b604081121561221157600080fd5b50859450604086013593506060860135925060808601356001600160401b038082111561223d57600080fd5b818801915088601f83011261225157600080fd5b81358181111561226057600080fd5b89602082850101111561227257600080fd5b9699959850939650602001949392505050565b6004811061229257600080fd5b50565b600080604083850312156122a857600080fd5b82356122b381612285565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232c5761232c612303565b500190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061235e5761235e612331565b92169190910492915050565b600063ffffffff8084168061238157612381612331565b92169190910692915050565b6000808585111561239d57600080fd5b838611156123aa57600080fd5b5050820193919092039150565b600063ffffffff8083168185168083038211156123d6576123d6612303565b01949350505050565b600061ffff8083168185168083038211156123d6576123d6612303565b6004811061240c5761240c6122ed565b9052565b805160078110612422576124226122ed565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b8084101561247f5761246b828651612410565b938201936001939093019290850190612458565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b828110156124fe5784516124ca858251612410565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a0909301926001016124b5565b509687015197909601969096525093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8635815260006101c060208901356001600160a01b03811680821461256257600080fd5b806020860152505080604084015261257d81840189516123fc565b6020880151816101e085015261259761038085018261242f565b91505060408801516125b761020085018280518252602090810151910152565b5060608801516101bf1980858403016102408601526125d6838361242f565b925060808a015191508085840301610260860152506125f58282612493565b91505060a088015161261561028085018280518252602090810151910152565b5060c08801516102c084015260e088015163ffffffff81166102e08501525061010088015163ffffffff81166103008501525061012088015163ffffffff811661032085015250610140880151610340840152610160808901516103608501526126e160608501898051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b6126fb81850188805161ffff168252602090810151910152565b508281036101a0840152612710818587612515565b9998505050505050505050565b604080519081016001600160401b038111828210171561273f5761273f6122c1565b60405290565b604051602081016001600160401b038111828210171561273f5761273f6122c1565b604051608081016001600160401b038111828210171561273f5761273f6122c1565b60405160c081016001600160401b038111828210171561273f5761273f6122c1565b604051606081016001600160401b038111828210171561273f5761273f6122c1565b60405161018081016001600160401b038111828210171561273f5761273f6122c1565b604051601f8201601f191681016001600160401b0381118282101715612818576128186122c1565b604052919050565b8051610cc781612285565b60006001600160401b03821115612844576128446122c1565b5060051b60200190565b60006040828403121561286057600080fd5b61286861271d565b905081516007811061287957600080fd5b808252506020820151602082015292915050565b600060408083850312156128a057600080fd5b6128a861271d565b915082516001600160401b03808211156128c157600080fd5b818501915060208083880312156128d757600080fd5b6128df612745565b8351838111156128ee57600080fd5b80850194505087601f85011261290357600080fd5b835192506129186129138461282b565b6127f0565b83815260069390931b8401820192828101908985111561293757600080fd5b948301945b8486101561295d5761294e8a8761284e565b8252948601949083019061293c565b8252508552948501519484019490945250909392505050565b60006040828403121561298857600080fd5b61299061271d565b9050815181526020820151602082015292915050565b805163ffffffff81168114610cc757600080fd5b600060408083850312156129cd57600080fd5b6129d561271d565b915082516001600160401b038111156129ed57600080fd5b8301601f810185136129fe57600080fd5b80516020612a0e6129138361282b565b82815260a09283028401820192828201919089851115612a2d57600080fd5b948301945b84861015612a965780868b031215612a4a5760008081fd5b612a52612767565b612a5c8b8861284e565b815287870151858201526060612a738189016129a6565b89830152612a83608089016129a6565b9082015283529485019491830191612a32565b50808752505080860151818601525050505092915050565b80516001600160401b0381168114610cc757600080fd5b6000818303610100811215612ad957600080fd5b612ae1612789565b8351815291506060601f1982011215612af957600080fd5b50612b026127ab565b612b0e60208401612aae565b8152612b1c60408401612aae565b602082015260608301516040820152806020830152506080820151604082015260a0820151606082015260c08201516080820152612b5c60e083016129a6565b60a082015292915050565b600080610120808486031215612b7c57600080fd5b83516001600160401b0380821115612b9357600080fd5b908501906101c08288031215612ba857600080fd5b612bb06127cd565b612bb983612820565b8152602083015182811115612bcd57600080fd5b612bd98982860161288d565b602083015250612bec8860408501612976565b6040820152608083015182811115612c0357600080fd5b612c0f8982860161288d565b60608301525060a083015182811115612c2757600080fd5b612c33898286016129ba565b608083015250612c468860c08501612976565b60a082015261010091508183015160c0820152612c648484016129a6565b60e0820152610140612c778185016129a6565b838301526101609250612c8b8385016129a6565b8583015261018084015181830152506101a08301518282015280955050505050612cb88460208501612ac5565b90509250929050565b7026b0b1b434b732903334b734b9b432b21d60791b8152601181019190915260310190565b600060ff821660ff811415612cfd57612cfd612303565b60010192915050565b6000600019821415612d1a57612d1a612303565b5060010190565b6a36bab63a34b9ba30b1b59d60a91b8152600b810193909352602b830191909152604b820152606b0190565b6000845160005b81811015612d6e5760208188018101518583015201612d54565b81811115612d7d576000828501525b5091909101928352506020820152604001919050565b6000816000190483118215151615612dad57612dad612303565b500290565b652b30b63ab29d60d11b8152600060078410612dd057612dd06122ed565b5060f89290921b600683015260078201526027019056fea26469706673582212206630cc3ca936424a379d3ba5328e6633b67f26f2f4c58f0334dbe3c122002ad364736f6c63430008090033",
203
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162003595380380620035958339810160408190526200003491620000a5565b600080546001600160a01b039586166001600160a01b031991821617909155600180549486169482169490941790935560028054928516928416929092179091556003805491909316911617905562000102565b80516001600160a01b0381168114620000a057600080fd5b919050565b60008060008060808587031215620000bc57600080fd5b620000c78562000088565b9350620000d76020860162000088565b9250620000e76040860162000088565b9150620000f76060860162000088565b905092959194509250565b61348380620001126000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635f52fd7c1161005b5780635f52fd7c146100e657806366e5d9c3146100f9578063b5112fd21461010c578063c39619c41461011f57600080fd5b806304997be4146100825780631f128bc0146100a857806330a5509f146100d3575b600080fd5b610095610090366004612794565b610132565b6040519081526020015b60405180910390f35b6001546100bb906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6000546100bb906001600160a01b031681565b6003546100bb906001600160a01b031681565b6002546100bb906001600160a01b031681565b61009561011a3660046127b6565b61034e565b61009561012d366004612852565b610b11565b60408051600380825260808201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161014d5750506040805180820182526000808252602091820181905282518084019093526004835290820152909150816000815181106101af576101af61287a565b60200260200101819052506101f26000604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b816001815181106102055761020561287a565b60200260200101819052506102486000604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8160028151811061025b5761025b61287a565b60209081029190910181019190915260408051808301825283815281518083019092528082526000928201929092526102ab60408051606080820183529181019182529081526000602082015290565b604080518082018252606081526000602080830182905283518085019094528301526000198252906040805161018081018252600080825260208201879052918101839052606081018590526080810184905260a0810183905260c081018b905260e081018290526101008101829052610120810191909152600019610140820152610160810189905261033e81610c64565b9750505050505050505b92915050565b6000610358612670565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a0810191909152604080516020810190915260608152604080518082019091526000808252602082015260006103d2888883610eb4565b9095509050886103e186610c64565b146104335760405162461bcd60e51b815260206004820152601360248201527f4d414348494e455f4245464f52455f484153480000000000000000000000000060448201526064015b60405180910390fd5b60008551600281111561044857610448612890565b1461052f57610455612751565b61046089898461112c565b60c088015190935090915061047482611208565b146104c15760405162461bcd60e51b815260206004820152601060248201527f4241445f474c4f42414c5f535441544500000000000000000000000000000000604482015260640161042a565b6001865160028111156104d6576104d6612890565b1480156104e157508a155b801561050257508b356104f682602001515190565b67ffffffffffffffff16105b15610526576105198660c001518d60400135610132565b9650505050505050610b08565b61051986610c64565b650800000000006105418b60016128bc565b0361055f576002855261055385610c64565b95505050505050610b08565b61056a888883611298565b909450905061057a88888361139e565b80925081945050508461016001516105a78660e0015163ffffffff1686866114799092919063ffffffff16565b146105f45760405162461bcd60e51b815260206004820152600c60248201527f4d4f44554c45535f524f4f540000000000000000000000000000000000000000604482015260640161042a565b606061060c6040518060200160405280606081525090565b6040805160208101909152606081526106268b8b866114ce565b945092506106358b8b8661139e565b945091506106448b8b8661139e565b8095508192505050600061067a60408a610120015161066391906128e5565b63ffffffff1685856115ce9092919063ffffffff16565b9050600061069e8a610100015163ffffffff1683856116199092919063ffffffff16565b9050886060015181146106f35760405162461bcd60e51b815260206004820152601260248201527f4241445f46554e4354494f4e535f524f4f540000000000000000000000000000604482015260640161042a565b8460408b61012001516107069190612908565b63ffffffff168151811061071c5761071c61287a565b60200260200101519650505050505087878290809261073d9392919061292b565b975097505060008460e0015163ffffffff169050600185610120018181516107659190612955565b63ffffffff1690525081516000602861ffff83161080159061078c5750603561ffff831611155b806107ac5750603661ffff8316108015906107ac5750603e61ffff831611155b806107bb575061ffff8216603f145b806107ca575061ffff82166040145b156107e157506001546001600160a01b03166109f8565b61ffff8216604514806107f8575061ffff82166050145b806108265750604661ffff831610801590610826575061081a60096046612979565b61ffff168261ffff1611155b806108545750606761ffff831610801590610854575061084860026067612979565b61ffff168261ffff1611155b806108745750606a61ffff8316108015906108745750607861ffff831611155b806108a25750605161ffff8316108015906108a2575061089660096051612979565b61ffff168261ffff1611155b806108d05750607961ffff8316108015906108d057506108c460026079612979565b61ffff168261ffff1611155b806108f05750607c61ffff8316108015906108f05750608a61ffff831611155b806108ff575061ffff821660a7145b8061091c575061ffff821660ac148061091c575061ffff821660ad145b8061093c575060c061ffff83161080159061093c575060c461ffff831611155b8061095c575060bc61ffff83161080159061095c575060bf61ffff831611155b1561097357506002546001600160a01b03166109f8565b61801061ffff83161080159061098f575061801361ffff831611155b806109b1575061802061ffff8316108015906109b1575061802461ffff831611155b806109d3575061803061ffff8316108015906109d3575061803261ffff831611155b156109ea57506003546001600160a01b03166109f8565b506000546001600160a01b03165b806001600160a01b031663a92cb5018e8989888f8f6040518763ffffffff1660e01b8152600401610a2e96959493929190612ad8565b600060405180830381865afa158015610a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a739190810190613140565b9097509550600061ffff83166180231480610a93575061ffff8316618024145b1590508015610aae57610aa7868589611479565b6101608901525b600288516002811115610ac357610ac3612890565b148015610ad7575061014088015160001914155b15610af457610ae5886116aa565b610aee8861172e565b50600088525b610afd88610c64565b985050505050505050505b95945050505050565b60006001610b2560a084016080850161329b565b6002811115610b3657610b36612890565b03610ba457610b52610b4d368490038401846132b8565b611208565b6040517f4d616368696e652066696e69736865643a000000000000000000000000000000602082015260318101919091526051015b604051602081830303815290604052805190602001209050919050565b6002610bb660a084016080850161329b565b6002811115610bc757610bc7612890565b03610c1757610bde610b4d368490038401846132b8565b6040517f4d616368696e65206572726f7265643a0000000000000000000000000000000060208201526030810191909152605001610b87565b60405162461bcd60e51b815260206004820152601260248201527f4241445f4d414348494e455f5354415455530000000000000000000000000000604482015260640161042a565b919050565b60008082516002811115610c7a57610c7a612890565b03610dbc576000610ca8610c91846020015161175e565b6101408501516040860151919060001914156117f4565b90506000610cd3610cbc856080015161195e565b61014086015160a0870151919060001914156117f4565b9050600082610ce5866060015161175e565b60c087015160e0808901516101008a01516101208b01516101408c01516101608d01516040517f4d616368696e652072756e6e696e673a00000000000000000000000000000000602082015260308101999099526050890197909752607088018a905260908801959095527fffffffff0000000000000000000000000000000000000000000000000000000092841b831660b088015290831b821660b487015290911b1660b884015260bc83015260dc82015260fc0160408051601f19818403018152919052805160209091012095945050505050565b600182516002811115610dd157610dd1612890565b03610e145760c08201516040517f4d616368696e652066696e69736865643a00000000000000000000000000000060208201526031810191909152605101610b87565b600282516002811115610e2957610e29612890565b03610e6c5760c08201516040517f4d616368696e65206572726f7265643a0000000000000000000000000000000060208201526030810191909152605001610b87565b60405162461bcd60e51b815260206004820152600f60248201527f4241445f4d4143485f5354415455530000000000000000000000000000000000604482015260640161042a565b610ebc612670565b81600080610ecb878785611a02565b9350905060ff8116600003610ee35760009150610f53565b8060ff16600103610ef75760019150610f53565b8060ff16600203610f0b5760029150610f53565b60405162461bcd60e51b815260206004820152601360248201527f554e4b4e4f574e5f4d4143485f53544154555300000000000000000000000000604482015260640161042a565b5060408051606080820183529181019182529081526000602082015260408051606080820183529181019182529081526000602082015260408051808201909152600080825260208201526040805180820190915260608152600060208201526040805180820190915260008082526020820152610fd28b8b89611a38565b97509450610fe18b8b89611b4b565b97509250610ff08b8b89611a38565b97509350610fff8b8b89611ba1565b9750915061100e8b8b89611b4b565b809850819250505060405180610180016040528087600281111561103457611034612890565b8152602081019690965260408601939093526060850193909352608084015260a0830191909152600060c0830181905260e0830181905261010083018190526101208301819052610140830181905261016090920191909152925061109c9050858583611d2d565b60c084019190915290506110b1858583611d49565b63ffffffff90911660e084015290506110cb858583611d49565b63ffffffff90911661010084015290506110e6858583611d49565b63ffffffff9091166101208401529050611101858583611d2d565b6101408401919091529050611117858583611d2d565b61016084019190915291959194509092505050565b611134612751565b8161113d612776565b611145612776565b60005b600260ff821610156111905761115f888886611d2d565b848360ff16600281106111745761117461287a565b60200201919091529350806111888161337a565b915050611148565b5060005b600260ff821610156111eb576111ab888886611dad565b838360ff16600281106111c0576111c061287a565b67ffffffffffffffff90931660209390930201919091529350806111e38161337a565b915050611194565b506040805180820190915291825260208201529590945092505050565b80518051602091820151828401518051908401516040517f476c6f62616c2073746174653a0000000000000000000000000000000000000095810195909552602d850193909352604d8401919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b8116606d85015291901b166075820152600090607d01610b87565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a0810191909152604080516060810182526000808252602082018190529181018290528391906000806000806113128b8b89611d2d565b975095506113218b8b89611e0c565b975094506113308b8b89611d2d565b9750935061133f8b8b89611d2d565b9750925061134e8b8b89611d2d565b9750915061135d8b8b89611d49565b6040805160c081018252988952602089019790975295870194909452506060850191909152608084015263ffffffff1660a083015290969095509350505050565b6040805160208101909152606081528160006113bb868684611a02565b92509050600060ff821667ffffffffffffffff8111156113dd576113dd612864565b604051908082528060200260200182016040528015611406578160200160208202803683370190505b50905060005b8260ff168160ff16101561145d57611425888886611d2d565b838360ff168151811061143a5761143a61287a565b6020026020010181965082815250505080806114559061337a565b91505061140c565b5060405180602001604052808281525093505050935093915050565b60006114c4848461148985611e88565b6040518060400160405280601381526020017f4d6f64756c65206d65726b6c6520747265653a00000000000000000000000000815250611f32565b90505b9392505050565b60608160006114de868684611a02565b9250905060ff811667ffffffffffffffff8111156114fe576114fe612864565b60405190808252806020026020018201604052801561154357816020015b604080518082019091526000808252602082015281526020019060019003908161151c5790505b50925060005b8160ff168110156115c457600080611562898987612055565b955091506115718989876120ae565b809650819250505060405180604001604052808361ffff168152602001828152508684815181106115a4576115a461287a565b6020026020010181905250505080806115bc90613399565b915050611549565b5050935093915050565b60006114c484846115de85612103565b6040518060400160405280601881526020017f496e737472756374696f6e206d65726b6c6520747265653a0000000000000000815250611f32565b6040517f46756e6374696f6e3a00000000000000000000000000000000000000000000006020820152602981018290526000908190604901604051602081830303815290604052805190602001209050610b088585836040518060400160405280601581526020017f46756e6374696f6e206d65726b6c6520747265653a0000000000000000000000815250611f32565b60408101515160a0820151516000198114806116c7575060001982145b156116d457505060029052565b6116e1836080015161195e565b60a08401515260208301516116f59061175e565b60408401515260808301516117109082602082015260609052565b50602091820151808301919091526040805192830190526060825252565b60006117428283610140015160001c6122fb565b61174e57506000919050565b5060001961014090910152600190565b60208101518151515160005b818110156117ed57835161178790611782908361233d565b612375565b6040517f56616c756520737461636b3a00000000000000000000000000000000000000006020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806117e590613399565b91505061176a565b5050919050565b6000600183016118465760405162461bcd60e51b815260206004820152601960248201527f4d554c5449535441434b5f4e4f535441434b5f41435449564500000000000000604482015260640161042a565b811561190c57835160010161189d5760405162461bcd60e51b815260206004820152601760248201527f4d554c5449535441434b5f4e4f535441434b5f4d41494e000000000000000000604482015260640161042a565b83516020808601516040516118ef9392879291017f6d756c7469737461636b3a0000000000000000000000000000000000000000008152600b810193909352602b830191909152604b820152606b0190565b6040516020818303038152906040528051906020012090506114c7565b83516020808601516040517f6d756c7469737461636b3a00000000000000000000000000000000000000000092810192909252602b8201869052604b820192909252606b810191909152608b016118ef565b602081015160005b8251518110156119fc57611996836000015182815181106119895761198961287a565b6020026020010151612392565b6040517f537461636b206672616d6520737461636b3a0000000000000000000000000000602082015260328101919091526052810183905260720160405160208183030381529060405280519060200120915080806119f490613399565b915050611966565b50919050565b600081848482818110611a1757611a1761287a565b919091013560f81c9250819050611a2d81613399565b915050935093915050565b604080516060808201835291810191825290815260006020820152816000611a61868684611d2d565b925090506000611a728787856120ae565b9350905060008167ffffffffffffffff811115611a9157611a91612864565b604051908082528060200260200182016040528015611ad657816020015b6040805180820190915260008082526020820152815260200190600190039081611aaf5790505b50905060005b8151811015611b2457611af089898761242b565b838381518110611b0257611b0261287a565b6020026020010181975082905250508080611b1c90613399565b915050611adc565b50604080516060810182529081019182529081526020810192909252509590945092505050565b6040805180820190915260008082526020820152816000611b6d868684611d2d565b925090506000611b7e878785611d2d565b604080518082019091529384526020840191909152919791965090945050505050565b604080518082019091526060815260006020820152816000611bc4868684611d2d565b925090506060868684818110611bdc57611bdc61287a565b909101357fff0000000000000000000000000000000000000000000000000000000000000016159050611ca25782611c1381613399565b604080516001808252818301909252919550909150816020015b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181611c2d579050509050611c7b878785612536565b82600081518110611c8e57611c8e61287a565b602002602001018195508290525050611d0c565b82611cac81613399565b60408051600080825260208201909252919550909150611d08565b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181611cc75790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181611d3c8686846120ae565b9097909650945050505050565b600081815b6004811015611da45760088363ffffffff16901b9250858583818110611d7657611d7661287a565b919091013560f81c93909317925081611d8e81613399565b9250508080611d9c90613399565b915050611d4e565b50935093915050565b600081815b6008811015611da45760088367ffffffffffffffff16901b9250858583818110611dde57611dde61287a565b919091013560f81c93909317925081611df681613399565b9250508080611e0490613399565b915050611db2565b60408051606081018252600080825260208201819052918101919091528160008080611e39888886611dad565b94509250611e48888886611dad565b94509150611e57888886611d2d565b6040805160608101825267ffffffffffffffff96871681529490951660208501529383015250969095509350505050565b60008160000151611e9c83602001516125ee565b6040808501516060860151608087015160a08801519351610b87969594906020017f4d6f64756c653a0000000000000000000000000000000000000000000000000081526007810196909652602786019490945260478501929092526067840152608783015260e01b7fffffffff000000000000000000000000000000000000000000000000000000001660a782015260ab0190565b8160005b855151811015611ffe5784600116600003611f9a57828287600001518381518110611f6357611f6361287a565b6020026020010151604051602001611f7d939291906133b3565b604051602081830303815290604052805190602001209150611fe5565b8286600001518281518110611fb157611fb161287a565b602002602001015183604051602001611fcc939291906133b3565b6040516020818303038152906040528051906020012091505b60019490941c9380611ff681613399565b915050611f36565b50831561204d5760405162461bcd60e51b815260206004820152600f60248201527f50524f4f465f544f4f5f53484f52540000000000000000000000000000000000604482015260640161042a565b949350505050565b600081815b6002811015611da45760088361ffff16901b92508585838181106120805761208061287a565b919091013560f81c9390931792508161209881613399565b92505080806120a690613399565b91505061205a565b600081815b6020811015611da457600883901b92508585838181106120d5576120d561287a565b919091013560f81c939093179250816120ed81613399565b92505080806120fb90613399565b9150506120b3565b6000808251602261211491906133ea565b61211f90600e6128bc565b67ffffffffffffffff81111561213757612137612864565b6040519080825280601f01601f191660200182016040528015612161576020820181803683370190505b5090507f496e737472756374696f6e733a0000000000000000000000000000000000000060208201526000600d9050835160f81b8282815181106121a7576121a761287a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806121e081613399565b91505060005b84518110156122eb5760008582815181106122035761220361287a565b602002602001015190506008816000015161ffff16901c60f81b84848151811061222f5761222f61287a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350805160f81b8461226f8560016128bc565b8151811061227f5761227f61287a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506122b96002846128bc565b60208083015186830182018190529194506122d490856128bc565b9350505080806122e390613399565b9150506121e6565b5050805160209091012092915050565b6000606082901c1561230f57506000610348565b5063ffffffff818116610120840152602082901c811661010084015260409190911c1660e090910152600190565b604080518082019091526000808252602082015282518051839081106123655761236561287a565b6020026020010151905092915050565b600081600001518260200151604051602001610b87929190613401565b60006123a18260000151612375565b602080840151604080860151606087015191517f537461636b206672616d653a000000000000000000000000000000000000000094810194909452602c840194909452604c8301919091527fffffffff0000000000000000000000000000000000000000000000000000000060e093841b8116606c840152921b9091166070820152607401610b87565b60408051808201909152600080825260208201528160008585838181106124545761245461287a565b919091013560f81c915082905061246a81613399565b925050612475600690565b600681111561248657612486612890565b60ff168160ff1611156124db5760405162461bcd60e51b815260206004820152600e60248201527f4241445f56414c55455f54595045000000000000000000000000000000000000604482015260640161042a565b60006124e88787856120ae565b809450819250505060405180604001604052808360ff16600681111561251057612510612890565b600681111561252157612521612890565b81526020018281525093505050935093915050565b6040805160c08101825260006080820181815260a0830182905282526020808301829052828401829052606083018290528351808501909452818452830152908290600080600061258889898761242b565b95509350612597898987611d2d565b955092506125a6898987611d49565b955091506125b5898987611d49565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b805160208083015160408085015190517f4d656d6f72793a00000000000000000000000000000000000000000000000000938101939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c094851b811660278501529190931b16602f8201526037810191909152600090605701610b87565b60408051610180810190915280600081526020016126a560408051606080820183529181019182529081526000602082015290565b81526040805180820182526000808252602080830191909152830152016126e360408051606080820183529181019182529081526000602082015290565b8152602001612708604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6040518060400160405280612764612776565b8152602001612771612776565b905290565b60405180604001604052806002906020820280368337509192915050565b600080604083850312156127a757600080fd5b50508035926020909101359150565b600080600080600085870360c08112156127cf57600080fd5b60608112156127dd57600080fd5b50859450606086013593506080860135925060a086013567ffffffffffffffff8082111561280a57600080fd5b818801915088601f83011261281e57600080fd5b81358181111561282d57600080fd5b89602082850101111561283f57600080fd5b9699959850939650602001949392505050565b600060a082840312156119fc57600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610348576103486128a6565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806128fc576128fc6128cf565b92169190910492915050565b600063ffffffff8084168061291f5761291f6128cf565b92169190910692915050565b6000808585111561293b57600080fd5b8386111561294857600080fd5b5050820193919092039150565b63ffffffff818116838216019080821115612972576129726128a6565b5092915050565b61ffff818116838216019080821115612972576129726128a6565b600381106129a4576129a4612890565b9052565b8051600781106129ba576129ba612890565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015612a1757612a038286516129a8565b9382019360019390930192908501906129f0565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015612a96578451612a628582516129a8565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101612a4d565b509687015197909601969096525093949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006101e08835835260208901356001600160a01b038116808214612afc57600080fd5b806020860152505060408901356040840152806060840152612b218184018951612994565b5060208701516101c080610200850152612b3f6103a08501836129c7565b60408a0151805161022087015260208101516102408701529092505060608901517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe208086850301610260870152612b9684836129c7565b935060808b01519150808685030161028087015250612bb58382612a2b565b92505060a0890151612bd56102a086018280518252602090810151910152565b5060c08901516102e085015260e089015163ffffffff81166103008601525061010089015163ffffffff81166103208601525061012089015163ffffffff811661034086015250610140890151610360850152610160890151610380850152612ca1608085018980518252602081015167ffffffffffffffff80825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b865161ffff1661018085015260208701516101a085015283820390840152612cca818587612aad565b9998505050505050505050565b6040805190810167ffffffffffffffff81118282101715612cfa57612cfa612864565b60405290565b6040516020810167ffffffffffffffff81118282101715612cfa57612cfa612864565b6040516080810167ffffffffffffffff81118282101715612cfa57612cfa612864565b60405160c0810167ffffffffffffffff81118282101715612cfa57612cfa612864565b6040516060810167ffffffffffffffff81118282101715612cfa57612cfa612864565b604051610180810167ffffffffffffffff81118282101715612cfa57612cfa612864565b604051601f8201601f1916810167ffffffffffffffff81118282101715612dd957612dd9612864565b604052919050565b60038110612dee57600080fd5b50565b8051610c5f81612de1565b600067ffffffffffffffff821115612e1657612e16612864565b5060051b60200190565b600060408284031215612e3257600080fd5b612e3a612cd7565b9050815160078110612e4b57600080fd5b808252506020820151602082015292915050565b60006040808385031215612e7257600080fd5b612e7a612cd7565b9150825167ffffffffffffffff80821115612e9457600080fd5b81850191506020808388031215612eaa57600080fd5b612eb2612d00565b835183811115612ec157600080fd5b80850194505087601f850112612ed657600080fd5b83519250612eeb612ee684612dfc565b612db0565b83815260069390931b84018201928281019089851115612f0a57600080fd5b948301945b84861015612f3057612f218a87612e20565b82529486019490830190612f0f565b8252508552948501519484019490945250909392505050565b600060408284031215612f5b57600080fd5b612f63612cd7565b9050815181526020820151602082015292915050565b805163ffffffff81168114610c5f57600080fd5b60006040808385031215612fa057600080fd5b612fa8612cd7565b9150825167ffffffffffffffff811115612fc157600080fd5b8301601f81018513612fd257600080fd5b80516020612fe2612ee683612dfc565b82815260a0928302840182019282820191908985111561300157600080fd5b948301945b8486101561306a5780868b03121561301e5760008081fd5b613026612d23565b6130308b88612e20565b815287870151858201526060613047818901612f79565b8983015261305760808901612f79565b9082015283529485019491830191613006565b50808752505080860151818601525050505092915050565b67ffffffffffffffff81168114612dee57600080fd5b60008183036101008112156130ac57600080fd5b6130b4612d46565b9150825182526060601f19820112156130cc57600080fd5b506130d5612d69565b60208301516130e381613082565b815260408301516130f381613082565b8060208301525060608301516040820152806020830152506080820151604082015260a0820151606082015260c0820151608082015261313560e08301612f79565b60a082015292915050565b60008061012080848603121561315557600080fd5b835167ffffffffffffffff8082111561316d57600080fd5b908501906101c0828803121561318257600080fd5b61318a612d8c565b61319383612df1565b81526020830151828111156131a757600080fd5b6131b389828601612e5f565b6020830152506131c68860408501612f49565b60408201526080830151828111156131dd57600080fd5b6131e989828601612e5f565b60608301525060a08301518281111561320157600080fd5b61320d89828601612f8d565b6080830152506132208860c08501612f49565b60a082015261010091508183015160c082015261323e848401612f79565b60e0820152610140613251818501612f79565b838301526101609250613265838501612f79565b8583015261018084015181830152506101a083015182820152809550505050506132928460208501613098565b90509250929050565b6000602082840312156132ad57600080fd5b81356114c781612de1565b6000608082840312156132ca57600080fd5b6132d2612cd7565b83601f8401126132e157600080fd5b6132e9612cd7565b8060408501868111156132fb57600080fd5b855b818110156133155780358452602093840193016132fd565b5081845286605f87011261332857600080fd5b613330612cd7565b9250829150608086018781111561334657600080fd5b8082101561336b57813561335981613082565b84526020938401939190910190613346565b50506020830152509392505050565b600060ff821660ff8103613390576133906128a6565b60010192915050565b600060001982036133ac576133ac6128a6565b5060010190565b6000845160005b818110156133d457602081880181015185830152016133ba565b5091909101928352506020820152604001919050565b8082028115828204841417610348576103486128a6565b7f56616c75653a0000000000000000000000000000000000000000000000000000815260006007841061343657613436612890565b5060f89290921b600683015260078201526027019056fea2646970667358221220fbe519bfbe1f0c51b65aa0cbcc8da50e584b831d8e39e91ea556f4e9672039df64736f6c63430008110033",
204
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635f52fd7c1161005b5780635f52fd7c146100e657806366e5d9c3146100f9578063b5112fd21461010c578063c39619c41461011f57600080fd5b806304997be4146100825780631f128bc0146100a857806330a5509f146100d3575b600080fd5b610095610090366004612794565b610132565b6040519081526020015b60405180910390f35b6001546100bb906001600160a01b031681565b6040516001600160a01b03909116815260200161009f565b6000546100bb906001600160a01b031681565b6003546100bb906001600160a01b031681565b6002546100bb906001600160a01b031681565b61009561011a3660046127b6565b61034e565b61009561012d366004612852565b610b11565b60408051600380825260808201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161014d5750506040805180820182526000808252602091820181905282518084019093526004835290820152909150816000815181106101af576101af61287a565b60200260200101819052506101f26000604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b816001815181106102055761020561287a565b60200260200101819052506102486000604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8160028151811061025b5761025b61287a565b60209081029190910181019190915260408051808301825283815281518083019092528082526000928201929092526102ab60408051606080820183529181019182529081526000602082015290565b604080518082018252606081526000602080830182905283518085019094528301526000198252906040805161018081018252600080825260208201879052918101839052606081018590526080810184905260a0810183905260c081018b905260e081018290526101008101829052610120810191909152600019610140820152610160810189905261033e81610c64565b9750505050505050505b92915050565b6000610358612670565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a0810191909152604080516020810190915260608152604080518082019091526000808252602082015260006103d2888883610eb4565b9095509050886103e186610c64565b146104335760405162461bcd60e51b815260206004820152601360248201527f4d414348494e455f4245464f52455f484153480000000000000000000000000060448201526064015b60405180910390fd5b60008551600281111561044857610448612890565b1461052f57610455612751565b61046089898461112c565b60c088015190935090915061047482611208565b146104c15760405162461bcd60e51b815260206004820152601060248201527f4241445f474c4f42414c5f535441544500000000000000000000000000000000604482015260640161042a565b6001865160028111156104d6576104d6612890565b1480156104e157508a155b801561050257508b356104f682602001515190565b67ffffffffffffffff16105b15610526576105198660c001518d60400135610132565b9650505050505050610b08565b61051986610c64565b650800000000006105418b60016128bc565b0361055f576002855261055385610c64565b95505050505050610b08565b61056a888883611298565b909450905061057a88888361139e565b80925081945050508461016001516105a78660e0015163ffffffff1686866114799092919063ffffffff16565b146105f45760405162461bcd60e51b815260206004820152600c60248201527f4d4f44554c45535f524f4f540000000000000000000000000000000000000000604482015260640161042a565b606061060c6040518060200160405280606081525090565b6040805160208101909152606081526106268b8b866114ce565b945092506106358b8b8661139e565b945091506106448b8b8661139e565b8095508192505050600061067a60408a610120015161066391906128e5565b63ffffffff1685856115ce9092919063ffffffff16565b9050600061069e8a610100015163ffffffff1683856116199092919063ffffffff16565b9050886060015181146106f35760405162461bcd60e51b815260206004820152601260248201527f4241445f46554e4354494f4e535f524f4f540000000000000000000000000000604482015260640161042a565b8460408b61012001516107069190612908565b63ffffffff168151811061071c5761071c61287a565b60200260200101519650505050505087878290809261073d9392919061292b565b975097505060008460e0015163ffffffff169050600185610120018181516107659190612955565b63ffffffff1690525081516000602861ffff83161080159061078c5750603561ffff831611155b806107ac5750603661ffff8316108015906107ac5750603e61ffff831611155b806107bb575061ffff8216603f145b806107ca575061ffff82166040145b156107e157506001546001600160a01b03166109f8565b61ffff8216604514806107f8575061ffff82166050145b806108265750604661ffff831610801590610826575061081a60096046612979565b61ffff168261ffff1611155b806108545750606761ffff831610801590610854575061084860026067612979565b61ffff168261ffff1611155b806108745750606a61ffff8316108015906108745750607861ffff831611155b806108a25750605161ffff8316108015906108a2575061089660096051612979565b61ffff168261ffff1611155b806108d05750607961ffff8316108015906108d057506108c460026079612979565b61ffff168261ffff1611155b806108f05750607c61ffff8316108015906108f05750608a61ffff831611155b806108ff575061ffff821660a7145b8061091c575061ffff821660ac148061091c575061ffff821660ad145b8061093c575060c061ffff83161080159061093c575060c461ffff831611155b8061095c575060bc61ffff83161080159061095c575060bf61ffff831611155b1561097357506002546001600160a01b03166109f8565b61801061ffff83161080159061098f575061801361ffff831611155b806109b1575061802061ffff8316108015906109b1575061802461ffff831611155b806109d3575061803061ffff8316108015906109d3575061803261ffff831611155b156109ea57506003546001600160a01b03166109f8565b506000546001600160a01b03165b806001600160a01b031663a92cb5018e8989888f8f6040518763ffffffff1660e01b8152600401610a2e96959493929190612ad8565b600060405180830381865afa158015610a4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a739190810190613140565b9097509550600061ffff83166180231480610a93575061ffff8316618024145b1590508015610aae57610aa7868589611479565b6101608901525b600288516002811115610ac357610ac3612890565b148015610ad7575061014088015160001914155b15610af457610ae5886116aa565b610aee8861172e565b50600088525b610afd88610c64565b985050505050505050505b95945050505050565b60006001610b2560a084016080850161329b565b6002811115610b3657610b36612890565b03610ba457610b52610b4d368490038401846132b8565b611208565b6040517f4d616368696e652066696e69736865643a000000000000000000000000000000602082015260318101919091526051015b604051602081830303815290604052805190602001209050919050565b6002610bb660a084016080850161329b565b6002811115610bc757610bc7612890565b03610c1757610bde610b4d368490038401846132b8565b6040517f4d616368696e65206572726f7265643a0000000000000000000000000000000060208201526030810191909152605001610b87565b60405162461bcd60e51b815260206004820152601260248201527f4241445f4d414348494e455f5354415455530000000000000000000000000000604482015260640161042a565b919050565b60008082516002811115610c7a57610c7a612890565b03610dbc576000610ca8610c91846020015161175e565b6101408501516040860151919060001914156117f4565b90506000610cd3610cbc856080015161195e565b61014086015160a0870151919060001914156117f4565b9050600082610ce5866060015161175e565b60c087015160e0808901516101008a01516101208b01516101408c01516101608d01516040517f4d616368696e652072756e6e696e673a00000000000000000000000000000000602082015260308101999099526050890197909752607088018a905260908801959095527fffffffff0000000000000000000000000000000000000000000000000000000092841b831660b088015290831b821660b487015290911b1660b884015260bc83015260dc82015260fc0160408051601f19818403018152919052805160209091012095945050505050565b600182516002811115610dd157610dd1612890565b03610e145760c08201516040517f4d616368696e652066696e69736865643a00000000000000000000000000000060208201526031810191909152605101610b87565b600282516002811115610e2957610e29612890565b03610e6c5760c08201516040517f4d616368696e65206572726f7265643a0000000000000000000000000000000060208201526030810191909152605001610b87565b60405162461bcd60e51b815260206004820152600f60248201527f4241445f4d4143485f5354415455530000000000000000000000000000000000604482015260640161042a565b610ebc612670565b81600080610ecb878785611a02565b9350905060ff8116600003610ee35760009150610f53565b8060ff16600103610ef75760019150610f53565b8060ff16600203610f0b5760029150610f53565b60405162461bcd60e51b815260206004820152601360248201527f554e4b4e4f574e5f4d4143485f53544154555300000000000000000000000000604482015260640161042a565b5060408051606080820183529181019182529081526000602082015260408051606080820183529181019182529081526000602082015260408051808201909152600080825260208201526040805180820190915260608152600060208201526040805180820190915260008082526020820152610fd28b8b89611a38565b97509450610fe18b8b89611b4b565b97509250610ff08b8b89611a38565b97509350610fff8b8b89611ba1565b9750915061100e8b8b89611b4b565b809850819250505060405180610180016040528087600281111561103457611034612890565b8152602081019690965260408601939093526060850193909352608084015260a0830191909152600060c0830181905260e0830181905261010083018190526101208301819052610140830181905261016090920191909152925061109c9050858583611d2d565b60c084019190915290506110b1858583611d49565b63ffffffff90911660e084015290506110cb858583611d49565b63ffffffff90911661010084015290506110e6858583611d49565b63ffffffff9091166101208401529050611101858583611d2d565b6101408401919091529050611117858583611d2d565b61016084019190915291959194509092505050565b611134612751565b8161113d612776565b611145612776565b60005b600260ff821610156111905761115f888886611d2d565b848360ff16600281106111745761117461287a565b60200201919091529350806111888161337a565b915050611148565b5060005b600260ff821610156111eb576111ab888886611dad565b838360ff16600281106111c0576111c061287a565b67ffffffffffffffff90931660209390930201919091529350806111e38161337a565b915050611194565b506040805180820190915291825260208201529590945092505050565b80518051602091820151828401518051908401516040517f476c6f62616c2073746174653a0000000000000000000000000000000000000095810195909552602d850193909352604d8401919091527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b8116606d85015291901b166075820152600090607d01610b87565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a0810191909152604080516060810182526000808252602082018190529181018290528391906000806000806113128b8b89611d2d565b975095506113218b8b89611e0c565b975094506113308b8b89611d2d565b9750935061133f8b8b89611d2d565b9750925061134e8b8b89611d2d565b9750915061135d8b8b89611d49565b6040805160c081018252988952602089019790975295870194909452506060850191909152608084015263ffffffff1660a083015290969095509350505050565b6040805160208101909152606081528160006113bb868684611a02565b92509050600060ff821667ffffffffffffffff8111156113dd576113dd612864565b604051908082528060200260200182016040528015611406578160200160208202803683370190505b50905060005b8260ff168160ff16101561145d57611425888886611d2d565b838360ff168151811061143a5761143a61287a565b6020026020010181965082815250505080806114559061337a565b91505061140c565b5060405180602001604052808281525093505050935093915050565b60006114c4848461148985611e88565b6040518060400160405280601381526020017f4d6f64756c65206d65726b6c6520747265653a00000000000000000000000000815250611f32565b90505b9392505050565b60608160006114de868684611a02565b9250905060ff811667ffffffffffffffff8111156114fe576114fe612864565b60405190808252806020026020018201604052801561154357816020015b604080518082019091526000808252602082015281526020019060019003908161151c5790505b50925060005b8160ff168110156115c457600080611562898987612055565b955091506115718989876120ae565b809650819250505060405180604001604052808361ffff168152602001828152508684815181106115a4576115a461287a565b6020026020010181905250505080806115bc90613399565b915050611549565b5050935093915050565b60006114c484846115de85612103565b6040518060400160405280601881526020017f496e737472756374696f6e206d65726b6c6520747265653a0000000000000000815250611f32565b6040517f46756e6374696f6e3a00000000000000000000000000000000000000000000006020820152602981018290526000908190604901604051602081830303815290604052805190602001209050610b088585836040518060400160405280601581526020017f46756e6374696f6e206d65726b6c6520747265653a0000000000000000000000815250611f32565b60408101515160a0820151516000198114806116c7575060001982145b156116d457505060029052565b6116e1836080015161195e565b60a08401515260208301516116f59061175e565b60408401515260808301516117109082602082015260609052565b50602091820151808301919091526040805192830190526060825252565b60006117428283610140015160001c6122fb565b61174e57506000919050565b5060001961014090910152600190565b60208101518151515160005b818110156117ed57835161178790611782908361233d565b612375565b6040517f56616c756520737461636b3a00000000000000000000000000000000000000006020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806117e590613399565b91505061176a565b5050919050565b6000600183016118465760405162461bcd60e51b815260206004820152601960248201527f4d554c5449535441434b5f4e4f535441434b5f41435449564500000000000000604482015260640161042a565b811561190c57835160010161189d5760405162461bcd60e51b815260206004820152601760248201527f4d554c5449535441434b5f4e4f535441434b5f4d41494e000000000000000000604482015260640161042a565b83516020808601516040516118ef9392879291017f6d756c7469737461636b3a0000000000000000000000000000000000000000008152600b810193909352602b830191909152604b820152606b0190565b6040516020818303038152906040528051906020012090506114c7565b83516020808601516040517f6d756c7469737461636b3a00000000000000000000000000000000000000000092810192909252602b8201869052604b820192909252606b810191909152608b016118ef565b602081015160005b8251518110156119fc57611996836000015182815181106119895761198961287a565b6020026020010151612392565b6040517f537461636b206672616d6520737461636b3a0000000000000000000000000000602082015260328101919091526052810183905260720160405160208183030381529060405280519060200120915080806119f490613399565b915050611966565b50919050565b600081848482818110611a1757611a1761287a565b919091013560f81c9250819050611a2d81613399565b915050935093915050565b604080516060808201835291810191825290815260006020820152816000611a61868684611d2d565b925090506000611a728787856120ae565b9350905060008167ffffffffffffffff811115611a9157611a91612864565b604051908082528060200260200182016040528015611ad657816020015b6040805180820190915260008082526020820152815260200190600190039081611aaf5790505b50905060005b8151811015611b2457611af089898761242b565b838381518110611b0257611b0261287a565b6020026020010181975082905250508080611b1c90613399565b915050611adc565b50604080516060810182529081019182529081526020810192909252509590945092505050565b6040805180820190915260008082526020820152816000611b6d868684611d2d565b925090506000611b7e878785611d2d565b604080518082019091529384526020840191909152919791965090945050505050565b604080518082019091526060815260006020820152816000611bc4868684611d2d565b925090506060868684818110611bdc57611bdc61287a565b909101357fff0000000000000000000000000000000000000000000000000000000000000016159050611ca25782611c1381613399565b604080516001808252818301909252919550909150816020015b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181611c2d579050509050611c7b878785612536565b82600081518110611c8e57611c8e61287a565b602002602001018195508290525050611d0c565b82611cac81613399565b60408051600080825260208201909252919550909150611d08565b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181611cc75790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181611d3c8686846120ae565b9097909650945050505050565b600081815b6004811015611da45760088363ffffffff16901b9250858583818110611d7657611d7661287a565b919091013560f81c93909317925081611d8e81613399565b9250508080611d9c90613399565b915050611d4e565b50935093915050565b600081815b6008811015611da45760088367ffffffffffffffff16901b9250858583818110611dde57611dde61287a565b919091013560f81c93909317925081611df681613399565b9250508080611e0490613399565b915050611db2565b60408051606081018252600080825260208201819052918101919091528160008080611e39888886611dad565b94509250611e48888886611dad565b94509150611e57888886611d2d565b6040805160608101825267ffffffffffffffff96871681529490951660208501529383015250969095509350505050565b60008160000151611e9c83602001516125ee565b6040808501516060860151608087015160a08801519351610b87969594906020017f4d6f64756c653a0000000000000000000000000000000000000000000000000081526007810196909652602786019490945260478501929092526067840152608783015260e01b7fffffffff000000000000000000000000000000000000000000000000000000001660a782015260ab0190565b8160005b855151811015611ffe5784600116600003611f9a57828287600001518381518110611f6357611f6361287a565b6020026020010151604051602001611f7d939291906133b3565b604051602081830303815290604052805190602001209150611fe5565b8286600001518281518110611fb157611fb161287a565b602002602001015183604051602001611fcc939291906133b3565b6040516020818303038152906040528051906020012091505b60019490941c9380611ff681613399565b915050611f36565b50831561204d5760405162461bcd60e51b815260206004820152600f60248201527f50524f4f465f544f4f5f53484f52540000000000000000000000000000000000604482015260640161042a565b949350505050565b600081815b6002811015611da45760088361ffff16901b92508585838181106120805761208061287a565b919091013560f81c9390931792508161209881613399565b92505080806120a690613399565b91505061205a565b600081815b6020811015611da457600883901b92508585838181106120d5576120d561287a565b919091013560f81c939093179250816120ed81613399565b92505080806120fb90613399565b9150506120b3565b6000808251602261211491906133ea565b61211f90600e6128bc565b67ffffffffffffffff81111561213757612137612864565b6040519080825280601f01601f191660200182016040528015612161576020820181803683370190505b5090507f496e737472756374696f6e733a0000000000000000000000000000000000000060208201526000600d9050835160f81b8282815181106121a7576121a761287a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806121e081613399565b91505060005b84518110156122eb5760008582815181106122035761220361287a565b602002602001015190506008816000015161ffff16901c60f81b84848151811061222f5761222f61287a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350805160f81b8461226f8560016128bc565b8151811061227f5761227f61287a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506122b96002846128bc565b60208083015186830182018190529194506122d490856128bc565b9350505080806122e390613399565b9150506121e6565b5050805160209091012092915050565b6000606082901c1561230f57506000610348565b5063ffffffff818116610120840152602082901c811661010084015260409190911c1660e090910152600190565b604080518082019091526000808252602082015282518051839081106123655761236561287a565b6020026020010151905092915050565b600081600001518260200151604051602001610b87929190613401565b60006123a18260000151612375565b602080840151604080860151606087015191517f537461636b206672616d653a000000000000000000000000000000000000000094810194909452602c840194909452604c8301919091527fffffffff0000000000000000000000000000000000000000000000000000000060e093841b8116606c840152921b9091166070820152607401610b87565b60408051808201909152600080825260208201528160008585838181106124545761245461287a565b919091013560f81c915082905061246a81613399565b925050612475600690565b600681111561248657612486612890565b60ff168160ff1611156124db5760405162461bcd60e51b815260206004820152600e60248201527f4241445f56414c55455f54595045000000000000000000000000000000000000604482015260640161042a565b60006124e88787856120ae565b809450819250505060405180604001604052808360ff16600681111561251057612510612890565b600681111561252157612521612890565b81526020018281525093505050935093915050565b6040805160c08101825260006080820181815260a0830182905282526020808301829052828401829052606083018290528351808501909452818452830152908290600080600061258889898761242b565b95509350612597898987611d2d565b955092506125a6898987611d49565b955091506125b5898987611d49565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b805160208083015160408085015190517f4d656d6f72793a00000000000000000000000000000000000000000000000000938101939093527fffffffffffffffff00000000000000000000000000000000000000000000000060c094851b811660278501529190931b16602f8201526037810191909152600090605701610b87565b60408051610180810190915280600081526020016126a560408051606080820183529181019182529081526000602082015290565b81526040805180820182526000808252602080830191909152830152016126e360408051606080820183529181019182529081526000602082015290565b8152602001612708604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6040518060400160405280612764612776565b8152602001612771612776565b905290565b60405180604001604052806002906020820280368337509192915050565b600080604083850312156127a757600080fd5b50508035926020909101359150565b600080600080600085870360c08112156127cf57600080fd5b60608112156127dd57600080fd5b50859450606086013593506080860135925060a086013567ffffffffffffffff8082111561280a57600080fd5b818801915088601f83011261281e57600080fd5b81358181111561282d57600080fd5b89602082850101111561283f57600080fd5b9699959850939650602001949392505050565b600060a082840312156119fc57600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610348576103486128a6565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806128fc576128fc6128cf565b92169190910492915050565b600063ffffffff8084168061291f5761291f6128cf565b92169190910692915050565b6000808585111561293b57600080fd5b8386111561294857600080fd5b5050820193919092039150565b63ffffffff818116838216019080821115612972576129726128a6565b5092915050565b61ffff818116838216019080821115612972576129726128a6565b600381106129a4576129a4612890565b9052565b8051600781106129ba576129ba612890565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015612a1757612a038286516129a8565b9382019360019390930192908501906129f0565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015612a96578451612a628582516129a8565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101612a4d565b509687015197909601969096525093949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006101e08835835260208901356001600160a01b038116808214612afc57600080fd5b806020860152505060408901356040840152806060840152612b218184018951612994565b5060208701516101c080610200850152612b3f6103a08501836129c7565b60408a0151805161022087015260208101516102408701529092505060608901517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe208086850301610260870152612b9684836129c7565b935060808b01519150808685030161028087015250612bb58382612a2b565b92505060a0890151612bd56102a086018280518252602090810151910152565b5060c08901516102e085015260e089015163ffffffff81166103008601525061010089015163ffffffff81166103208601525061012089015163ffffffff811661034086015250610140890151610360850152610160890151610380850152612ca1608085018980518252602081015167ffffffffffffffff80825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b865161ffff1661018085015260208701516101a085015283820390840152612cca818587612aad565b9998505050505050505050565b6040805190810167ffffffffffffffff81118282101715612cfa57612cfa612864565b60405290565b6040516020810167ffffffffffffffff81118282101715612cfa57612cfa612864565b6040516080810167ffffffffffffffff81118282101715612cfa57612cfa612864565b60405160c0810167ffffffffffffffff81118282101715612cfa57612cfa612864565b6040516060810167ffffffffffffffff81118282101715612cfa57612cfa612864565b604051610180810167ffffffffffffffff81118282101715612cfa57612cfa612864565b604051601f8201601f1916810167ffffffffffffffff81118282101715612dd957612dd9612864565b604052919050565b60038110612dee57600080fd5b50565b8051610c5f81612de1565b600067ffffffffffffffff821115612e1657612e16612864565b5060051b60200190565b600060408284031215612e3257600080fd5b612e3a612cd7565b9050815160078110612e4b57600080fd5b808252506020820151602082015292915050565b60006040808385031215612e7257600080fd5b612e7a612cd7565b9150825167ffffffffffffffff80821115612e9457600080fd5b81850191506020808388031215612eaa57600080fd5b612eb2612d00565b835183811115612ec157600080fd5b80850194505087601f850112612ed657600080fd5b83519250612eeb612ee684612dfc565b612db0565b83815260069390931b84018201928281019089851115612f0a57600080fd5b948301945b84861015612f3057612f218a87612e20565b82529486019490830190612f0f565b8252508552948501519484019490945250909392505050565b600060408284031215612f5b57600080fd5b612f63612cd7565b9050815181526020820151602082015292915050565b805163ffffffff81168114610c5f57600080fd5b60006040808385031215612fa057600080fd5b612fa8612cd7565b9150825167ffffffffffffffff811115612fc157600080fd5b8301601f81018513612fd257600080fd5b80516020612fe2612ee683612dfc565b82815260a0928302840182019282820191908985111561300157600080fd5b948301945b8486101561306a5780868b03121561301e5760008081fd5b613026612d23565b6130308b88612e20565b815287870151858201526060613047818901612f79565b8983015261305760808901612f79565b9082015283529485019491830191613006565b50808752505080860151818601525050505092915050565b67ffffffffffffffff81168114612dee57600080fd5b60008183036101008112156130ac57600080fd5b6130b4612d46565b9150825182526060601f19820112156130cc57600080fd5b506130d5612d69565b60208301516130e381613082565b815260408301516130f381613082565b8060208301525060608301516040820152806020830152506080820151604082015260a0820151606082015260c0820151608082015261313560e08301612f79565b60a082015292915050565b60008061012080848603121561315557600080fd5b835167ffffffffffffffff8082111561316d57600080fd5b908501906101c0828803121561318257600080fd5b61318a612d8c565b61319383612df1565b81526020830151828111156131a757600080fd5b6131b389828601612e5f565b6020830152506131c68860408501612f49565b60408201526080830151828111156131dd57600080fd5b6131e989828601612e5f565b60608301525060a08301518281111561320157600080fd5b61320d89828601612f8d565b6080830152506132208860c08501612f49565b60a082015261010091508183015160c082015261323e848401612f79565b60e0820152610140613251818501612f79565b838301526101609250613265838501612f79565b8583015261018084015181830152506101a083015182820152809550505050506132928460208501613098565b90509250929050565b6000602082840312156132ad57600080fd5b81356114c781612de1565b6000608082840312156132ca57600080fd5b6132d2612cd7565b83601f8401126132e157600080fd5b6132e9612cd7565b8060408501868111156132fb57600080fd5b855b818110156133155780358452602093840193016132fd565b5081845286605f87011261332857600080fd5b613330612cd7565b9250829150608086018781111561334657600080fd5b8082101561336b57813561335981613082565b84526020938401939190910190613346565b50506020830152509392505050565b600060ff821660ff8103613390576133906128a6565b60010192915050565b600060001982036133ac576133ac6128a6565b5060010190565b6000845160005b818110156133d457602081880181015185830152016133ba565b5091909101928352506020820152604001919050565b8082028115828204841417610348576103486128a6565b7f56616c75653a0000000000000000000000000000000000000000000000000000815260006007841061343657613436612890565b5060f89290921b600683015260078201526027019056fea2646970667358221220fbe519bfbe1f0c51b65aa0cbcc8da50e584b831d8e39e91ea556f4e9672039df64736f6c63430008110033",
181
205
  "linkReferences": {},
182
206
  "deployedLinkReferences": {}
183
207
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/28754c4998b67fc9c9d6d849262cf39e.json"
4
4
  }