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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  29. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  30. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  52. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  53. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  54. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  55. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +13 -0
  56. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  57. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  58. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  59. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  60. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  61. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  62. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +15 -2
  63. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  64. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  65. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  66. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  67. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  68. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  69. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  70. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  71. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  72. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  73. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  74. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  75. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  76. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  77. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +16 -16
  78. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  79. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +15 -2
  80. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  81. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  83. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +23 -18
  85. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +4 -0
  86. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +490 -0
  87. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +1 -1
  88. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.json +2 -2
  89. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +1 -1
  90. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +50 -2
  91. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +1 -1
  92. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +55 -0
  93. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +1 -1
  94. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  95. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  96. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  97. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  98. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  99. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  100. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  101. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  102. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  103. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  104. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  105. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  106. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  107. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  108. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +4 -0
  109. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +46 -0
  110. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  111. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
  112. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  113. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +15 -2
  114. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  115. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  116. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +1 -1
  117. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +2 -2
  118. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +4 -0
  119. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +71 -0
  120. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +4 -0
  121. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +36 -0
  122. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +4 -0
  123. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +142 -0
  124. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  125. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  126. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +4 -0
  127. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +25 -0
  128. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  129. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +31 -26
  130. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  131. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  132. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +4 -0
  133. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +37 -0
  134. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  135. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  136. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +1 -1
  137. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +50 -2
  138. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +1 -1
  139. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +50 -2
  140. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  141. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  142. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  143. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  144. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  145. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  146. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +48 -0
  147. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  148. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  149. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  150. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +88 -0
  151. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  152. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +50 -2
  153. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  154. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +90 -2
  155. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  156. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +90 -2
  157. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  158. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +90 -2
  159. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  160. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +90 -2
  161. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  162. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  164. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +7 -0
  166. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  169. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  170. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.json +161 -0
  171. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  172. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  174. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  175. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +4 -0
  176. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.json +453 -0
  177. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +4 -0
  178. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.json +113 -0
  179. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  180. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  181. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  182. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  183. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +10 -10
  184. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  185. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  186. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  187. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  188. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  189. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +8 -8
  190. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  191. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  192. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  193. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +1 -1
  194. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +1 -1
  195. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +1 -1
  196. package/build/contracts/src/rollup/Node.sol/NodeLib.json +2 -2
  197. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  198. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +23 -10
  199. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  200. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +13 -0
  201. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +10 -10
  203. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  204. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  205. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  206. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  207. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  208. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +10 -10
  209. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +1 -1
  210. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +13 -0
  211. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +1 -1
  212. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +15 -2
  213. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  214. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +15 -2
  215. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +1 -1
  216. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +2 -2
  217. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  218. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -2
  219. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  220. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  221. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  222. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  223. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  224. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  225. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  226. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  227. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  228. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  229. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  230. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  231. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  232. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  233. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  234. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  235. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +4 -0
  236. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +10 -0
  237. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  238. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  239. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  240. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  241. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  242. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  243. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  244. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  245. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  246. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  247. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  248. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  249. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  250. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  251. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  252. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  253. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  254. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  255. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  256. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  257. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  258. package/package.json +14 -7
  259. package/src/bridge/ISequencerInbox.sol +4 -4
  260. package/src/bridge/SequencerInbox.sol +38 -30
  261. package/src/chain/CacheManager.sol +283 -0
  262. package/src/challenge/ChallengeLib.sol +0 -45
  263. package/src/challenge/ChallengeManager.sol +24 -9
  264. package/src/challenge/IChallengeManager.sol +13 -0
  265. package/src/libraries/Error.sol +3 -9
  266. package/src/mocks/Benchmarks.sol +52 -0
  267. package/src/mocks/MultiCallTest.sol +117 -0
  268. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +29 -0
  269. package/src/mocks/Program.sol +126 -0
  270. package/src/mocks/SdkStorage.sol +176 -0
  271. package/src/mocks/SequencerInboxStub.sol +4 -4
  272. package/src/mocks/SimpleCacheManager.sol +22 -0
  273. package/src/osp/IOneStepProofEntry.sol +10 -0
  274. package/src/osp/OneStepProofEntry.sol +81 -7
  275. package/src/osp/OneStepProver0.sol +64 -20
  276. package/src/osp/OneStepProverHostIo.sol +201 -2
  277. package/src/osp/OneStepProverMemory.sol +4 -33
  278. package/src/precompiles/ArbDebug.sol +2 -0
  279. package/src/precompiles/ArbOwner.sol +51 -9
  280. package/src/precompiles/ArbWasm.sol +119 -0
  281. package/src/precompiles/ArbWasmCache.sol +33 -0
  282. package/src/state/Deserialize.sol +88 -47
  283. package/src/state/Instructions.sol +38 -3
  284. package/src/state/Machine.sol +92 -15
  285. package/src/state/MerkleProof.sol +22 -4
  286. package/src/state/Module.sol +3 -1
  287. package/src/state/ModuleMemory.sol +54 -0
  288. package/src/state/MultiStack.sol +58 -0
  289. package/src/state/StackFrame.sol +6 -1
  290. package/src/state/Value.sol +13 -1
  291. package/src/state/ValueStack.sol +6 -1
@@ -65,6 +65,23 @@
65
65
  "name": "valueStack",
66
66
  "type": "tuple"
67
67
  },
68
+ {
69
+ "components": [
70
+ {
71
+ "internalType": "bytes32",
72
+ "name": "inactiveStackHash",
73
+ "type": "bytes32"
74
+ },
75
+ {
76
+ "internalType": "bytes32",
77
+ "name": "remainingHash",
78
+ "type": "bytes32"
79
+ }
80
+ ],
81
+ "internalType": "struct MultiStack",
82
+ "name": "valueMultiStack",
83
+ "type": "tuple"
84
+ },
68
85
  {
69
86
  "components": [
70
87
  {
@@ -152,6 +169,23 @@
152
169
  "name": "frameStack",
153
170
  "type": "tuple"
154
171
  },
172
+ {
173
+ "components": [
174
+ {
175
+ "internalType": "bytes32",
176
+ "name": "inactiveStackHash",
177
+ "type": "bytes32"
178
+ },
179
+ {
180
+ "internalType": "bytes32",
181
+ "name": "remainingHash",
182
+ "type": "bytes32"
183
+ }
184
+ ],
185
+ "internalType": "struct MultiStack",
186
+ "name": "frameMultiStack",
187
+ "type": "tuple"
188
+ },
155
189
  {
156
190
  "internalType": "bytes32",
157
191
  "name": "globalStateHash",
@@ -172,6 +206,11 @@
172
206
  "name": "functionPc",
173
207
  "type": "uint32"
174
208
  },
209
+ {
210
+ "internalType": "bytes32",
211
+ "name": "recoveryPc",
212
+ "type": "bytes32"
213
+ },
175
214
  {
176
215
  "internalType": "bytes32",
177
216
  "name": "modulesRoot",
@@ -221,6 +260,11 @@
221
260
  "name": "functionsMerkleRoot",
222
261
  "type": "bytes32"
223
262
  },
263
+ {
264
+ "internalType": "bytes32",
265
+ "name": "extraHash",
266
+ "type": "bytes32"
267
+ },
224
268
  {
225
269
  "internalType": "uint32",
226
270
  "name": "internalsOffset",
@@ -299,6 +343,23 @@
299
343
  "name": "valueStack",
300
344
  "type": "tuple"
301
345
  },
346
+ {
347
+ "components": [
348
+ {
349
+ "internalType": "bytes32",
350
+ "name": "inactiveStackHash",
351
+ "type": "bytes32"
352
+ },
353
+ {
354
+ "internalType": "bytes32",
355
+ "name": "remainingHash",
356
+ "type": "bytes32"
357
+ }
358
+ ],
359
+ "internalType": "struct MultiStack",
360
+ "name": "valueMultiStack",
361
+ "type": "tuple"
362
+ },
302
363
  {
303
364
  "components": [
304
365
  {
@@ -386,6 +447,23 @@
386
447
  "name": "frameStack",
387
448
  "type": "tuple"
388
449
  },
450
+ {
451
+ "components": [
452
+ {
453
+ "internalType": "bytes32",
454
+ "name": "inactiveStackHash",
455
+ "type": "bytes32"
456
+ },
457
+ {
458
+ "internalType": "bytes32",
459
+ "name": "remainingHash",
460
+ "type": "bytes32"
461
+ }
462
+ ],
463
+ "internalType": "struct MultiStack",
464
+ "name": "frameMultiStack",
465
+ "type": "tuple"
466
+ },
389
467
  {
390
468
  "internalType": "bytes32",
391
469
  "name": "globalStateHash",
@@ -406,6 +484,11 @@
406
484
  "name": "functionPc",
407
485
  "type": "uint32"
408
486
  },
487
+ {
488
+ "internalType": "bytes32",
489
+ "name": "recoveryPc",
490
+ "type": "bytes32"
491
+ },
409
492
  {
410
493
  "internalType": "bytes32",
411
494
  "name": "modulesRoot",
@@ -455,6 +538,11 @@
455
538
  "name": "functionsMerkleRoot",
456
539
  "type": "bytes32"
457
540
  },
541
+ {
542
+ "internalType": "bytes32",
543
+ "name": "extraHash",
544
+ "type": "bytes32"
545
+ },
458
546
  {
459
547
  "internalType": "uint32",
460
548
  "name": "internalsOffset",
@@ -470,8 +558,8 @@
470
558
  "type": "function"
471
559
  }
472
560
  ],
473
- "bytecode": "0x608060405234801561001057600080fd5b50612364806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da78e7d114610030575b600080fd5b61004361003e3660046118ae565b61005a565b604051610051929190611ac0565b60405180910390f35b6100626117e3565b6040805160a0810182526000808252825160608082018552828252602080830184905282860184905284019190915292820181905291810182905260808101919091526100ae87611f63565b91506100bf36879003870187612066565b905060006100d060208701876120fd565b905061188c61ffff8216604514806100ec575061ffff82166050145b156100fa57506103096102eb565b604661ffff831610801590610122575061011660096046612137565b61ffff168261ffff1611155b1561013057506104226102eb565b606761ffff831610801590610158575061014c60026067612137565b61ffff168261ffff1611155b1561016657506105056102eb565b606a61ffff8316108015906101805750607861ffff831611155b1561018e575061056d6102eb565b605161ffff8316108015906101b657506101aa60096051612137565b61ffff168261ffff1611155b156101c4575061075a6102eb565b607961ffff8316108015906101ec57506101e060026079612137565b61ffff168261ffff1611155b156101fa57506107bf6102eb565b607c61ffff8316108015906102145750608a61ffff831611155b1561022257506108126102eb565b61ffff821660a7141561023857506109cd6102eb565b61ffff821660ac148061024f575061ffff821660ad145b1561025d57506109ee6102eb565b60c061ffff831610801590610277575060c461ffff831611155b156102855750610a426102eb565b60bc61ffff83161080159061029f575060bf61ffff831611155b156102ad5750610c576102eb565b60405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4f50434f444560901b60448201526064015b60405180910390fd5b6102fc84848989898663ffffffff16565b5050965096945050505050565b60006103188660200151610de2565b9050604561032960208601866120fd565b61ffff16141561036a5760008151600681111561034857610348611991565b146103655760405162461bcd60e51b81526004016102e29061215d565b6103e7565b605061037960208601866120fd565b61ffff1614156103b55760018151600681111561039857610398611991565b146103655760405162461bcd60e51b81526004016102e29061217e565b60405162461bcd60e51b81526020600482015260076024820152662120a22fa2a8ad60c91b60448201526064016102e2565b60008160200151600014156103fe57506001610402565b5060005b61041961040e82610e07565b602089015190610e3a565b50505050505050565b60006104396104348760200151610de2565b610e4a565b9050600061044d6104348860200151610de2565b90506000604661046060208801886120fd565b61046a919061219f565b905060008061ffff831660021480610486575061ffff83166004145b80610495575061ffff83166006145b806104a4575061ffff83166008145b156104c4576104b284610ec1565b91506104bd85610ec1565b90506104d2565b505063ffffffff8083169084165b60006104df838386610eed565b90506104f86104ed82611096565b60208d015190610e3a565b5050505050505050505050565b60006105176104348760200151610de2565b90506000606761052a60208701876120fd565b610534919061219f565b9050600061054a8363ffffffff168360206110c9565b905061056361055882610e07565b60208a015190610e3a565b5050505050505050565b600061057f6104348760200151610de2565b905060006105936104348860200151610de2565b9050600080606a6105a760208901896120fd565b6105b1919061219f565b90508061ffff166003141561062f5763ffffffff841615806105e957508260030b637fffffff191480156105e957508360030b600019145b15610612578860025b9081600381111561060557610605611991565b8152505050505050610753565b8360030b8360030b81610627576106276121c2565b059150610737565b8061ffff166005141561066c5763ffffffff841661064f578860026105f2565b8360030b8360030b81610664576106646121c2565b079150610737565b8061ffff16600a141561068c5763ffffffff8316601f85161b9150610737565b8061ffff16600c14156106ac5763ffffffff8316601f85161c9150610737565b8061ffff16600b14156106ca57600383900b601f85161d9150610737565b8061ffff16600d14156106e8576106e1838561128d565b9150610737565b8061ffff16600e14156106ff576106e183856112cf565b6000806107198563ffffffff168763ffffffff1685611311565b915091508015610733575050600289525061075392505050565b5091505b61074e61074383610e07565b60208b015190610e3a565b505050505b5050505050565b600061077161076c8760200151610de2565b611497565b9050600061078561076c8860200151610de2565b90506000605161079860208801886120fd565b6107a2919061219f565b905060006107b1838584610eed565b905061074e61074382611096565b60006107d161076c8760200151610de2565b9050600060796107e460208701876120fd565b6107ee919061219f565b905060006107fe838360406110c9565b63ffffffff1690506105636105588261150e565b600061082461076c8760200151610de2565b9050600061083861076c8860200151610de2565b9050600080607c61084c60208901896120fd565b610856919061219f565b90508061ffff16600314156108bf576001600160401b038416158061089557508260070b677fffffffffffffff1914801561089557508360070b600019145b156108a2578860026105f2565b8360070b8360070b816108b7576108b76121c2565b0591506109c1565b8061ffff16600514156108ff576001600160401b0384166108e2578860026105f2565b8360070b8360070b816108f7576108f76121c2565b0791506109c1565b8061ffff16600a1415610922576001600160401b038316603f85161b91506109c1565b8061ffff16600c1415610945576001600160401b038316603f85161c91506109c1565b8061ffff16600b141561096357600783900b603f85161d91506109c1565b8061ffff16600d14156109815761097a8385611544565b91506109c1565b8061ffff16600e14156109985761097a8385611592565b60006109a5848684611311565b909350905080156109bf5750506002885250610753915050565b505b61074e6107438361150e565b60006109df61076c8760200151610de2565b90508061041961040e82610e07565b6000610a006104348760200151610de2565b9050600060ac610a1360208701876120fd565b61ffff161415610a2d57610a2682610ec1565b9050610a36565b5063ffffffff81165b61041961040e8261150e565b60008060c0610a5460208701876120fd565b61ffff161415610a6a5750600090506008610b41565b60c1610a7960208701876120fd565b61ffff161415610a8f5750600090506010610b41565b60c2610a9e60208701876120fd565b61ffff161415610ab45750600190506008610b41565b60c3610ac360208701876120fd565b61ffff161415610ad95750600190506010610b41565b60c4610ae860208701876120fd565b61ffff161415610afe5750600190506020610b41565b60405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f455854454e445f53414d455f5459504560401b60448201526064016102e2565b600080836006811115610b5657610b56611991565b1415610b67575063ffffffff610b71565b506001600160401b035b6000610b808960200151610de2565b9050836006811115610b9457610b94611991565b81516006811115610ba757610ba7611991565b14610bf05760405162461bcd60e51b81526020600482015260196024820152784241445f455854454e445f53414d455f545950455f5459504560381b60448201526064016102e2565b6000610c03600160ff861681901b6121d8565b602083018051821690529050610c1a6001856121ef565b60ff166001901b826020015116600014610c3c57602082018051821985161790525b60208a0151610c4b9083610e3a565b50505050505050505050565b60008060bc610c6960208701876120fd565b61ffff161415610c7f5750600090506002610d2c565b60bd610c8e60208701876120fd565b61ffff161415610ca45750600190506003610d2c565b60be610cb360208701876120fd565b61ffff161415610cc95750600290506000610d2c565b60bf610cd860208701876120fd565b61ffff161415610cee5750600390506001610d2c565b60405162461bcd60e51b81526020600482015260136024820152721253959053125117d491525395115494149155606a1b60448201526064016102e2565b6000610d3b8860200151610de2565b9050816006811115610d4f57610d4f611991565b81516006811115610d6257610d62611991565b14610daa5760405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f5245494e544552505245545f5459504560401b60448201526064016102e2565b80836006811115610dbd57610dbd611991565b90816006811115610dd057610dd0611991565b90525060208801516105639082610e3a565b60408051808201909152600080825260208201528151610e01906115e0565b92915050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8151610e4690826116f0565b5050565b60208101516000908183516006811115610e6657610e66611991565b14610e835760405162461bcd60e51b81526004016102e29061215d565b6401000000008110610e015760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b60448201526064016102e2565b60006380000000821615610ee3575063ffffffff1667ffffffff000000001790565b5063ffffffff1690565b600061ffff8216610f1457826001600160401b0316846001600160401b031614905061108f565b61ffff821660011415610f3e57826001600160401b0316846001600160401b03161415905061108f565b61ffff821660021415610f5b578260070b8460070b12905061108f565b61ffff821660031415610f8457826001600160401b0316846001600160401b031610905061108f565b61ffff821660041415610fa1578260070b8460070b13905061108f565b61ffff821660051415610fca57826001600160401b0316846001600160401b031611905061108f565b61ffff821660061415610fe8578260070b8460070b1315905061108f565b61ffff82166007141561101257826001600160401b0316846001600160401b03161115905061108f565b61ffff821660081415611030578260070b8460070b1215905061108f565b61ffff82166009141561105a57826001600160401b0316846001600160401b03161015905061108f565b60405162461bcd60e51b815260206004820152600a6024820152690424144204952454c4f560b41b60448201526064016102e2565b9392505050565b604080518082019091526000808252602082015281156110ba57610e016001610e07565b610e016000610e07565b919050565b60008161ffff16602014806110e257508161ffff166040145b6111295760405162461bcd60e51b8152602060048201526018602482015277057524f4e4720555345204f462067656e65726963556e4f760441b60448201526064016102e2565b61ffff831661119a5761ffff82165b60008163ffffffff1611801561116d5750611154600182612212565b63ffffffff166001901b856001600160401b0316166000145b156111845761117d600182612212565b9050611138565b6111928161ffff8516612212565b91505061108f565b61ffff8316600114156111f35760005b8261ffff168163ffffffff161080156111d55750600163ffffffff82161b85166001600160401b0316155b156111ec576111e560018261222f565b90506111aa565b905061108f565b61ffff831660021415611259576000805b8361ffff168263ffffffff16101561125057600163ffffffff83161b86166001600160401b03161561123e5761123b60018261222f565b90505b816112488161224e565b925050611204565b915061108f9050565b60405162461bcd60e51b815260206004820152600960248201526804241442049556e4f760bc1b60448201526064016102e2565b600061129a602083612272565b91506112a7826020612212565b63ffffffff168363ffffffff16901c8263ffffffff168463ffffffff16901b17905092915050565b60006112dc602083612272565b91506112e9826020612212565b63ffffffff168363ffffffff16901b8263ffffffff168463ffffffff16901c17905092915050565b60008061ffff8316611329575050828201600061148f565b8261ffff1660011415611342575050818303600061148f565b8261ffff166002141561135b575050828202600061148f565b8261ffff16600414156113af576001600160401b038416611382575060009050600161148f565b836001600160401b0316856001600160401b0316816113a3576113a36121c2565b0460009150915061148f565b8261ffff1660061415611403576001600160401b0384166113d6575060009050600161148f565b836001600160401b0316856001600160401b0316816113f7576113f76121c2565b0660009150915061148f565b8261ffff166007141561141c575050828216600061148f565b8261ffff1660081415611435575050828217600061148f565b8261ffff166009141561144e575050828218600061148f565b60405162461bcd60e51b81526020600482015260166024820152750494e56414c49445f47454e455249435f42494e5f4f560541b60448201526064016102e2565b935093915050565b60208101516000906001835160068111156114b4576114b4611991565b146114d15760405162461bcd60e51b81526004016102e29061217e565b600160401b8110610e015760405162461bcd60e51b815260206004820152600760248201526610905117d24d8d60ca1b60448201526064016102e2565b60408051808201909152600080825260208201525060408051808201909152600181526001600160401b03909116602082015290565b6000611551604083612295565b915061155e8260406122af565b6001600160401b0316836001600160401b0316901c826001600160401b0316846001600160401b0316901b17905092915050565b600061159f604083612295565b91506115ac8260406122af565b6001600160401b0316836001600160401b0316901b826001600160401b0316846001600160401b0316901c17905092915050565b604080518082019091526000808252602082015281518051611604906001906121d8565b81518110611614576116146122cf565b602002602001015190506000600183600001515161163291906121d8565b6001600160401b0381111561164957611649611be8565b60405190808252806020026020018201604052801561168e57816020015b60408051808201909152600080825260208201528152602001906001900390816116675790505b50905060005b81518110156116e95783518051829081106116b1576116b16122cf565b60200260200101518282815181106116cb576116cb6122cf565b602002602001018190525080806116e1906122e5565b915050611694565b5090915290565b815151600090611701906001612300565b6001600160401b0381111561171857611718611be8565b60405190808252806020026020018201604052801561175d57816020015b60408051808201909152600080825260208201528152602001906001900390816117365790505b50905060005b8351518110156117b9578351805182908110611781576117816122cf565b602002602001015182828151811061179b5761179b6122cf565b602002602001018190525080806117b1906122e5565b915050611763565b508181846000015151815181106117d2576117d26122cf565b602090810291909101015290915250565b604080516101208101909152806000815260200161181860408051606080820183529181019182529081526000602082015290565b815260200161183e60408051606080820183529181019182529081526000602082015290565b8152602001611863604051806040016040528060608152602001600080191681525090565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b611894612318565b565b6000604082840312156118a857600080fd5b50919050565b6000806000806000808688036101a08112156118c957600080fd5b6118d38989611896565b965060408801356001600160401b03808211156118ef57600080fd5b90890190610120828c03121561190457600080fd5b81975060e0605f198401121561191957600080fd5b60608a01965061192d8b6101408c01611896565b95506101808a013592508083111561194457600080fd5b828a0192508a601f84011261195857600080fd5b823591508082111561196957600080fd5b5089602082840101111561197c57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600481106119b7576119b7611991565b9052565b8051600781106119cd576119cd611991565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611a2a57611a168286516119bb565b938201936001939093019290850190611a03565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611aa9578451611a758582516119bb565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611a60565b509687015197909601969096525093949350505050565b6000610100808352611ad581840186516119a7565b602085015161012084810152611aef6102208501826119da565b9050604086015160ff198086840301610140870152611b0e83836119da565b925060608801519150808684030161016087015250611b2d8282611a3e565b915050608086015161018085015260a0860151611b536101a086018263ffffffff169052565b5060c086015163ffffffff81166101c08601525060e086015163ffffffff81166101e08601525090850151610200840152905061108f60208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a083015263ffffffff60808201511660c08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611c2057611c20611be8565b60405290565b604051602081016001600160401b0381118282101715611c2057611c20611be8565b604051608081016001600160401b0381118282101715611c2057611c20611be8565b60405161012081016001600160401b0381118282101715611c2057611c20611be8565b60405160a081016001600160401b0381118282101715611c2057611c20611be8565b604051606081016001600160401b0381118282101715611c2057611c20611be8565b604051601f8201601f191681016001600160401b0381118282101715611cf957611cf9611be8565b604052919050565b8035600481106110c457600080fd5b60006001600160401b03821115611d2957611d29611be8565b5060051b60200190565b600060408284031215611d4557600080fd5b611d4d611bfe565b9050813560078110611d5e57600080fd5b808252506020820135602082015292915050565b60006040808385031215611d8557600080fd5b611d8d611bfe565b915082356001600160401b0380821115611da657600080fd5b81850191506020808388031215611dbc57600080fd5b611dc4611c26565b833583811115611dd357600080fd5b80850194505087601f850112611de857600080fd5b83359250611dfd611df884611d10565b611cd1565b83815260069390931b84018201928281019089851115611e1c57600080fd5b948301945b84861015611e4257611e338a87611d33565b82529486019490830190611e21565b8252508552948501359484019490945250909392505050565b803563ffffffff811681146110c457600080fd5b60006040808385031215611e8257600080fd5b611e8a611bfe565b915082356001600160401b03811115611ea257600080fd5b8301601f81018513611eb357600080fd5b80356020611ec3611df883611d10565b82815260a09283028401820192828201919089851115611ee257600080fd5b948301945b84861015611f4b5780868b031215611eff5760008081fd5b611f07611c48565b611f118b88611d33565b815287870135858201526060611f28818901611e5b565b89830152611f3860808901611e5b565b9082015283529485019491830191611ee7565b50808752505080860135818601525050505092915050565b60006101208236031215611f7657600080fd5b611f7e611c6a565b611f8783611d01565b815260208301356001600160401b0380821115611fa357600080fd5b611faf36838701611d72565b60208401526040850135915080821115611fc857600080fd5b611fd436838701611d72565b60408401526060850135915080821115611fed57600080fd5b50611ffa36828601611e6f565b6060830152506080830135608082015261201660a08401611e5b565b60a082015261202760c08401611e5b565b60c082015261203860e08401611e5b565b60e082015261010092830135928101929092525090565b80356001600160401b03811681146110c457600080fd5b600081830360e081121561207957600080fd5b612081611c8d565b833581526060601f198301121561209757600080fd5b61209f611caf565b91506120ad6020850161204f565b82526120bb6040850161204f565b6020830152606084013560408301528160208201526080840135604082015260a084013560608201526120f060c08501611e5b565b6080820152949350505050565b60006020828403121561210f57600080fd5b813561ffff8116811461108f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561215457612154612121565b01949350505050565b6020808252600790820152662727aa2fa4999960c91b604082015260600190565b6020808252600790820152661393d517d24d8d60ca1b604082015260600190565b600061ffff838116908316818110156121ba576121ba612121565b039392505050565b634e487b7160e01b600052601260045260246000fd5b6000828210156121ea576121ea612121565b500390565b600060ff821660ff84168082101561220957612209612121565b90039392505050565b600063ffffffff838116908316818110156121ba576121ba612121565b600063ffffffff80831681851680830382111561215457612154612121565b600063ffffffff8083168181141561226857612268612121565b6001019392505050565b600063ffffffff80841680612289576122896121c2565b92169190910692915050565b60006001600160401b0380841680612289576122896121c2565b60006001600160401b03838116908316818110156121ba576121ba612121565b634e487b7160e01b600052603260045260246000fd5b60006000198214156122f9576122f9612121565b5060010190565b6000821982111561231357612313612121565b500190565b634e487b7160e01b600052605160045260246000fdfea26469706673582212208cdd0c91426ca0112834314469b9e0d4da3b0321beb6ebc4c64e3bcb12a2065a64736f6c63430008090033",
474
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da78e7d114610030575b600080fd5b61004361003e3660046118ae565b61005a565b604051610051929190611ac0565b60405180910390f35b6100626117e3565b6040805160a0810182526000808252825160608082018552828252602080830184905282860184905284019190915292820181905291810182905260808101919091526100ae87611f63565b91506100bf36879003870187612066565b905060006100d060208701876120fd565b905061188c61ffff8216604514806100ec575061ffff82166050145b156100fa57506103096102eb565b604661ffff831610801590610122575061011660096046612137565b61ffff168261ffff1611155b1561013057506104226102eb565b606761ffff831610801590610158575061014c60026067612137565b61ffff168261ffff1611155b1561016657506105056102eb565b606a61ffff8316108015906101805750607861ffff831611155b1561018e575061056d6102eb565b605161ffff8316108015906101b657506101aa60096051612137565b61ffff168261ffff1611155b156101c4575061075a6102eb565b607961ffff8316108015906101ec57506101e060026079612137565b61ffff168261ffff1611155b156101fa57506107bf6102eb565b607c61ffff8316108015906102145750608a61ffff831611155b1561022257506108126102eb565b61ffff821660a7141561023857506109cd6102eb565b61ffff821660ac148061024f575061ffff821660ad145b1561025d57506109ee6102eb565b60c061ffff831610801590610277575060c461ffff831611155b156102855750610a426102eb565b60bc61ffff83161080159061029f575060bf61ffff831611155b156102ad5750610c576102eb565b60405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4f50434f444560901b60448201526064015b60405180910390fd5b6102fc84848989898663ffffffff16565b5050965096945050505050565b60006103188660200151610de2565b9050604561032960208601866120fd565b61ffff16141561036a5760008151600681111561034857610348611991565b146103655760405162461bcd60e51b81526004016102e29061215d565b6103e7565b605061037960208601866120fd565b61ffff1614156103b55760018151600681111561039857610398611991565b146103655760405162461bcd60e51b81526004016102e29061217e565b60405162461bcd60e51b81526020600482015260076024820152662120a22fa2a8ad60c91b60448201526064016102e2565b60008160200151600014156103fe57506001610402565b5060005b61041961040e82610e07565b602089015190610e3a565b50505050505050565b60006104396104348760200151610de2565b610e4a565b9050600061044d6104348860200151610de2565b90506000604661046060208801886120fd565b61046a919061219f565b905060008061ffff831660021480610486575061ffff83166004145b80610495575061ffff83166006145b806104a4575061ffff83166008145b156104c4576104b284610ec1565b91506104bd85610ec1565b90506104d2565b505063ffffffff8083169084165b60006104df838386610eed565b90506104f86104ed82611096565b60208d015190610e3a565b5050505050505050505050565b60006105176104348760200151610de2565b90506000606761052a60208701876120fd565b610534919061219f565b9050600061054a8363ffffffff168360206110c9565b905061056361055882610e07565b60208a015190610e3a565b5050505050505050565b600061057f6104348760200151610de2565b905060006105936104348860200151610de2565b9050600080606a6105a760208901896120fd565b6105b1919061219f565b90508061ffff166003141561062f5763ffffffff841615806105e957508260030b637fffffff191480156105e957508360030b600019145b15610612578860025b9081600381111561060557610605611991565b8152505050505050610753565b8360030b8360030b81610627576106276121c2565b059150610737565b8061ffff166005141561066c5763ffffffff841661064f578860026105f2565b8360030b8360030b81610664576106646121c2565b079150610737565b8061ffff16600a141561068c5763ffffffff8316601f85161b9150610737565b8061ffff16600c14156106ac5763ffffffff8316601f85161c9150610737565b8061ffff16600b14156106ca57600383900b601f85161d9150610737565b8061ffff16600d14156106e8576106e1838561128d565b9150610737565b8061ffff16600e14156106ff576106e183856112cf565b6000806107198563ffffffff168763ffffffff1685611311565b915091508015610733575050600289525061075392505050565b5091505b61074e61074383610e07565b60208b015190610e3a565b505050505b5050505050565b600061077161076c8760200151610de2565b611497565b9050600061078561076c8860200151610de2565b90506000605161079860208801886120fd565b6107a2919061219f565b905060006107b1838584610eed565b905061074e61074382611096565b60006107d161076c8760200151610de2565b9050600060796107e460208701876120fd565b6107ee919061219f565b905060006107fe838360406110c9565b63ffffffff1690506105636105588261150e565b600061082461076c8760200151610de2565b9050600061083861076c8860200151610de2565b9050600080607c61084c60208901896120fd565b610856919061219f565b90508061ffff16600314156108bf576001600160401b038416158061089557508260070b677fffffffffffffff1914801561089557508360070b600019145b156108a2578860026105f2565b8360070b8360070b816108b7576108b76121c2565b0591506109c1565b8061ffff16600514156108ff576001600160401b0384166108e2578860026105f2565b8360070b8360070b816108f7576108f76121c2565b0791506109c1565b8061ffff16600a1415610922576001600160401b038316603f85161b91506109c1565b8061ffff16600c1415610945576001600160401b038316603f85161c91506109c1565b8061ffff16600b141561096357600783900b603f85161d91506109c1565b8061ffff16600d14156109815761097a8385611544565b91506109c1565b8061ffff16600e14156109985761097a8385611592565b60006109a5848684611311565b909350905080156109bf5750506002885250610753915050565b505b61074e6107438361150e565b60006109df61076c8760200151610de2565b90508061041961040e82610e07565b6000610a006104348760200151610de2565b9050600060ac610a1360208701876120fd565b61ffff161415610a2d57610a2682610ec1565b9050610a36565b5063ffffffff81165b61041961040e8261150e565b60008060c0610a5460208701876120fd565b61ffff161415610a6a5750600090506008610b41565b60c1610a7960208701876120fd565b61ffff161415610a8f5750600090506010610b41565b60c2610a9e60208701876120fd565b61ffff161415610ab45750600190506008610b41565b60c3610ac360208701876120fd565b61ffff161415610ad95750600190506010610b41565b60c4610ae860208701876120fd565b61ffff161415610afe5750600190506020610b41565b60405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f455854454e445f53414d455f5459504560401b60448201526064016102e2565b600080836006811115610b5657610b56611991565b1415610b67575063ffffffff610b71565b506001600160401b035b6000610b808960200151610de2565b9050836006811115610b9457610b94611991565b81516006811115610ba757610ba7611991565b14610bf05760405162461bcd60e51b81526020600482015260196024820152784241445f455854454e445f53414d455f545950455f5459504560381b60448201526064016102e2565b6000610c03600160ff861681901b6121d8565b602083018051821690529050610c1a6001856121ef565b60ff166001901b826020015116600014610c3c57602082018051821985161790525b60208a0151610c4b9083610e3a565b50505050505050505050565b60008060bc610c6960208701876120fd565b61ffff161415610c7f5750600090506002610d2c565b60bd610c8e60208701876120fd565b61ffff161415610ca45750600190506003610d2c565b60be610cb360208701876120fd565b61ffff161415610cc95750600290506000610d2c565b60bf610cd860208701876120fd565b61ffff161415610cee5750600390506001610d2c565b60405162461bcd60e51b81526020600482015260136024820152721253959053125117d491525395115494149155606a1b60448201526064016102e2565b6000610d3b8860200151610de2565b9050816006811115610d4f57610d4f611991565b81516006811115610d6257610d62611991565b14610daa5760405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f5245494e544552505245545f5459504560401b60448201526064016102e2565b80836006811115610dbd57610dbd611991565b90816006811115610dd057610dd0611991565b90525060208801516105639082610e3a565b60408051808201909152600080825260208201528151610e01906115e0565b92915050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8151610e4690826116f0565b5050565b60208101516000908183516006811115610e6657610e66611991565b14610e835760405162461bcd60e51b81526004016102e29061215d565b6401000000008110610e015760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b60448201526064016102e2565b60006380000000821615610ee3575063ffffffff1667ffffffff000000001790565b5063ffffffff1690565b600061ffff8216610f1457826001600160401b0316846001600160401b031614905061108f565b61ffff821660011415610f3e57826001600160401b0316846001600160401b03161415905061108f565b61ffff821660021415610f5b578260070b8460070b12905061108f565b61ffff821660031415610f8457826001600160401b0316846001600160401b031610905061108f565b61ffff821660041415610fa1578260070b8460070b13905061108f565b61ffff821660051415610fca57826001600160401b0316846001600160401b031611905061108f565b61ffff821660061415610fe8578260070b8460070b1315905061108f565b61ffff82166007141561101257826001600160401b0316846001600160401b03161115905061108f565b61ffff821660081415611030578260070b8460070b1215905061108f565b61ffff82166009141561105a57826001600160401b0316846001600160401b03161015905061108f565b60405162461bcd60e51b815260206004820152600a6024820152690424144204952454c4f560b41b60448201526064016102e2565b9392505050565b604080518082019091526000808252602082015281156110ba57610e016001610e07565b610e016000610e07565b919050565b60008161ffff16602014806110e257508161ffff166040145b6111295760405162461bcd60e51b8152602060048201526018602482015277057524f4e4720555345204f462067656e65726963556e4f760441b60448201526064016102e2565b61ffff831661119a5761ffff82165b60008163ffffffff1611801561116d5750611154600182612212565b63ffffffff166001901b856001600160401b0316166000145b156111845761117d600182612212565b9050611138565b6111928161ffff8516612212565b91505061108f565b61ffff8316600114156111f35760005b8261ffff168163ffffffff161080156111d55750600163ffffffff82161b85166001600160401b0316155b156111ec576111e560018261222f565b90506111aa565b905061108f565b61ffff831660021415611259576000805b8361ffff168263ffffffff16101561125057600163ffffffff83161b86166001600160401b03161561123e5761123b60018261222f565b90505b816112488161224e565b925050611204565b915061108f9050565b60405162461bcd60e51b815260206004820152600960248201526804241442049556e4f760bc1b60448201526064016102e2565b600061129a602083612272565b91506112a7826020612212565b63ffffffff168363ffffffff16901c8263ffffffff168463ffffffff16901b17905092915050565b60006112dc602083612272565b91506112e9826020612212565b63ffffffff168363ffffffff16901b8263ffffffff168463ffffffff16901c17905092915050565b60008061ffff8316611329575050828201600061148f565b8261ffff1660011415611342575050818303600061148f565b8261ffff166002141561135b575050828202600061148f565b8261ffff16600414156113af576001600160401b038416611382575060009050600161148f565b836001600160401b0316856001600160401b0316816113a3576113a36121c2565b0460009150915061148f565b8261ffff1660061415611403576001600160401b0384166113d6575060009050600161148f565b836001600160401b0316856001600160401b0316816113f7576113f76121c2565b0660009150915061148f565b8261ffff166007141561141c575050828216600061148f565b8261ffff1660081415611435575050828217600061148f565b8261ffff166009141561144e575050828218600061148f565b60405162461bcd60e51b81526020600482015260166024820152750494e56414c49445f47454e455249435f42494e5f4f560541b60448201526064016102e2565b935093915050565b60208101516000906001835160068111156114b4576114b4611991565b146114d15760405162461bcd60e51b81526004016102e29061217e565b600160401b8110610e015760405162461bcd60e51b815260206004820152600760248201526610905117d24d8d60ca1b60448201526064016102e2565b60408051808201909152600080825260208201525060408051808201909152600181526001600160401b03909116602082015290565b6000611551604083612295565b915061155e8260406122af565b6001600160401b0316836001600160401b0316901c826001600160401b0316846001600160401b0316901b17905092915050565b600061159f604083612295565b91506115ac8260406122af565b6001600160401b0316836001600160401b0316901b826001600160401b0316846001600160401b0316901c17905092915050565b604080518082019091526000808252602082015281518051611604906001906121d8565b81518110611614576116146122cf565b602002602001015190506000600183600001515161163291906121d8565b6001600160401b0381111561164957611649611be8565b60405190808252806020026020018201604052801561168e57816020015b60408051808201909152600080825260208201528152602001906001900390816116675790505b50905060005b81518110156116e95783518051829081106116b1576116b16122cf565b60200260200101518282815181106116cb576116cb6122cf565b602002602001018190525080806116e1906122e5565b915050611694565b5090915290565b815151600090611701906001612300565b6001600160401b0381111561171857611718611be8565b60405190808252806020026020018201604052801561175d57816020015b60408051808201909152600080825260208201528152602001906001900390816117365790505b50905060005b8351518110156117b9578351805182908110611781576117816122cf565b602002602001015182828151811061179b5761179b6122cf565b602002602001018190525080806117b1906122e5565b915050611763565b508181846000015151815181106117d2576117d26122cf565b602090810291909101015290915250565b604080516101208101909152806000815260200161181860408051606080820183529181019182529081526000602082015290565b815260200161183e60408051606080820183529181019182529081526000602082015290565b8152602001611863604051806040016040528060608152602001600080191681525090565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b611894612318565b565b6000604082840312156118a857600080fd5b50919050565b6000806000806000808688036101a08112156118c957600080fd5b6118d38989611896565b965060408801356001600160401b03808211156118ef57600080fd5b90890190610120828c03121561190457600080fd5b81975060e0605f198401121561191957600080fd5b60608a01965061192d8b6101408c01611896565b95506101808a013592508083111561194457600080fd5b828a0192508a601f84011261195857600080fd5b823591508082111561196957600080fd5b5089602082840101111561197c57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600481106119b7576119b7611991565b9052565b8051600781106119cd576119cd611991565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611a2a57611a168286516119bb565b938201936001939093019290850190611a03565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611aa9578451611a758582516119bb565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611a60565b509687015197909601969096525093949350505050565b6000610100808352611ad581840186516119a7565b602085015161012084810152611aef6102208501826119da565b9050604086015160ff198086840301610140870152611b0e83836119da565b925060608801519150808684030161016087015250611b2d8282611a3e565b915050608086015161018085015260a0860151611b536101a086018263ffffffff169052565b5060c086015163ffffffff81166101c08601525060e086015163ffffffff81166101e08601525090850151610200840152905061108f60208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a083015263ffffffff60808201511660c08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611c2057611c20611be8565b60405290565b604051602081016001600160401b0381118282101715611c2057611c20611be8565b604051608081016001600160401b0381118282101715611c2057611c20611be8565b60405161012081016001600160401b0381118282101715611c2057611c20611be8565b60405160a081016001600160401b0381118282101715611c2057611c20611be8565b604051606081016001600160401b0381118282101715611c2057611c20611be8565b604051601f8201601f191681016001600160401b0381118282101715611cf957611cf9611be8565b604052919050565b8035600481106110c457600080fd5b60006001600160401b03821115611d2957611d29611be8565b5060051b60200190565b600060408284031215611d4557600080fd5b611d4d611bfe565b9050813560078110611d5e57600080fd5b808252506020820135602082015292915050565b60006040808385031215611d8557600080fd5b611d8d611bfe565b915082356001600160401b0380821115611da657600080fd5b81850191506020808388031215611dbc57600080fd5b611dc4611c26565b833583811115611dd357600080fd5b80850194505087601f850112611de857600080fd5b83359250611dfd611df884611d10565b611cd1565b83815260069390931b84018201928281019089851115611e1c57600080fd5b948301945b84861015611e4257611e338a87611d33565b82529486019490830190611e21565b8252508552948501359484019490945250909392505050565b803563ffffffff811681146110c457600080fd5b60006040808385031215611e8257600080fd5b611e8a611bfe565b915082356001600160401b03811115611ea257600080fd5b8301601f81018513611eb357600080fd5b80356020611ec3611df883611d10565b82815260a09283028401820192828201919089851115611ee257600080fd5b948301945b84861015611f4b5780868b031215611eff5760008081fd5b611f07611c48565b611f118b88611d33565b815287870135858201526060611f28818901611e5b565b89830152611f3860808901611e5b565b9082015283529485019491830191611ee7565b50808752505080860135818601525050505092915050565b60006101208236031215611f7657600080fd5b611f7e611c6a565b611f8783611d01565b815260208301356001600160401b0380821115611fa357600080fd5b611faf36838701611d72565b60208401526040850135915080821115611fc857600080fd5b611fd436838701611d72565b60408401526060850135915080821115611fed57600080fd5b50611ffa36828601611e6f565b6060830152506080830135608082015261201660a08401611e5b565b60a082015261202760c08401611e5b565b60c082015261203860e08401611e5b565b60e082015261010092830135928101929092525090565b80356001600160401b03811681146110c457600080fd5b600081830360e081121561207957600080fd5b612081611c8d565b833581526060601f198301121561209757600080fd5b61209f611caf565b91506120ad6020850161204f565b82526120bb6040850161204f565b6020830152606084013560408301528160208201526080840135604082015260a084013560608201526120f060c08501611e5b565b6080820152949350505050565b60006020828403121561210f57600080fd5b813561ffff8116811461108f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561215457612154612121565b01949350505050565b6020808252600790820152662727aa2fa4999960c91b604082015260600190565b6020808252600790820152661393d517d24d8d60ca1b604082015260600190565b600061ffff838116908316818110156121ba576121ba612121565b039392505050565b634e487b7160e01b600052601260045260246000fd5b6000828210156121ea576121ea612121565b500390565b600060ff821660ff84168082101561220957612209612121565b90039392505050565b600063ffffffff838116908316818110156121ba576121ba612121565b600063ffffffff80831681851680830382111561215457612154612121565b600063ffffffff8083168181141561226857612268612121565b6001019392505050565b600063ffffffff80841680612289576122896121c2565b92169190910692915050565b60006001600160401b0380841680612289576122896121c2565b60006001600160401b03838116908316818110156121ba576121ba612121565b634e487b7160e01b600052603260045260246000fd5b60006000198214156122f9576122f9612121565b5060010190565b6000821982111561231357612313612121565b500190565b634e487b7160e01b600052605160045260246000fdfea26469706673582212208cdd0c91426ca0112834314469b9e0d4da3b0321beb6ebc4c64e3bcb12a2065a64736f6c63430008090033",
561
+ "bytecode": "0x608060405234801561001057600080fd5b50612469806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633604366f14610030575b600080fd5b61004361003e3660046118ed565b61005a565b604051610051929190611b01565b60405180910390f35b6100626117ea565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a08101919091526100b587612024565b91506100c636879003870187612160565b905060006100d76020870187612202565b90506118cb61ffff8216604514806100f3575061ffff82166050145b1561010157506103106102f2565b604661ffff831610801590610129575061011d6009604661223c565b61ffff168261ffff1611155b1561013757506104296102f2565b606761ffff83161080159061015f57506101536002606761223c565b61ffff168261ffff1611155b1561016d575061050c6102f2565b606a61ffff8316108015906101875750607861ffff831611155b1561019557506105746102f2565b605161ffff8316108015906101bd57506101b16009605161223c565b61ffff168261ffff1611155b156101cb57506107616102f2565b607961ffff8316108015906101f357506101e76002607961223c565b61ffff168261ffff1611155b1561020157506107c66102f2565b607c61ffff83161080159061021b5750608a61ffff831611155b1561022957506108196102f2565b61ffff821660a7141561023f57506109d46102f2565b61ffff821660ac1480610256575061ffff821660ad145b1561026457506109f56102f2565b60c061ffff83161080159061027e575060c461ffff831611155b1561028c5750610a496102f2565b60bc61ffff8316108015906102a6575060bf61ffff831611155b156102b45750610c5e6102f2565b60405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4f50434f444560901b60448201526064015b60405180910390fd5b61030384848989898663ffffffff16565b5050965096945050505050565b600061031f8660200151610de9565b905060456103306020860186612202565b61ffff1614156103715760008151600681111561034f5761034f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612262565b6103ee565b60506103806020860186612202565b61ffff1614156103bc5760018151600681111561039f5761039f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612283565b60405162461bcd60e51b81526020600482015260076024820152662120a22fa2a8ad60c91b60448201526064016102e9565b600081602001516000141561040557506001610409565b5060005b61042061041582610e0e565b602089015190610e41565b50505050505050565b600061044061043b8760200151610de9565b610e51565b9050600061045461043b8860200151610de9565b9050600060466104676020880188612202565b61047191906122a4565b905060008061ffff83166002148061048d575061ffff83166004145b8061049c575061ffff83166006145b806104ab575061ffff83166008145b156104cb576104b984610ec8565b91506104c485610ec8565b90506104d9565b505063ffffffff8083169084165b60006104e6838386610ef4565b90506104ff6104f48261109d565b60208d015190610e41565b5050505050505050505050565b600061051e61043b8760200151610de9565b9050600060676105316020870187612202565b61053b91906122a4565b905060006105518363ffffffff168360206110d0565b905061056a61055f82610e0e565b60208a015190610e41565b5050505050505050565b600061058661043b8760200151610de9565b9050600061059a61043b8860200151610de9565b9050600080606a6105ae6020890189612202565b6105b891906122a4565b90508061ffff16600314156106365763ffffffff841615806105f057508260030b637fffffff191480156105f057508360030b600019145b15610619578860025b9081600381111561060c5761060c6119d2565b815250505050505061075a565b8360030b8360030b8161062e5761062e6122c7565b05915061073e565b8061ffff16600514156106735763ffffffff8416610656578860026105f9565b8360030b8360030b8161066b5761066b6122c7565b07915061073e565b8061ffff16600a14156106935763ffffffff8316601f85161b915061073e565b8061ffff16600c14156106b35763ffffffff8316601f85161c915061073e565b8061ffff16600b14156106d157600383900b601f85161d915061073e565b8061ffff16600d14156106ef576106e88385611294565b915061073e565b8061ffff16600e1415610706576106e883856112d6565b6000806107208563ffffffff168763ffffffff1685611318565b91509150801561073a575050600289525061075a92505050565b5091505b61075561074a83610e0e565b60208b015190610e41565b505050505b5050505050565b60006107786107738760200151610de9565b61149e565b9050600061078c6107738860200151610de9565b90506000605161079f6020880188612202565b6107a991906122a4565b905060006107b8838584610ef4565b905061075561074a8261109d565b60006107d86107738760200151610de9565b9050600060796107eb6020870187612202565b6107f591906122a4565b90506000610805838360406110d0565b63ffffffff16905061056a61055f82611515565b600061082b6107738760200151610de9565b9050600061083f6107738860200151610de9565b9050600080607c6108536020890189612202565b61085d91906122a4565b90508061ffff16600314156108c6576001600160401b038416158061089c57508260070b677fffffffffffffff1914801561089c57508360070b600019145b156108a9578860026105f9565b8360070b8360070b816108be576108be6122c7565b0591506109c8565b8061ffff1660051415610906576001600160401b0384166108e9578860026105f9565b8360070b8360070b816108fe576108fe6122c7565b0791506109c8565b8061ffff16600a1415610929576001600160401b038316603f85161b91506109c8565b8061ffff16600c141561094c576001600160401b038316603f85161c91506109c8565b8061ffff16600b141561096a57600783900b603f85161d91506109c8565b8061ffff16600d141561098857610981838561154b565b91506109c8565b8061ffff16600e141561099f576109818385611599565b60006109ac848684611318565b909350905080156109c6575050600288525061075a915050565b505b61075561074a83611515565b60006109e66107738760200151610de9565b90508061042061041582610e0e565b6000610a0761043b8760200151610de9565b9050600060ac610a1a6020870187612202565b61ffff161415610a3457610a2d82610ec8565b9050610a3d565b5063ffffffff81165b61042061041582611515565b60008060c0610a5b6020870187612202565b61ffff161415610a715750600090506008610b48565b60c1610a806020870187612202565b61ffff161415610a965750600090506010610b48565b60c2610aa56020870187612202565b61ffff161415610abb5750600190506008610b48565b60c3610aca6020870187612202565b61ffff161415610ae05750600190506010610b48565b60c4610aef6020870187612202565b61ffff161415610b055750600190506020610b48565b60405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f455854454e445f53414d455f5459504560401b60448201526064016102e9565b600080836006811115610b5d57610b5d6119d2565b1415610b6e575063ffffffff610b78565b506001600160401b035b6000610b878960200151610de9565b9050836006811115610b9b57610b9b6119d2565b81516006811115610bae57610bae6119d2565b14610bf75760405162461bcd60e51b81526020600482015260196024820152784241445f455854454e445f53414d455f545950455f5459504560381b60448201526064016102e9565b6000610c0a600160ff861681901b6122dd565b602083018051821690529050610c216001856122f4565b60ff166001901b826020015116600014610c4357602082018051821985161790525b60208a0151610c529083610e41565b50505050505050505050565b60008060bc610c706020870187612202565b61ffff161415610c865750600090506002610d33565b60bd610c956020870187612202565b61ffff161415610cab5750600190506003610d33565b60be610cba6020870187612202565b61ffff161415610cd05750600290506000610d33565b60bf610cdf6020870187612202565b61ffff161415610cf55750600390506001610d33565b60405162461bcd60e51b81526020600482015260136024820152721253959053125117d491525395115494149155606a1b60448201526064016102e9565b6000610d428860200151610de9565b9050816006811115610d5657610d566119d2565b81516006811115610d6957610d696119d2565b14610db15760405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f5245494e544552505245545f5459504560401b60448201526064016102e9565b80836006811115610dc457610dc46119d2565b90816006811115610dd757610dd76119d2565b905250602088015161056a9082610e41565b60408051808201909152600080825260208201528151610e08906115e7565b92915050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8151610e4d90826116f7565b5050565b60208101516000908183516006811115610e6d57610e6d6119d2565b14610e8a5760405162461bcd60e51b81526004016102e990612262565b6401000000008110610e085760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b60448201526064016102e9565b60006380000000821615610eea575063ffffffff1667ffffffff000000001790565b5063ffffffff1690565b600061ffff8216610f1b57826001600160401b0316846001600160401b0316149050611096565b61ffff821660011415610f4557826001600160401b0316846001600160401b031614159050611096565b61ffff821660021415610f62578260070b8460070b129050611096565b61ffff821660031415610f8b57826001600160401b0316846001600160401b0316109050611096565b61ffff821660041415610fa8578260070b8460070b139050611096565b61ffff821660051415610fd157826001600160401b0316846001600160401b0316119050611096565b61ffff821660061415610fef578260070b8460070b13159050611096565b61ffff82166007141561101957826001600160401b0316846001600160401b031611159050611096565b61ffff821660081415611037578260070b8460070b12159050611096565b61ffff82166009141561106157826001600160401b0316846001600160401b031610159050611096565b60405162461bcd60e51b815260206004820152600a6024820152690424144204952454c4f560b41b60448201526064016102e9565b9392505050565b604080518082019091526000808252602082015281156110c157610e086001610e0e565b610e086000610e0e565b919050565b60008161ffff16602014806110e957508161ffff166040145b6111305760405162461bcd60e51b8152602060048201526018602482015277057524f4e4720555345204f462067656e65726963556e4f760441b60448201526064016102e9565b61ffff83166111a15761ffff82165b60008163ffffffff16118015611174575061115b600182612317565b63ffffffff166001901b856001600160401b0316166000145b1561118b57611184600182612317565b905061113f565b6111998161ffff8516612317565b915050611096565b61ffff8316600114156111fa5760005b8261ffff168163ffffffff161080156111dc5750600163ffffffff82161b85166001600160401b0316155b156111f3576111ec600182612334565b90506111b1565b9050611096565b61ffff831660021415611260576000805b8361ffff168263ffffffff16101561125757600163ffffffff83161b86166001600160401b03161561124557611242600182612334565b90505b8161124f81612353565b92505061120b565b91506110969050565b60405162461bcd60e51b815260206004820152600960248201526804241442049556e4f760bc1b60448201526064016102e9565b60006112a1602083612377565b91506112ae826020612317565b63ffffffff168363ffffffff16901c8263ffffffff168463ffffffff16901b17905092915050565b60006112e3602083612377565b91506112f0826020612317565b63ffffffff168363ffffffff16901b8263ffffffff168463ffffffff16901c17905092915050565b60008061ffff83166113305750508282016000611496565b8261ffff16600114156113495750508183036000611496565b8261ffff16600214156113625750508282026000611496565b8261ffff16600414156113b6576001600160401b0384166113895750600090506001611496565b836001600160401b0316856001600160401b0316816113aa576113aa6122c7565b04600091509150611496565b8261ffff166006141561140a576001600160401b0384166113dd5750600090506001611496565b836001600160401b0316856001600160401b0316816113fe576113fe6122c7565b06600091509150611496565b8261ffff16600714156114235750508282166000611496565b8261ffff166008141561143c5750508282176000611496565b8261ffff16600914156114555750508282186000611496565b60405162461bcd60e51b81526020600482015260166024820152750494e56414c49445f47454e455249435f42494e5f4f560541b60448201526064016102e9565b935093915050565b60208101516000906001835160068111156114bb576114bb6119d2565b146114d85760405162461bcd60e51b81526004016102e990612283565b600160401b8110610e085760405162461bcd60e51b815260206004820152600760248201526610905117d24d8d60ca1b60448201526064016102e9565b60408051808201909152600080825260208201525060408051808201909152600181526001600160401b03909116602082015290565b600061155860408361239a565b91506115658260406123b4565b6001600160401b0316836001600160401b0316901c826001600160401b0316846001600160401b0316901b17905092915050565b60006115a660408361239a565b91506115b38260406123b4565b6001600160401b0316836001600160401b0316901b826001600160401b0316846001600160401b0316901c17905092915050565b60408051808201909152600080825260208201528151805161160b906001906122dd565b8151811061161b5761161b6123d4565b602002602001015190506000600183600001515161163991906122dd565b6001600160401b0381111561165057611650611c79565b60405190808252806020026020018201604052801561169557816020015b604080518082019091526000808252602082015281526020019060019003908161166e5790505b50905060005b81518110156116f05783518051829081106116b8576116b86123d4565b60200260200101518282815181106116d2576116d26123d4565b602002602001018190525080806116e8906123ea565b91505061169b565b5090915290565b815151600090611708906001612405565b6001600160401b0381111561171f5761171f611c79565b60405190808252806020026020018201604052801561176457816020015b604080518082019091526000808252602082015281526020019060019003908161173d5790505b50905060005b8351518110156117c0578351805182908110611788576117886123d4565b60200260200101518282815181106117a2576117a26123d4565b602002602001018190525080806117b8906123ea565b91505061176a565b508181846000015151815181106117d9576117d96123d4565b602090810291909101015290915250565b604080516101808101909152806000815260200161181f60408051606080820183529181019182529081526000602082015290565b815260408051808201825260008082526020808301919091528301520161185d60408051606080820183529181019182529081526000602082015290565b8152602001611882604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6118d361241d565b565b6000604082840312156118e757600080fd5b50919050565b6000806000806000808688036101c08082121561190957600080fd5b6119138a8a6118d5565b975060408901356001600160401b038082111561192f57600080fd5b818b01915082828d03121561194357600080fd5b819850610100605f198501121561195957600080fd5b60608b01975061196d8c6101608d016118d5565b96506101a08b013593508084111561198457600080fd5b838b0193508b601f85011261199857600080fd5b83359250808311156119a957600080fd5b50508960208284010111156119bd57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600481106119f8576119f86119d2565b9052565b805160078110611a0e57611a0e6119d2565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611a6b57611a578286516119fc565b938201936001939093019290850190611a44565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611aea578451611ab68582516119fc565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611aa1565b509687015197909601969096525093949350505050565b6000610120808352611b1681840186516119e8565b60208501516101c06101408181870152611b346102e0870184611a1b565b92506040880151610160611b548189018380518252602090810151910152565b60608a0151915061011f1980898703016101a08a0152611b748684611a1b565b955060808b015192508089870301858a015250611b918583611a7f565b60a08b015180516101e08b015260208101516102008b0152909550935060c08a015161022089015260e08a015163ffffffff81166102408a015293506101008a015163ffffffff81166102608a015293509489015163ffffffff811661028089015294918901516102a0880152508701516102c0860152509150611096905060208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611cb157611cb1611c79565b60405290565b604051602081016001600160401b0381118282101715611cb157611cb1611c79565b604051608081016001600160401b0381118282101715611cb157611cb1611c79565b60405161018081016001600160401b0381118282101715611cb157611cb1611c79565b60405160c081016001600160401b0381118282101715611cb157611cb1611c79565b604051606081016001600160401b0381118282101715611cb157611cb1611c79565b604051601f8201601f191681016001600160401b0381118282101715611d8a57611d8a611c79565b604052919050565b8035600481106110cb57600080fd5b60006001600160401b03821115611dba57611dba611c79565b5060051b60200190565b600060408284031215611dd657600080fd5b611dde611c8f565b9050813560078110611def57600080fd5b808252506020820135602082015292915050565b60006040808385031215611e1657600080fd5b611e1e611c8f565b915082356001600160401b0380821115611e3757600080fd5b81850191506020808388031215611e4d57600080fd5b611e55611cb7565b833583811115611e6457600080fd5b80850194505087601f850112611e7957600080fd5b83359250611e8e611e8984611da1565b611d62565b83815260069390931b84018201928281019089851115611ead57600080fd5b948301945b84861015611ed357611ec48a87611dc4565b82529486019490830190611eb2565b8252508552948501359484019490945250909392505050565b600060408284031215611efe57600080fd5b611f06611c8f565b9050813581526020820135602082015292915050565b803563ffffffff811681146110cb57600080fd5b60006040808385031215611f4357600080fd5b611f4b611c8f565b915082356001600160401b03811115611f6357600080fd5b8301601f81018513611f7457600080fd5b80356020611f84611e8983611da1565b82815260a09283028401820192828201919089851115611fa357600080fd5b948301945b8486101561200c5780868b031215611fc05760008081fd5b611fc8611cd9565b611fd28b88611dc4565b815287870135858201526060611fe9818901611f1c565b89830152611ff960808901611f1c565b9082015283529485019491830191611fa8565b50808752505080860135818601525050505092915050565b60006101c0823603121561203757600080fd5b61203f611cfb565b61204883611d92565b815260208301356001600160401b038082111561206457600080fd5b61207036838701611e03565b60208401526120823660408701611eec565b6040840152608085013591508082111561209b57600080fd5b6120a736838701611e03565b606084015260a08501359150808211156120c057600080fd5b506120cd36828601611f30565b6080830152506120e03660c08501611eec565b60a08201526101008084013560c08301526101206120ff818601611f1c565b60e0840152610140612112818701611f1c565b838501526101609250612126838701611f1c565b91840191909152610180850135908301526101a090930135928101929092525090565b80356001600160401b03811681146110cb57600080fd5b600081830361010081121561217457600080fd5b61217c611d1e565b833581526060601f198301121561219257600080fd5b61219a611d40565b91506121a860208501612149565b82526121b660408501612149565b6020830152606084013560408301528160208201526080840135604082015260a0840135606082015260c084013560808201526121f560e08501611f1c565b60a0820152949350505050565b60006020828403121561221457600080fd5b813561ffff8116811461109657600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561225957612259612226565b01949350505050565b6020808252600790820152662727aa2fa4999960c91b604082015260600190565b6020808252600790820152661393d517d24d8d60ca1b604082015260600190565b600061ffff838116908316818110156122bf576122bf612226565b039392505050565b634e487b7160e01b600052601260045260246000fd5b6000828210156122ef576122ef612226565b500390565b600060ff821660ff84168082101561230e5761230e612226565b90039392505050565b600063ffffffff838116908316818110156122bf576122bf612226565b600063ffffffff80831681851680830382111561225957612259612226565b600063ffffffff8083168181141561236d5761236d612226565b6001019392505050565b600063ffffffff8084168061238e5761238e6122c7565b92169190910692915050565b60006001600160401b038084168061238e5761238e6122c7565b60006001600160401b03838116908316818110156122bf576122bf612226565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123fe576123fe612226565b5060010190565b6000821982111561241857612418612226565b500190565b634e487b7160e01b600052605160045260246000fdfea2646970667358221220fc8fd4b42f5280ec9682c5446179e074592ebc574b83ff120770d3faceaa97a964736f6c63430008090033",
562
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633604366f14610030575b600080fd5b61004361003e3660046118ed565b61005a565b604051610051929190611b01565b60405180910390f35b6100626117ea565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a08101919091526100b587612024565b91506100c636879003870187612160565b905060006100d76020870187612202565b90506118cb61ffff8216604514806100f3575061ffff82166050145b1561010157506103106102f2565b604661ffff831610801590610129575061011d6009604661223c565b61ffff168261ffff1611155b1561013757506104296102f2565b606761ffff83161080159061015f57506101536002606761223c565b61ffff168261ffff1611155b1561016d575061050c6102f2565b606a61ffff8316108015906101875750607861ffff831611155b1561019557506105746102f2565b605161ffff8316108015906101bd57506101b16009605161223c565b61ffff168261ffff1611155b156101cb57506107616102f2565b607961ffff8316108015906101f357506101e76002607961223c565b61ffff168261ffff1611155b1561020157506107c66102f2565b607c61ffff83161080159061021b5750608a61ffff831611155b1561022957506108196102f2565b61ffff821660a7141561023f57506109d46102f2565b61ffff821660ac1480610256575061ffff821660ad145b1561026457506109f56102f2565b60c061ffff83161080159061027e575060c461ffff831611155b1561028c5750610a496102f2565b60bc61ffff8316108015906102a6575060bf61ffff831611155b156102b45750610c5e6102f2565b60405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f4f50434f444560901b60448201526064015b60405180910390fd5b61030384848989898663ffffffff16565b5050965096945050505050565b600061031f8660200151610de9565b905060456103306020860186612202565b61ffff1614156103715760008151600681111561034f5761034f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612262565b6103ee565b60506103806020860186612202565b61ffff1614156103bc5760018151600681111561039f5761039f6119d2565b1461036c5760405162461bcd60e51b81526004016102e990612283565b60405162461bcd60e51b81526020600482015260076024820152662120a22fa2a8ad60c91b60448201526064016102e9565b600081602001516000141561040557506001610409565b5060005b61042061041582610e0e565b602089015190610e41565b50505050505050565b600061044061043b8760200151610de9565b610e51565b9050600061045461043b8860200151610de9565b9050600060466104676020880188612202565b61047191906122a4565b905060008061ffff83166002148061048d575061ffff83166004145b8061049c575061ffff83166006145b806104ab575061ffff83166008145b156104cb576104b984610ec8565b91506104c485610ec8565b90506104d9565b505063ffffffff8083169084165b60006104e6838386610ef4565b90506104ff6104f48261109d565b60208d015190610e41565b5050505050505050505050565b600061051e61043b8760200151610de9565b9050600060676105316020870187612202565b61053b91906122a4565b905060006105518363ffffffff168360206110d0565b905061056a61055f82610e0e565b60208a015190610e41565b5050505050505050565b600061058661043b8760200151610de9565b9050600061059a61043b8860200151610de9565b9050600080606a6105ae6020890189612202565b6105b891906122a4565b90508061ffff16600314156106365763ffffffff841615806105f057508260030b637fffffff191480156105f057508360030b600019145b15610619578860025b9081600381111561060c5761060c6119d2565b815250505050505061075a565b8360030b8360030b8161062e5761062e6122c7565b05915061073e565b8061ffff16600514156106735763ffffffff8416610656578860026105f9565b8360030b8360030b8161066b5761066b6122c7565b07915061073e565b8061ffff16600a14156106935763ffffffff8316601f85161b915061073e565b8061ffff16600c14156106b35763ffffffff8316601f85161c915061073e565b8061ffff16600b14156106d157600383900b601f85161d915061073e565b8061ffff16600d14156106ef576106e88385611294565b915061073e565b8061ffff16600e1415610706576106e883856112d6565b6000806107208563ffffffff168763ffffffff1685611318565b91509150801561073a575050600289525061075a92505050565b5091505b61075561074a83610e0e565b60208b015190610e41565b505050505b5050505050565b60006107786107738760200151610de9565b61149e565b9050600061078c6107738860200151610de9565b90506000605161079f6020880188612202565b6107a991906122a4565b905060006107b8838584610ef4565b905061075561074a8261109d565b60006107d86107738760200151610de9565b9050600060796107eb6020870187612202565b6107f591906122a4565b90506000610805838360406110d0565b63ffffffff16905061056a61055f82611515565b600061082b6107738760200151610de9565b9050600061083f6107738860200151610de9565b9050600080607c6108536020890189612202565b61085d91906122a4565b90508061ffff16600314156108c6576001600160401b038416158061089c57508260070b677fffffffffffffff1914801561089c57508360070b600019145b156108a9578860026105f9565b8360070b8360070b816108be576108be6122c7565b0591506109c8565b8061ffff1660051415610906576001600160401b0384166108e9578860026105f9565b8360070b8360070b816108fe576108fe6122c7565b0791506109c8565b8061ffff16600a1415610929576001600160401b038316603f85161b91506109c8565b8061ffff16600c141561094c576001600160401b038316603f85161c91506109c8565b8061ffff16600b141561096a57600783900b603f85161d91506109c8565b8061ffff16600d141561098857610981838561154b565b91506109c8565b8061ffff16600e141561099f576109818385611599565b60006109ac848684611318565b909350905080156109c6575050600288525061075a915050565b505b61075561074a83611515565b60006109e66107738760200151610de9565b90508061042061041582610e0e565b6000610a0761043b8760200151610de9565b9050600060ac610a1a6020870187612202565b61ffff161415610a3457610a2d82610ec8565b9050610a3d565b5063ffffffff81165b61042061041582611515565b60008060c0610a5b6020870187612202565b61ffff161415610a715750600090506008610b48565b60c1610a806020870187612202565b61ffff161415610a965750600090506010610b48565b60c2610aa56020870187612202565b61ffff161415610abb5750600190506008610b48565b60c3610aca6020870187612202565b61ffff161415610ae05750600190506010610b48565b60c4610aef6020870187612202565b61ffff161415610b055750600190506020610b48565b60405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f455854454e445f53414d455f5459504560401b60448201526064016102e9565b600080836006811115610b5d57610b5d6119d2565b1415610b6e575063ffffffff610b78565b506001600160401b035b6000610b878960200151610de9565b9050836006811115610b9b57610b9b6119d2565b81516006811115610bae57610bae6119d2565b14610bf75760405162461bcd60e51b81526020600482015260196024820152784241445f455854454e445f53414d455f545950455f5459504560381b60448201526064016102e9565b6000610c0a600160ff861681901b6122dd565b602083018051821690529050610c216001856122f4565b60ff166001901b826020015116600014610c4357602082018051821985161790525b60208a0151610c529083610e41565b50505050505050505050565b60008060bc610c706020870187612202565b61ffff161415610c865750600090506002610d33565b60bd610c956020870187612202565b61ffff161415610cab5750600190506003610d33565b60be610cba6020870187612202565b61ffff161415610cd05750600290506000610d33565b60bf610cdf6020870187612202565b61ffff161415610cf55750600390506001610d33565b60405162461bcd60e51b81526020600482015260136024820152721253959053125117d491525395115494149155606a1b60448201526064016102e9565b6000610d428860200151610de9565b9050816006811115610d5657610d566119d2565b81516006811115610d6957610d696119d2565b14610db15760405162461bcd60e51b8152602060048201526018602482015277494e56414c49445f5245494e544552505245545f5459504560401b60448201526064016102e9565b80836006811115610dc457610dc46119d2565b90816006811115610dd757610dd76119d2565b905250602088015161056a9082610e41565b60408051808201909152600080825260208201528151610e08906115e7565b92915050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b8151610e4d90826116f7565b5050565b60208101516000908183516006811115610e6d57610e6d6119d2565b14610e8a5760405162461bcd60e51b81526004016102e990612262565b6401000000008110610e085760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b60448201526064016102e9565b60006380000000821615610eea575063ffffffff1667ffffffff000000001790565b5063ffffffff1690565b600061ffff8216610f1b57826001600160401b0316846001600160401b0316149050611096565b61ffff821660011415610f4557826001600160401b0316846001600160401b031614159050611096565b61ffff821660021415610f62578260070b8460070b129050611096565b61ffff821660031415610f8b57826001600160401b0316846001600160401b0316109050611096565b61ffff821660041415610fa8578260070b8460070b139050611096565b61ffff821660051415610fd157826001600160401b0316846001600160401b0316119050611096565b61ffff821660061415610fef578260070b8460070b13159050611096565b61ffff82166007141561101957826001600160401b0316846001600160401b031611159050611096565b61ffff821660081415611037578260070b8460070b12159050611096565b61ffff82166009141561106157826001600160401b0316846001600160401b031610159050611096565b60405162461bcd60e51b815260206004820152600a6024820152690424144204952454c4f560b41b60448201526064016102e9565b9392505050565b604080518082019091526000808252602082015281156110c157610e086001610e0e565b610e086000610e0e565b919050565b60008161ffff16602014806110e957508161ffff166040145b6111305760405162461bcd60e51b8152602060048201526018602482015277057524f4e4720555345204f462067656e65726963556e4f760441b60448201526064016102e9565b61ffff83166111a15761ffff82165b60008163ffffffff16118015611174575061115b600182612317565b63ffffffff166001901b856001600160401b0316166000145b1561118b57611184600182612317565b905061113f565b6111998161ffff8516612317565b915050611096565b61ffff8316600114156111fa5760005b8261ffff168163ffffffff161080156111dc5750600163ffffffff82161b85166001600160401b0316155b156111f3576111ec600182612334565b90506111b1565b9050611096565b61ffff831660021415611260576000805b8361ffff168263ffffffff16101561125757600163ffffffff83161b86166001600160401b03161561124557611242600182612334565b90505b8161124f81612353565b92505061120b565b91506110969050565b60405162461bcd60e51b815260206004820152600960248201526804241442049556e4f760bc1b60448201526064016102e9565b60006112a1602083612377565b91506112ae826020612317565b63ffffffff168363ffffffff16901c8263ffffffff168463ffffffff16901b17905092915050565b60006112e3602083612377565b91506112f0826020612317565b63ffffffff168363ffffffff16901b8263ffffffff168463ffffffff16901c17905092915050565b60008061ffff83166113305750508282016000611496565b8261ffff16600114156113495750508183036000611496565b8261ffff16600214156113625750508282026000611496565b8261ffff16600414156113b6576001600160401b0384166113895750600090506001611496565b836001600160401b0316856001600160401b0316816113aa576113aa6122c7565b04600091509150611496565b8261ffff166006141561140a576001600160401b0384166113dd5750600090506001611496565b836001600160401b0316856001600160401b0316816113fe576113fe6122c7565b06600091509150611496565b8261ffff16600714156114235750508282166000611496565b8261ffff166008141561143c5750508282176000611496565b8261ffff16600914156114555750508282186000611496565b60405162461bcd60e51b81526020600482015260166024820152750494e56414c49445f47454e455249435f42494e5f4f560541b60448201526064016102e9565b935093915050565b60208101516000906001835160068111156114bb576114bb6119d2565b146114d85760405162461bcd60e51b81526004016102e990612283565b600160401b8110610e085760405162461bcd60e51b815260206004820152600760248201526610905117d24d8d60ca1b60448201526064016102e9565b60408051808201909152600080825260208201525060408051808201909152600181526001600160401b03909116602082015290565b600061155860408361239a565b91506115658260406123b4565b6001600160401b0316836001600160401b0316901c826001600160401b0316846001600160401b0316901b17905092915050565b60006115a660408361239a565b91506115b38260406123b4565b6001600160401b0316836001600160401b0316901b826001600160401b0316846001600160401b0316901c17905092915050565b60408051808201909152600080825260208201528151805161160b906001906122dd565b8151811061161b5761161b6123d4565b602002602001015190506000600183600001515161163991906122dd565b6001600160401b0381111561165057611650611c79565b60405190808252806020026020018201604052801561169557816020015b604080518082019091526000808252602082015281526020019060019003908161166e5790505b50905060005b81518110156116f05783518051829081106116b8576116b86123d4565b60200260200101518282815181106116d2576116d26123d4565b602002602001018190525080806116e8906123ea565b91505061169b565b5090915290565b815151600090611708906001612405565b6001600160401b0381111561171f5761171f611c79565b60405190808252806020026020018201604052801561176457816020015b604080518082019091526000808252602082015281526020019060019003908161173d5790505b50905060005b8351518110156117c0578351805182908110611788576117886123d4565b60200260200101518282815181106117a2576117a26123d4565b602002602001018190525080806117b8906123ea565b91505061176a565b508181846000015151815181106117d9576117d96123d4565b602090810291909101015290915250565b604080516101808101909152806000815260200161181f60408051606080820183529181019182529081526000602082015290565b815260408051808201825260008082526020808301919091528301520161185d60408051606080820183529181019182529081526000602082015290565b8152602001611882604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6118d361241d565b565b6000604082840312156118e757600080fd5b50919050565b6000806000806000808688036101c08082121561190957600080fd5b6119138a8a6118d5565b975060408901356001600160401b038082111561192f57600080fd5b818b01915082828d03121561194357600080fd5b819850610100605f198501121561195957600080fd5b60608b01975061196d8c6101608d016118d5565b96506101a08b013593508084111561198457600080fd5b838b0193508b601f85011261199857600080fd5b83359250808311156119a957600080fd5b50508960208284010111156119bd57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600481106119f8576119f86119d2565b9052565b805160078110611a0e57611a0e6119d2565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611a6b57611a578286516119fc565b938201936001939093019290850190611a44565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611aea578451611ab68582516119fc565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611aa1565b509687015197909601969096525093949350505050565b6000610120808352611b1681840186516119e8565b60208501516101c06101408181870152611b346102e0870184611a1b565b92506040880151610160611b548189018380518252602090810151910152565b60608a0151915061011f1980898703016101a08a0152611b748684611a1b565b955060808b015192508089870301858a015250611b918583611a7f565b60a08b015180516101e08b015260208101516102008b0152909550935060c08a015161022089015260e08a015163ffffffff81166102408a015293506101008a015163ffffffff81166102608a015293509489015163ffffffff811661028089015294918901516102a0880152508701516102c0860152509150611096905060208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611cb157611cb1611c79565b60405290565b604051602081016001600160401b0381118282101715611cb157611cb1611c79565b604051608081016001600160401b0381118282101715611cb157611cb1611c79565b60405161018081016001600160401b0381118282101715611cb157611cb1611c79565b60405160c081016001600160401b0381118282101715611cb157611cb1611c79565b604051606081016001600160401b0381118282101715611cb157611cb1611c79565b604051601f8201601f191681016001600160401b0381118282101715611d8a57611d8a611c79565b604052919050565b8035600481106110cb57600080fd5b60006001600160401b03821115611dba57611dba611c79565b5060051b60200190565b600060408284031215611dd657600080fd5b611dde611c8f565b9050813560078110611def57600080fd5b808252506020820135602082015292915050565b60006040808385031215611e1657600080fd5b611e1e611c8f565b915082356001600160401b0380821115611e3757600080fd5b81850191506020808388031215611e4d57600080fd5b611e55611cb7565b833583811115611e6457600080fd5b80850194505087601f850112611e7957600080fd5b83359250611e8e611e8984611da1565b611d62565b83815260069390931b84018201928281019089851115611ead57600080fd5b948301945b84861015611ed357611ec48a87611dc4565b82529486019490830190611eb2565b8252508552948501359484019490945250909392505050565b600060408284031215611efe57600080fd5b611f06611c8f565b9050813581526020820135602082015292915050565b803563ffffffff811681146110cb57600080fd5b60006040808385031215611f4357600080fd5b611f4b611c8f565b915082356001600160401b03811115611f6357600080fd5b8301601f81018513611f7457600080fd5b80356020611f84611e8983611da1565b82815260a09283028401820192828201919089851115611fa357600080fd5b948301945b8486101561200c5780868b031215611fc05760008081fd5b611fc8611cd9565b611fd28b88611dc4565b815287870135858201526060611fe9818901611f1c565b89830152611ff960808901611f1c565b9082015283529485019491830191611fa8565b50808752505080860135818601525050505092915050565b60006101c0823603121561203757600080fd5b61203f611cfb565b61204883611d92565b815260208301356001600160401b038082111561206457600080fd5b61207036838701611e03565b60208401526120823660408701611eec565b6040840152608085013591508082111561209b57600080fd5b6120a736838701611e03565b606084015260a08501359150808211156120c057600080fd5b506120cd36828601611f30565b6080830152506120e03660c08501611eec565b60a08201526101008084013560c08301526101206120ff818601611f1c565b60e0840152610140612112818701611f1c565b838501526101609250612126838701611f1c565b91840191909152610180850135908301526101a090930135928101929092525090565b80356001600160401b03811681146110cb57600080fd5b600081830361010081121561217457600080fd5b61217c611d1e565b833581526060601f198301121561219257600080fd5b61219a611d40565b91506121a860208501612149565b82526121b660408501612149565b6020830152606084013560408301528160208201526080840135604082015260a0840135606082015260c084013560808201526121f560e08501611f1c565b60a0820152949350505050565b60006020828403121561221457600080fd5b813561ffff8116811461109657600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff80831681851680830382111561225957612259612226565b01949350505050565b6020808252600790820152662727aa2fa4999960c91b604082015260600190565b6020808252600790820152661393d517d24d8d60ca1b604082015260600190565b600061ffff838116908316818110156122bf576122bf612226565b039392505050565b634e487b7160e01b600052601260045260246000fd5b6000828210156122ef576122ef612226565b500390565b600060ff821660ff84168082101561230e5761230e612226565b90039392505050565b600063ffffffff838116908316818110156122bf576122bf612226565b600063ffffffff80831681851680830382111561225957612259612226565b600063ffffffff8083168181141561236d5761236d612226565b6001019392505050565b600063ffffffff8084168061238e5761238e6122c7565b92169190910692915050565b60006001600160401b038084168061238e5761238e6122c7565b60006001600160401b03838116908316818110156122bf576122bf612226565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123fe576123fe612226565b5060010190565b6000821982111561241857612418612226565b500190565b634e487b7160e01b600052605160045260246000fdfea2646970667358221220fc8fd4b42f5280ec9682c5446179e074592ebc574b83ff120770d3faceaa97a964736f6c63430008090033",
475
563
  "linkReferences": {},
476
564
  "deployedLinkReferences": {}
477
565
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/06c4d509e20993c3089a7fd027c7b28b.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -65,6 +65,23 @@
65
65
  "name": "valueStack",
66
66
  "type": "tuple"
67
67
  },
68
+ {
69
+ "components": [
70
+ {
71
+ "internalType": "bytes32",
72
+ "name": "inactiveStackHash",
73
+ "type": "bytes32"
74
+ },
75
+ {
76
+ "internalType": "bytes32",
77
+ "name": "remainingHash",
78
+ "type": "bytes32"
79
+ }
80
+ ],
81
+ "internalType": "struct MultiStack",
82
+ "name": "valueMultiStack",
83
+ "type": "tuple"
84
+ },
68
85
  {
69
86
  "components": [
70
87
  {
@@ -152,6 +169,23 @@
152
169
  "name": "frameStack",
153
170
  "type": "tuple"
154
171
  },
172
+ {
173
+ "components": [
174
+ {
175
+ "internalType": "bytes32",
176
+ "name": "inactiveStackHash",
177
+ "type": "bytes32"
178
+ },
179
+ {
180
+ "internalType": "bytes32",
181
+ "name": "remainingHash",
182
+ "type": "bytes32"
183
+ }
184
+ ],
185
+ "internalType": "struct MultiStack",
186
+ "name": "frameMultiStack",
187
+ "type": "tuple"
188
+ },
155
189
  {
156
190
  "internalType": "bytes32",
157
191
  "name": "globalStateHash",
@@ -172,6 +206,11 @@
172
206
  "name": "functionPc",
173
207
  "type": "uint32"
174
208
  },
209
+ {
210
+ "internalType": "bytes32",
211
+ "name": "recoveryPc",
212
+ "type": "bytes32"
213
+ },
175
214
  {
176
215
  "internalType": "bytes32",
177
216
  "name": "modulesRoot",
@@ -221,6 +260,11 @@
221
260
  "name": "functionsMerkleRoot",
222
261
  "type": "bytes32"
223
262
  },
263
+ {
264
+ "internalType": "bytes32",
265
+ "name": "extraHash",
266
+ "type": "bytes32"
267
+ },
224
268
  {
225
269
  "internalType": "uint32",
226
270
  "name": "internalsOffset",
@@ -299,6 +343,23 @@
299
343
  "name": "valueStack",
300
344
  "type": "tuple"
301
345
  },
346
+ {
347
+ "components": [
348
+ {
349
+ "internalType": "bytes32",
350
+ "name": "inactiveStackHash",
351
+ "type": "bytes32"
352
+ },
353
+ {
354
+ "internalType": "bytes32",
355
+ "name": "remainingHash",
356
+ "type": "bytes32"
357
+ }
358
+ ],
359
+ "internalType": "struct MultiStack",
360
+ "name": "valueMultiStack",
361
+ "type": "tuple"
362
+ },
302
363
  {
303
364
  "components": [
304
365
  {
@@ -386,6 +447,23 @@
386
447
  "name": "frameStack",
387
448
  "type": "tuple"
388
449
  },
450
+ {
451
+ "components": [
452
+ {
453
+ "internalType": "bytes32",
454
+ "name": "inactiveStackHash",
455
+ "type": "bytes32"
456
+ },
457
+ {
458
+ "internalType": "bytes32",
459
+ "name": "remainingHash",
460
+ "type": "bytes32"
461
+ }
462
+ ],
463
+ "internalType": "struct MultiStack",
464
+ "name": "frameMultiStack",
465
+ "type": "tuple"
466
+ },
389
467
  {
390
468
  "internalType": "bytes32",
391
469
  "name": "globalStateHash",
@@ -406,6 +484,11 @@
406
484
  "name": "functionPc",
407
485
  "type": "uint32"
408
486
  },
487
+ {
488
+ "internalType": "bytes32",
489
+ "name": "recoveryPc",
490
+ "type": "bytes32"
491
+ },
409
492
  {
410
493
  "internalType": "bytes32",
411
494
  "name": "modulesRoot",
@@ -455,6 +538,11 @@
455
538
  "name": "functionsMerkleRoot",
456
539
  "type": "bytes32"
457
540
  },
541
+ {
542
+ "internalType": "bytes32",
543
+ "name": "extraHash",
544
+ "type": "bytes32"
545
+ },
458
546
  {
459
547
  "internalType": "uint32",
460
548
  "name": "internalsOffset",
@@ -470,8 +558,8 @@
470
558
  "type": "function"
471
559
  }
472
560
  ],
473
- "bytecode": "0x608060405234801561001057600080fd5b50611e07806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da78e7d114610030575b600080fd5b61004361003e36600461138d565b61005a565b60405161005192919061159f565b60405180910390f35b6100626112c2565b6040805160a0810182526000808252825160608082018552828252602080830184905282860184905284019190915292820181905291810182905260808101919091526100ae87611a47565b91506100bf36879003870187611b4a565b905060006100d06020870187611be1565b905061136b602861ffff8316108015906100ef5750603561ffff831611155b156100fd57506101b4610196565b603661ffff8316108015906101175750603e61ffff831611155b1561012557506106bf610196565b61ffff8216603f141561013b5750610a69610196565b61ffff8216604014156101515750610aa1610196565b60405162461bcd60e51b8152602060048201526015602482015274494e56414c49445f4d454d4f52595f4f50434f444560581b60448201526064015b60405180910390fd5b6101a784848989898663ffffffff16565b5050965096945050505050565b6000808060286101c76020880188611be1565b61ffff1614156101e05750600091506004905081610435565b60296101ef6020880188611be1565b61ffff161415610209575060019150600890506000610435565b602a6102186020880188611be1565b61ffff161415610232575060029150600490506000610435565b602b6102416020880188611be1565b61ffff16141561025b575060039150600890506000610435565b602c61026a6020880188611be1565b61ffff1614156102835750600091506001905080610435565b602d6102926020880188611be1565b61ffff1614156102ab5750600091506001905081610435565b602e6102ba6020880188611be1565b61ffff1614156102d4575060009150600290506001610435565b602f6102e36020880188611be1565b61ffff1614156102fc5750600091506002905081610435565b603061030b6020880188611be1565b61ffff16141561032357506001915081905080610435565b60316103326020880188611be1565b61ffff16141561034b5750600191508190506000610435565b603261035a6020880188611be1565b61ffff1614156103735750600191506002905081610435565b60336103826020880188611be1565b61ffff16141561039c575060019150600290506000610435565b60346103ab6020880188611be1565b61ffff1614156103c45750600191506004905081610435565b60356103d36020880188611be1565b61ffff1614156103ed575060019150600490506000610435565b60405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f4d454d4f52595f4c4f41445f4f50434f4445000000000000604482015260640161018d565b600061044c6104478a60200151610b50565b610b75565b6104609063ffffffff166020890135611c1b565b6020890151519091506001600160401b031661047c8483611c1b565b111561049057505060028752506106b89050565b60006000198180805b878110156105355760006104ad8288611c1b565b905060006104bc602083611c49565b90508581146104e0576104d68f60200151828f8f8b610c06565b5097509095509350845b60006104ed602084611c5d565b90506104fa846008611c71565b6001600160401b031661050d8783610ca0565b60ff166001600160401b0316901b85179450505050808061052d90611c90565b915050610499565b5085156106745786600114801561055d5750600088600681111561055b5761055b611470565b145b15610573578060000b63ffffffff169050610674565b8660011480156105945750600188600681111561059257610592611470565b145b156105a15760000b610674565b8660021480156105c2575060008860068111156105c0576105c0611470565b145b156105d8578060010b63ffffffff169050610674565b8660021480156105f9575060018860068111156105f7576105f7611470565b145b156106065760010b610674565b8660041480156106275750600188600681111561062557610625611470565b145b156106345760030b610674565b60405162461bcd60e51b815260206004820152601560248201527410905117d491505117d096551154d7d4d251d39151605a1b604482015260640161018d565b6106af60405180604001604052808a600681111561069457610694611470565b81526001600160401b0384166020918201528f015190610d1a565b50505050505050505b5050505050565b6000808060366106d26020880188611be1565b61ffff1614156106e85750600491506000610857565b60376106f76020880188611be1565b61ffff16141561070d5750600891506001610857565b603861071c6020880188611be1565b61ffff1614156107325750600491506002610857565b60396107416020880188611be1565b61ffff1614156107575750600891506003610857565b603a6107666020880188611be1565b61ffff16141561077c5750600191506000610857565b603b61078b6020880188611be1565b61ffff1614156107a15750600291506000610857565b603c6107b06020880188611be1565b61ffff1614156107c557506001915081610857565b603d6107d46020880188611be1565b61ffff1614156107ea5750600291506001610857565b603e6107f96020880188611be1565b61ffff16141561080f5750600491506001610857565b60405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f4d454d4f52595f53544f52455f4f50434f44450000000000604482015260640161018d565b60006108668960200151610b50565b905081600681111561087a5761087a611470565b8151600681111561088d5761088d611470565b146108cb5760405162461bcd60e51b815260206004820152600e60248201526d4241445f53544f52455f5459504560901b604482015260640161018d565b806020015192506008846001600160401b031610156109165760016108f1856008611cab565b6001600160401b031660016001600160401b0316901b6109119190611cda565b831692505b5050600061092a6104478960200151610b50565b61093e9063ffffffff166020880135611c1b565b90508660200151600001516001600160401b0316836001600160401b0316826109679190611c1b565b111561097957505060028652506106b8565b604080516020810190915260608152600090600019906000805b876001600160401b0316811015610a465760006109b08288611c1b565b905060006109bf602083611c49565b9050858114610a045760001986146109e6576109dc858786610d2a565b60208f0151604001525b6109f78e60200151828e8e8b610c06565b9098509196509094509250845b6000610a11602084611c5d565b9050610a1e85828c610dab565b945060088a6001600160401b0316901c99505050508080610a3e90611c90565b915050610993565b50610a52828483610d2a565b60208c015160400152505050505050505050505050565b602084015151600090610a80906201000090611d02565b9050610a99610a8e82610e30565b602088015190610d1a565b505050505050565b602084015151600090610ab8906201000090611d02565b90506000610acc6104478860200151610b50565b90506000610ae363ffffffff808416908516611c1b565b90508660200151602001516001600160401b03168111610b3857610b0a6201000082611c71565b60208801516001600160401b039091169052610b33610b2884610e30565b60208a015190610d1a565b610b46565b610b46610b28600019610e30565b5050505050505050565b60408051808201909152600080825260208201528151610b6f90610e63565b92915050565b60208101516000908183516006811115610b9157610b91611470565b14610bc85760405162461bcd60e51b81526020600482015260076024820152662727aa2fa4999960c91b604482015260640161018d565b6401000000008110610b6f5760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b604482015260640161018d565b600080610c1f6040518060200160405280606081525090565b839150610c2d868684610f73565b9093509150610c3d868684610f8f565b925090506000610c4e828986610d2a565b905088604001518114610c945760405162461bcd60e51b815260206004820152600e60248201526d15d493d391d7d3515357d493d3d560921b604482015260640161018d565b50955095509592505050565b600060208210610ceb5760405162461bcd60e51b81526020600482015260166024820152750848288bea0aa9898be988a828cbe84b2a88abe9288b60531b604482015260640161018d565b600082610cfa60016020611d28565b610d049190611d28565b610d0f906008611c71565b9390931c9392505050565b8151610d269082611069565b5050565b6040516b26b2b6b7b93c903632b0b31d60a11b6020820152602c81018290526000908190604c01604051602081830303815290604052805190602001209050610da08585836040518060400160405280601381526020017226b2b6b7b93c9036b2b935b632903a3932b29d60691b81525061115c565b9150505b9392505050565b600060208310610df55760405162461bcd60e51b81526020600482015260156024820152740848288bea68aa8be988a828cbe84b2a88abe9288b605b1b604482015260640161018d565b600083610e0460016020611d28565b610e0e9190611d28565b610e19906008611c71565b60ff848116821b911b198616179150509392505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b604080518082019091526000808252602082015281518051610e8790600190611d28565b81518110610e9757610e97611d3f565b6020026020010151905060006001836000015151610eb59190611d28565b6001600160401b03811115610ecc57610ecc6116c7565b604051908082528060200260200182016040528015610f1157816020015b6040805180820190915260008082526020820152815260200190600190039081610eea5790505b50905060005b8151811015610f6c578351805182908110610f3457610f34611d3f565b6020026020010151828281518110610f4e57610f4e611d3f565b60200260200101819052508080610f6490611c90565b915050610f17565b5090915290565b60008181610f8286868461122e565b9097909650945050505050565b604080516020810190915260608152816000610fac86868461128c565b92509050600060ff82166001600160401b03811115610fcd57610fcd6116c7565b604051908082528060200260200182016040528015610ff6578160200160208202803683370190505b50905060005b8260ff168160ff16101561104d57611015888886610f73565b838360ff168151811061102a5761102a611d3f565b60200260200101819650828152505050808061104590611d55565b915050610ffc565b5060405180602001604052808281525093505050935093915050565b81515160009061107a906001611c1b565b6001600160401b03811115611091576110916116c7565b6040519080825280602002602001820160405280156110d657816020015b60408051808201909152600080825260208201528152602001906001900390816110af5790505b50905060005b8351518110156111325783518051829081106110fa576110fa611d3f565b602002602001015182828151811061111457611114611d3f565b6020026020010181905250808061112a90611c90565b9150506110dc565b5081818460000151518151811061114b5761114b611d3f565b602090810291909101015290915250565b8160005b85515181101561122557600185166111c15782828760000151838151811061118a5761118a611d3f565b60200260200101516040516020016111a493929190611d75565b60405160208183030381529060405280519060200120915061120c565b82866000015182815181106111d8576111d8611d3f565b6020026020010151836040516020016111f393929190611d75565b6040516020818303038152906040528051906020012091505b60019490941c938061121d81611c90565b915050611160565b50949350505050565b600081815b602081101561128357600883901b925085858381811061125557611255611d3f565b919091013560f81c9390931792508161126d81611c90565b925050808061127b90611c90565b915050611233565b50935093915050565b6000818484828181106112a1576112a1611d3f565b919091013560f81c92508190506112b781611c90565b915050935093915050565b60408051610120810190915280600081526020016112f760408051606080820183529181019182529081526000602082015290565b815260200161131d60408051606080820183529181019182529081526000602082015290565b8152602001611342604051806040016040528060608152602001600080191681525090565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b611373611dbb565b565b60006040828403121561138757600080fd5b50919050565b6000806000806000808688036101a08112156113a857600080fd5b6113b28989611375565b965060408801356001600160401b03808211156113ce57600080fd5b90890190610120828c0312156113e357600080fd5b81975060e0605f19840112156113f857600080fd5b60608a01965061140c8b6101408c01611375565b95506101808a013592508083111561142357600080fd5b828a0192508a601f84011261143757600080fd5b823591508082111561144857600080fd5b5089602082840101111561145b57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6004811061149657611496611470565b9052565b8051600781106114ac576114ac611470565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611509576114f582865161149a565b9382019360019390930192908501906114e2565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b8281101561158857845161155485825161149a565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a09093019260010161153f565b509687015197909601969096525093949350505050565b60006101008083526115b48184018651611486565b6020850151610120848101526115ce6102208501826114b9565b9050604086015160ff1980868403016101408701526115ed83836114b9565b92506060880151915080868403016101608701525061160c828261151d565b915050608086015161018085015260a08601516116326101a086018263ffffffff169052565b5060c086015163ffffffff81166101c08601525060e086015163ffffffff81166101e086015250908501516102008401529050610da460208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a083015263ffffffff60808201511660c08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156116ff576116ff6116c7565b60405290565b604051602081016001600160401b03811182821017156116ff576116ff6116c7565b604051608081016001600160401b03811182821017156116ff576116ff6116c7565b60405161012081016001600160401b03811182821017156116ff576116ff6116c7565b60405160a081016001600160401b03811182821017156116ff576116ff6116c7565b604051606081016001600160401b03811182821017156116ff576116ff6116c7565b604051601f8201601f191681016001600160401b03811182821017156117d8576117d86116c7565b604052919050565b8035600481106117ef57600080fd5b919050565b60006001600160401b0382111561180d5761180d6116c7565b5060051b60200190565b60006040828403121561182957600080fd5b6118316116dd565b905081356007811061184257600080fd5b808252506020820135602082015292915050565b6000604080838503121561186957600080fd5b6118716116dd565b915082356001600160401b038082111561188a57600080fd5b818501915060208083880312156118a057600080fd5b6118a8611705565b8335838111156118b757600080fd5b80850194505087601f8501126118cc57600080fd5b833592506118e16118dc846117f4565b6117b0565b83815260069390931b8401820192828101908985111561190057600080fd5b948301945b84861015611926576119178a87611817565b82529486019490830190611905565b8252508552948501359484019490945250909392505050565b803563ffffffff811681146117ef57600080fd5b6000604080838503121561196657600080fd5b61196e6116dd565b915082356001600160401b0381111561198657600080fd5b8301601f8101851361199757600080fd5b803560206119a76118dc836117f4565b82815260a092830284018201928282019190898511156119c657600080fd5b948301945b84861015611a2f5780868b0312156119e35760008081fd5b6119eb611727565b6119f58b88611817565b815287870135858201526060611a0c81890161193f565b89830152611a1c6080890161193f565b90820152835294850194918301916119cb565b50808752505080860135818601525050505092915050565b60006101208236031215611a5a57600080fd5b611a62611749565b611a6b836117e0565b815260208301356001600160401b0380821115611a8757600080fd5b611a9336838701611856565b60208401526040850135915080821115611aac57600080fd5b611ab836838701611856565b60408401526060850135915080821115611ad157600080fd5b50611ade36828601611953565b60608301525060808301356080820152611afa60a0840161193f565b60a0820152611b0b60c0840161193f565b60c0820152611b1c60e0840161193f565b60e082015261010092830135928101929092525090565b80356001600160401b03811681146117ef57600080fd5b600081830360e0811215611b5d57600080fd5b611b6561176c565b833581526060601f1983011215611b7b57600080fd5b611b8361178e565b9150611b9160208501611b33565b8252611b9f60408501611b33565b6020830152606084013560408301528160208201526080840135604082015260a08401356060820152611bd460c0850161193f565b6080820152949350505050565b600060208284031215611bf357600080fd5b813561ffff81168114610da457600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611c2e57611c2e611c05565b500190565b634e487b7160e01b600052601260045260246000fd5b600082611c5857611c58611c33565b500490565b600082611c6c57611c6c611c33565b500690565b6000816000190483118215151615611c8b57611c8b611c05565b500290565b6000600019821415611ca457611ca4611c05565b5060010190565b60006001600160401b0380831681851681830481118215151615611cd157611cd1611c05565b02949350505050565b60006001600160401b0383811690831681811015611cfa57611cfa611c05565b039392505050565b60006001600160401b0380841680611d1c57611d1c611c33565b92169190910492915050565b600082821015611d3a57611d3a611c05565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415611d6c57611d6c611c05565b60010192915050565b6000845160005b81811015611d965760208188018101518583015201611d7c565b81811115611da5576000828501525b5091909101928352506020820152604001919050565b634e487b7160e01b600052605160045260246000fdfea2646970667358221220bac30648d2b77ddb09eaf9abe2311cde91363be12b1dd7c94807095de419f76764736f6c63430008090033",
474
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da78e7d114610030575b600080fd5b61004361003e36600461138d565b61005a565b60405161005192919061159f565b60405180910390f35b6100626112c2565b6040805160a0810182526000808252825160608082018552828252602080830184905282860184905284019190915292820181905291810182905260808101919091526100ae87611a47565b91506100bf36879003870187611b4a565b905060006100d06020870187611be1565b905061136b602861ffff8316108015906100ef5750603561ffff831611155b156100fd57506101b4610196565b603661ffff8316108015906101175750603e61ffff831611155b1561012557506106bf610196565b61ffff8216603f141561013b5750610a69610196565b61ffff8216604014156101515750610aa1610196565b60405162461bcd60e51b8152602060048201526015602482015274494e56414c49445f4d454d4f52595f4f50434f444560581b60448201526064015b60405180910390fd5b6101a784848989898663ffffffff16565b5050965096945050505050565b6000808060286101c76020880188611be1565b61ffff1614156101e05750600091506004905081610435565b60296101ef6020880188611be1565b61ffff161415610209575060019150600890506000610435565b602a6102186020880188611be1565b61ffff161415610232575060029150600490506000610435565b602b6102416020880188611be1565b61ffff16141561025b575060039150600890506000610435565b602c61026a6020880188611be1565b61ffff1614156102835750600091506001905080610435565b602d6102926020880188611be1565b61ffff1614156102ab5750600091506001905081610435565b602e6102ba6020880188611be1565b61ffff1614156102d4575060009150600290506001610435565b602f6102e36020880188611be1565b61ffff1614156102fc5750600091506002905081610435565b603061030b6020880188611be1565b61ffff16141561032357506001915081905080610435565b60316103326020880188611be1565b61ffff16141561034b5750600191508190506000610435565b603261035a6020880188611be1565b61ffff1614156103735750600191506002905081610435565b60336103826020880188611be1565b61ffff16141561039c575060019150600290506000610435565b60346103ab6020880188611be1565b61ffff1614156103c45750600191506004905081610435565b60356103d36020880188611be1565b61ffff1614156103ed575060019150600490506000610435565b60405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f4d454d4f52595f4c4f41445f4f50434f4445000000000000604482015260640161018d565b600061044c6104478a60200151610b50565b610b75565b6104609063ffffffff166020890135611c1b565b6020890151519091506001600160401b031661047c8483611c1b565b111561049057505060028752506106b89050565b60006000198180805b878110156105355760006104ad8288611c1b565b905060006104bc602083611c49565b90508581146104e0576104d68f60200151828f8f8b610c06565b5097509095509350845b60006104ed602084611c5d565b90506104fa846008611c71565b6001600160401b031661050d8783610ca0565b60ff166001600160401b0316901b85179450505050808061052d90611c90565b915050610499565b5085156106745786600114801561055d5750600088600681111561055b5761055b611470565b145b15610573578060000b63ffffffff169050610674565b8660011480156105945750600188600681111561059257610592611470565b145b156105a15760000b610674565b8660021480156105c2575060008860068111156105c0576105c0611470565b145b156105d8578060010b63ffffffff169050610674565b8660021480156105f9575060018860068111156105f7576105f7611470565b145b156106065760010b610674565b8660041480156106275750600188600681111561062557610625611470565b145b156106345760030b610674565b60405162461bcd60e51b815260206004820152601560248201527410905117d491505117d096551154d7d4d251d39151605a1b604482015260640161018d565b6106af60405180604001604052808a600681111561069457610694611470565b81526001600160401b0384166020918201528f015190610d1a565b50505050505050505b5050505050565b6000808060366106d26020880188611be1565b61ffff1614156106e85750600491506000610857565b60376106f76020880188611be1565b61ffff16141561070d5750600891506001610857565b603861071c6020880188611be1565b61ffff1614156107325750600491506002610857565b60396107416020880188611be1565b61ffff1614156107575750600891506003610857565b603a6107666020880188611be1565b61ffff16141561077c5750600191506000610857565b603b61078b6020880188611be1565b61ffff1614156107a15750600291506000610857565b603c6107b06020880188611be1565b61ffff1614156107c557506001915081610857565b603d6107d46020880188611be1565b61ffff1614156107ea5750600291506001610857565b603e6107f96020880188611be1565b61ffff16141561080f5750600491506001610857565b60405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f4d454d4f52595f53544f52455f4f50434f44450000000000604482015260640161018d565b60006108668960200151610b50565b905081600681111561087a5761087a611470565b8151600681111561088d5761088d611470565b146108cb5760405162461bcd60e51b815260206004820152600e60248201526d4241445f53544f52455f5459504560901b604482015260640161018d565b806020015192506008846001600160401b031610156109165760016108f1856008611cab565b6001600160401b031660016001600160401b0316901b6109119190611cda565b831692505b5050600061092a6104478960200151610b50565b61093e9063ffffffff166020880135611c1b565b90508660200151600001516001600160401b0316836001600160401b0316826109679190611c1b565b111561097957505060028652506106b8565b604080516020810190915260608152600090600019906000805b876001600160401b0316811015610a465760006109b08288611c1b565b905060006109bf602083611c49565b9050858114610a045760001986146109e6576109dc858786610d2a565b60208f0151604001525b6109f78e60200151828e8e8b610c06565b9098509196509094509250845b6000610a11602084611c5d565b9050610a1e85828c610dab565b945060088a6001600160401b0316901c99505050508080610a3e90611c90565b915050610993565b50610a52828483610d2a565b60208c015160400152505050505050505050505050565b602084015151600090610a80906201000090611d02565b9050610a99610a8e82610e30565b602088015190610d1a565b505050505050565b602084015151600090610ab8906201000090611d02565b90506000610acc6104478860200151610b50565b90506000610ae363ffffffff808416908516611c1b565b90508660200151602001516001600160401b03168111610b3857610b0a6201000082611c71565b60208801516001600160401b039091169052610b33610b2884610e30565b60208a015190610d1a565b610b46565b610b46610b28600019610e30565b5050505050505050565b60408051808201909152600080825260208201528151610b6f90610e63565b92915050565b60208101516000908183516006811115610b9157610b91611470565b14610bc85760405162461bcd60e51b81526020600482015260076024820152662727aa2fa4999960c91b604482015260640161018d565b6401000000008110610b6f5760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b604482015260640161018d565b600080610c1f6040518060200160405280606081525090565b839150610c2d868684610f73565b9093509150610c3d868684610f8f565b925090506000610c4e828986610d2a565b905088604001518114610c945760405162461bcd60e51b815260206004820152600e60248201526d15d493d391d7d3515357d493d3d560921b604482015260640161018d565b50955095509592505050565b600060208210610ceb5760405162461bcd60e51b81526020600482015260166024820152750848288bea0aa9898be988a828cbe84b2a88abe9288b60531b604482015260640161018d565b600082610cfa60016020611d28565b610d049190611d28565b610d0f906008611c71565b9390931c9392505050565b8151610d269082611069565b5050565b6040516b26b2b6b7b93c903632b0b31d60a11b6020820152602c81018290526000908190604c01604051602081830303815290604052805190602001209050610da08585836040518060400160405280601381526020017226b2b6b7b93c9036b2b935b632903a3932b29d60691b81525061115c565b9150505b9392505050565b600060208310610df55760405162461bcd60e51b81526020600482015260156024820152740848288bea68aa8be988a828cbe84b2a88abe9288b605b1b604482015260640161018d565b600083610e0460016020611d28565b610e0e9190611d28565b610e19906008611c71565b60ff848116821b911b198616179150509392505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b604080518082019091526000808252602082015281518051610e8790600190611d28565b81518110610e9757610e97611d3f565b6020026020010151905060006001836000015151610eb59190611d28565b6001600160401b03811115610ecc57610ecc6116c7565b604051908082528060200260200182016040528015610f1157816020015b6040805180820190915260008082526020820152815260200190600190039081610eea5790505b50905060005b8151811015610f6c578351805182908110610f3457610f34611d3f565b6020026020010151828281518110610f4e57610f4e611d3f565b60200260200101819052508080610f6490611c90565b915050610f17565b5090915290565b60008181610f8286868461122e565b9097909650945050505050565b604080516020810190915260608152816000610fac86868461128c565b92509050600060ff82166001600160401b03811115610fcd57610fcd6116c7565b604051908082528060200260200182016040528015610ff6578160200160208202803683370190505b50905060005b8260ff168160ff16101561104d57611015888886610f73565b838360ff168151811061102a5761102a611d3f565b60200260200101819650828152505050808061104590611d55565b915050610ffc565b5060405180602001604052808281525093505050935093915050565b81515160009061107a906001611c1b565b6001600160401b03811115611091576110916116c7565b6040519080825280602002602001820160405280156110d657816020015b60408051808201909152600080825260208201528152602001906001900390816110af5790505b50905060005b8351518110156111325783518051829081106110fa576110fa611d3f565b602002602001015182828151811061111457611114611d3f565b6020026020010181905250808061112a90611c90565b9150506110dc565b5081818460000151518151811061114b5761114b611d3f565b602090810291909101015290915250565b8160005b85515181101561122557600185166111c15782828760000151838151811061118a5761118a611d3f565b60200260200101516040516020016111a493929190611d75565b60405160208183030381529060405280519060200120915061120c565b82866000015182815181106111d8576111d8611d3f565b6020026020010151836040516020016111f393929190611d75565b6040516020818303038152906040528051906020012091505b60019490941c938061121d81611c90565b915050611160565b50949350505050565b600081815b602081101561128357600883901b925085858381811061125557611255611d3f565b919091013560f81c9390931792508161126d81611c90565b925050808061127b90611c90565b915050611233565b50935093915050565b6000818484828181106112a1576112a1611d3f565b919091013560f81c92508190506112b781611c90565b915050935093915050565b60408051610120810190915280600081526020016112f760408051606080820183529181019182529081526000602082015290565b815260200161131d60408051606080820183529181019182529081526000602082015290565b8152602001611342604051806040016040528060608152602001600080191681525090565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b611373611dbb565b565b60006040828403121561138757600080fd5b50919050565b6000806000806000808688036101a08112156113a857600080fd5b6113b28989611375565b965060408801356001600160401b03808211156113ce57600080fd5b90890190610120828c0312156113e357600080fd5b81975060e0605f19840112156113f857600080fd5b60608a01965061140c8b6101408c01611375565b95506101808a013592508083111561142357600080fd5b828a0192508a601f84011261143757600080fd5b823591508082111561144857600080fd5b5089602082840101111561145b57600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6004811061149657611496611470565b9052565b8051600781106114ac576114ac611470565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b80841015611509576114f582865161149a565b9382019360019390930192908501906114e2565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b8281101561158857845161155485825161149a565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a09093019260010161153f565b509687015197909601969096525093949350505050565b60006101008083526115b48184018651611486565b6020850151610120848101526115ce6102208501826114b9565b9050604086015160ff1980868403016101408701526115ed83836114b9565b92506060880151915080868403016101608701525061160c828261151d565b915050608086015161018085015260a08601516116326101a086018263ffffffff169052565b5060c086015163ffffffff81166101c08601525060e086015163ffffffff81166101e086015250908501516102008401529050610da460208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a083015263ffffffff60808201511660c08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156116ff576116ff6116c7565b60405290565b604051602081016001600160401b03811182821017156116ff576116ff6116c7565b604051608081016001600160401b03811182821017156116ff576116ff6116c7565b60405161012081016001600160401b03811182821017156116ff576116ff6116c7565b60405160a081016001600160401b03811182821017156116ff576116ff6116c7565b604051606081016001600160401b03811182821017156116ff576116ff6116c7565b604051601f8201601f191681016001600160401b03811182821017156117d8576117d86116c7565b604052919050565b8035600481106117ef57600080fd5b919050565b60006001600160401b0382111561180d5761180d6116c7565b5060051b60200190565b60006040828403121561182957600080fd5b6118316116dd565b905081356007811061184257600080fd5b808252506020820135602082015292915050565b6000604080838503121561186957600080fd5b6118716116dd565b915082356001600160401b038082111561188a57600080fd5b818501915060208083880312156118a057600080fd5b6118a8611705565b8335838111156118b757600080fd5b80850194505087601f8501126118cc57600080fd5b833592506118e16118dc846117f4565b6117b0565b83815260069390931b8401820192828101908985111561190057600080fd5b948301945b84861015611926576119178a87611817565b82529486019490830190611905565b8252508552948501359484019490945250909392505050565b803563ffffffff811681146117ef57600080fd5b6000604080838503121561196657600080fd5b61196e6116dd565b915082356001600160401b0381111561198657600080fd5b8301601f8101851361199757600080fd5b803560206119a76118dc836117f4565b82815260a092830284018201928282019190898511156119c657600080fd5b948301945b84861015611a2f5780868b0312156119e35760008081fd5b6119eb611727565b6119f58b88611817565b815287870135858201526060611a0c81890161193f565b89830152611a1c6080890161193f565b90820152835294850194918301916119cb565b50808752505080860135818601525050505092915050565b60006101208236031215611a5a57600080fd5b611a62611749565b611a6b836117e0565b815260208301356001600160401b0380821115611a8757600080fd5b611a9336838701611856565b60208401526040850135915080821115611aac57600080fd5b611ab836838701611856565b60408401526060850135915080821115611ad157600080fd5b50611ade36828601611953565b60608301525060808301356080820152611afa60a0840161193f565b60a0820152611b0b60c0840161193f565b60c0820152611b1c60e0840161193f565b60e082015261010092830135928101929092525090565b80356001600160401b03811681146117ef57600080fd5b600081830360e0811215611b5d57600080fd5b611b6561176c565b833581526060601f1983011215611b7b57600080fd5b611b8361178e565b9150611b9160208501611b33565b8252611b9f60408501611b33565b6020830152606084013560408301528160208201526080840135604082015260a08401356060820152611bd460c0850161193f565b6080820152949350505050565b600060208284031215611bf357600080fd5b813561ffff81168114610da457600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611c2e57611c2e611c05565b500190565b634e487b7160e01b600052601260045260246000fd5b600082611c5857611c58611c33565b500490565b600082611c6c57611c6c611c33565b500690565b6000816000190483118215151615611c8b57611c8b611c05565b500290565b6000600019821415611ca457611ca4611c05565b5060010190565b60006001600160401b0380831681851681830481118215151615611cd157611cd1611c05565b02949350505050565b60006001600160401b0383811690831681811015611cfa57611cfa611c05565b039392505050565b60006001600160401b0380841680611d1c57611d1c611c33565b92169190910492915050565b600082821015611d3a57611d3a611c05565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415611d6c57611d6c611c05565b60010192915050565b6000845160005b81811015611d965760208188018101518583015201611d7c565b81811115611da5576000828501525b5091909101928352506020820152604001919050565b634e487b7160e01b600052605160045260246000fdfea2646970667358221220bac30648d2b77ddb09eaf9abe2311cde91363be12b1dd7c94807095de419f76764736f6c63430008090033",
561
+ "bytecode": "0x608060405234801561001057600080fd5b50611f84806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633604366f14610030575b600080fd5b61004361003e366004611444565b61005a565b604051610051929190611658565b60405180910390f35b610062611341565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a08101919091526100b587611b80565b91506100c636879003870187611cbc565b905060006100d76020870187611d5e565b9050611422602861ffff8316108015906100f65750603561ffff831611155b1561010457506101bb61019d565b603661ffff83161080159061011e5750603e61ffff831611155b1561012c575061062661019d565b61ffff8216603f141561014257506109d061019d565b61ffff8216604014156101585750610a0861019d565b60405162461bcd60e51b8152602060048201526015602482015274494e56414c49445f4d454d4f52595f4f50434f444560581b60448201526064015b60405180910390fd5b6101ae84848989898663ffffffff16565b5050965096945050505050565b6000808060286101ce6020880188611d5e565b61ffff1614156101e7575060009150600490508161043c565b60296101f66020880188611d5e565b61ffff16141561021057506001915060089050600061043c565b602a61021f6020880188611d5e565b61ffff16141561023957506002915060049050600061043c565b602b6102486020880188611d5e565b61ffff16141561026257506003915060089050600061043c565b602c6102716020880188611d5e565b61ffff16141561028a575060009150600190508061043c565b602d6102996020880188611d5e565b61ffff1614156102b2575060009150600190508161043c565b602e6102c16020880188611d5e565b61ffff1614156102db57506000915060029050600161043c565b602f6102ea6020880188611d5e565b61ffff161415610303575060009150600290508161043c565b60306103126020880188611d5e565b61ffff16141561032a5750600191508190508061043c565b60316103396020880188611d5e565b61ffff161415610352575060019150819050600061043c565b60326103616020880188611d5e565b61ffff16141561037a575060019150600290508161043c565b60336103896020880188611d5e565b61ffff1614156103a357506001915060029050600061043c565b60346103b26020880188611d5e565b61ffff1614156103cb575060019150600490508161043c565b60356103da6020880188611d5e565b61ffff1614156103f457506001915060049050600061043c565b60405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f4d454d4f52595f4c4f41445f4f50434f44450000000000006044820152606401610194565b600061045361044e8a60200151610ab7565b610adc565b6104679063ffffffff166020890135611d98565b602089015190915060009081906104829084878b8b86610b6d565b5091509150811561049d575050600289525061061f92505050565b8084156105dc578560011480156104c5575060008760068111156104c3576104c3611529565b145b156104db578060000b63ffffffff1690506105dc565b8560011480156104fc575060018760068111156104fa576104fa611529565b145b156105095760000b6105dc565b85600214801561052a5750600087600681111561052857610528611529565b145b15610540578060010b63ffffffff1690506105dc565b8560021480156105615750600187600681111561055f5761055f611529565b145b1561056e5760010b6105dc565b85600414801561058f5750600187600681111561058d5761058d611529565b145b1561059c5760030b6105dc565b60405162461bcd60e51b815260206004820152601560248201527410905117d491505117d096551154d7d4d251d39151605a1b6044820152606401610194565b61061760405180604001604052808960068111156105fc576105fc611529565b81526001600160401b0384166020918201528e015190610c45565b505050505050505b5050505050565b6000808060366106396020880188611d5e565b61ffff16141561064f57506004915060006107be565b603761065e6020880188611d5e565b61ffff16141561067457506008915060016107be565b60386106836020880188611d5e565b61ffff16141561069957506004915060026107be565b60396106a86020880188611d5e565b61ffff1614156106be57506008915060036107be565b603a6106cd6020880188611d5e565b61ffff1614156106e357506001915060006107be565b603b6106f26020880188611d5e565b61ffff16141561070857506002915060006107be565b603c6107176020880188611d5e565b61ffff16141561072c575060019150816107be565b603d61073b6020880188611d5e565b61ffff16141561075157506002915060016107be565b603e6107606020880188611d5e565b61ffff16141561077657506004915060016107be565b60405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f4d454d4f52595f53544f52455f4f50434f444500000000006044820152606401610194565b60006107cd8960200151610ab7565b90508160068111156107e1576107e1611529565b815160068111156107f4576107f4611529565b146108325760405162461bcd60e51b815260206004820152600e60248201526d4241445f53544f52455f5459504560901b6044820152606401610194565b806020015192506008846001600160401b0316101561087d576001610858856008611db0565b6001600160401b031660016001600160401b0316901b6108789190611ddf565b831692505b5050600061089161044e8960200151610ab7565b6108a59063ffffffff166020880135611d98565b90508660200151600001516001600160401b0316836001600160401b0316826108ce9190611d98565b11156108e0575050600286525061061f565b604080516020810190915260608152600090600019906000805b876001600160401b03168110156109ad5760006109178288611d98565b90506000610926602083611e1d565b905085811461096b57600019861461094d57610943858786610c55565b60208f0151604001525b61095e8e60200151828e8e8b610cd6565b9098509196509094509250845b6000610978602084611e31565b905061098585828c610d70565b945060088a6001600160401b0316901c995050505080806109a590611e45565b9150506108fa565b506109b9828483610c55565b60208c015160400152505050505050505050505050565b6020840151516000906109e7906201000090611e60565b9050610a006109f582610df5565b602088015190610c45565b505050505050565b602084015151600090610a1f906201000090611e60565b90506000610a3361044e8860200151610ab7565b90506000610a4a63ffffffff808416908516611d98565b90508660200151602001516001600160401b03168111610a9f57610a716201000082611e86565b60208801516001600160401b039091169052610a9a610a8f84610df5565b60208a015190610c45565b610aad565b610aad610a8f600019610df5565b5050505050505050565b60408051808201909152600080825260208201528151610ad690610e28565b92915050565b60208101516000908183516006811115610af857610af8611529565b14610b2f5760405162461bcd60e51b81526020600482015260076024820152662727aa2fa4999960c91b6044820152606401610194565b6401000000008110610ad65760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b6044820152606401610194565b8551600090819081906001600160401b0316610b89888a611d98565b1115610b9e5750600191506000905082610c39565b600019600080805b8a811015610c2c576000610bba828e611d98565b90506000610bc9602083611e1d565b9050858114610be957610bdf8f828e8e8e610cd6565b509a509095509350845b6000610bf6602084611e31565b9050610c03846008611e86565b610c0d8783610f38565b60ff16901b851794505050508080610c2490611e45565b915050610ba6565b5060009550935085925050505b96509650969350505050565b8151610c519082610fb2565b5050565b6040516b26b2b6b7b93c903632b0b31d60a11b6020820152602c81018290526000908190604c01604051602081830303815290604052805190602001209050610ccb8585836040518060400160405280601381526020017226b2b6b7b93c9036b2b935b632903a3932b29d60691b8152506110a5565b9150505b9392505050565b600080610cef6040518060200160405280606081525090565b839150610cfd8686846111b7565b9093509150610d0d8686846111d3565b925090506000610d1e828986610c55565b905088604001518114610d645760405162461bcd60e51b815260206004820152600e60248201526d15d493d391d7d3515357d493d3d560921b6044820152606401610194565b50955095509592505050565b600060208310610dba5760405162461bcd60e51b81526020600482015260156024820152740848288bea68aa8be988a828cbe84b2a88abe9288b605b1b6044820152606401610194565b600083610dc960016020611ea5565b610dd39190611ea5565b610dde906008611e86565b60ff848116821b911b198616179150509392505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b604080518082019091526000808252602082015281518051610e4c90600190611ea5565b81518110610e5c57610e5c611ebc565b6020026020010151905060006001836000015151610e7a9190611ea5565b6001600160401b03811115610e9157610e916117d0565b604051908082528060200260200182016040528015610ed657816020015b6040805180820190915260008082526020820152815260200190600190039081610eaf5790505b50905060005b8151811015610f31578351805182908110610ef957610ef9611ebc565b6020026020010151828281518110610f1357610f13611ebc565b60200260200101819052508080610f2990611e45565b915050610edc565b5090915290565b600060208210610f835760405162461bcd60e51b81526020600482015260166024820152750848288bea0aa9898be988a828cbe84b2a88abe9288b60531b6044820152606401610194565b600082610f9260016020611ea5565b610f9c9190611ea5565b610fa7906008611e86565b9390931c9392505050565b815151600090610fc3906001611d98565b6001600160401b03811115610fda57610fda6117d0565b60405190808252806020026020018201604052801561101f57816020015b6040805180820190915260008082526020820152815260200190600190039081610ff85790505b50905060005b83515181101561107b57835180518290811061104357611043611ebc565b602002602001015182828151811061105d5761105d611ebc565b6020026020010181905250808061107390611e45565b915050611025565b5081818460000151518151811061109457611094611ebc565b602090810291909101015290915250565b8160005b85515181101561116e576001851661110a578282876000015183815181106110d3576110d3611ebc565b60200260200101516040516020016110ed93929190611ed2565b604051602081830303815290604052805190602001209150611155565b828660000151828151811061112157611121611ebc565b60200260200101518360405160200161113c93929190611ed2565b6040516020818303038152906040528051906020012091505b60019490941c938061116681611e45565b9150506110a9565b5083156111af5760405162461bcd60e51b815260206004820152600f60248201526e141493d3d197d513d3d7d4d213d495608a1b6044820152606401610194565b949350505050565b600081816111c68686846112ad565b9097909650945050505050565b6040805160208101909152606081528160006111f086868461130b565b92509050600060ff82166001600160401b03811115611211576112116117d0565b60405190808252806020026020018201604052801561123a578160200160208202803683370190505b50905060005b8260ff168160ff161015611291576112598888866111b7565b838360ff168151811061126e5761126e611ebc565b60200260200101819650828152505050808061128990611f18565b915050611240565b5060405180602001604052808281525093505050935093915050565b600081815b602081101561130257600883901b92508585838181106112d4576112d4611ebc565b919091013560f81c939093179250816112ec81611e45565b92505080806112fa90611e45565b9150506112b2565b50935093915050565b60008184848281811061132057611320611ebc565b919091013560f81c925081905061133681611e45565b915050935093915050565b604080516101808101909152806000815260200161137660408051606080820183529181019182529081526000602082015290565b81526040805180820182526000808252602080830191909152830152016113b460408051606080820183529181019182529081526000602082015290565b81526020016113d9604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b61142a611f38565b565b60006040828403121561143e57600080fd5b50919050565b6000806000806000808688036101c08082121561146057600080fd5b61146a8a8a61142c565b975060408901356001600160401b038082111561148657600080fd5b818b01915082828d03121561149a57600080fd5b819850610100605f19850112156114b057600080fd5b60608b0197506114c48c6101608d0161142c565b96506101a08b01359350808411156114db57600080fd5b838b0193508b601f8501126114ef57600080fd5b833592508083111561150057600080fd5b505089602082840101111561151457600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6004811061154f5761154f611529565b9052565b80516007811061156557611565611529565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b808410156115c2576115ae828651611553565b93820193600193909301929085019061159b565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b8281101561164157845161160d858251611553565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a0909301926001016115f8565b509687015197909601969096525093949350505050565b600061012080835261166d818401865161153f565b60208501516101c0610140818187015261168b6102e0870184611572565b925060408801516101606116ab8189018380518252602090810151910152565b60608a0151915061011f1980898703016101a08a01526116cb8684611572565b955060808b015192508089870301858a0152506116e885836115d6565b60a08b015180516101e08b015260208101516102008b0152909550935060c08a015161022089015260e08a015163ffffffff81166102408a015293506101008a015163ffffffff81166102608a015293509489015163ffffffff811661028089015294918901516102a0880152508701516102c0860152509150610ccf905060208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611808576118086117d0565b60405290565b604051602081016001600160401b0381118282101715611808576118086117d0565b604051608081016001600160401b0381118282101715611808576118086117d0565b60405161018081016001600160401b0381118282101715611808576118086117d0565b60405160c081016001600160401b0381118282101715611808576118086117d0565b604051606081016001600160401b0381118282101715611808576118086117d0565b604051601f8201601f191681016001600160401b03811182821017156118e1576118e16117d0565b604052919050565b8035600481106118f857600080fd5b919050565b60006001600160401b03821115611916576119166117d0565b5060051b60200190565b60006040828403121561193257600080fd5b61193a6117e6565b905081356007811061194b57600080fd5b808252506020820135602082015292915050565b6000604080838503121561197257600080fd5b61197a6117e6565b915082356001600160401b038082111561199357600080fd5b818501915060208083880312156119a957600080fd5b6119b161180e565b8335838111156119c057600080fd5b80850194505087601f8501126119d557600080fd5b833592506119ea6119e5846118fd565b6118b9565b83815260069390931b84018201928281019089851115611a0957600080fd5b948301945b84861015611a2f57611a208a87611920565b82529486019490830190611a0e565b8252508552948501359484019490945250909392505050565b600060408284031215611a5a57600080fd5b611a626117e6565b9050813581526020820135602082015292915050565b803563ffffffff811681146118f857600080fd5b60006040808385031215611a9f57600080fd5b611aa76117e6565b915082356001600160401b03811115611abf57600080fd5b8301601f81018513611ad057600080fd5b80356020611ae06119e5836118fd565b82815260a09283028401820192828201919089851115611aff57600080fd5b948301945b84861015611b685780868b031215611b1c5760008081fd5b611b24611830565b611b2e8b88611920565b815287870135858201526060611b45818901611a78565b89830152611b5560808901611a78565b9082015283529485019491830191611b04565b50808752505080860135818601525050505092915050565b60006101c08236031215611b9357600080fd5b611b9b611852565b611ba4836118e9565b815260208301356001600160401b0380821115611bc057600080fd5b611bcc3683870161195f565b6020840152611bde3660408701611a48565b60408401526080850135915080821115611bf757600080fd5b611c033683870161195f565b606084015260a0850135915080821115611c1c57600080fd5b50611c2936828601611a8c565b608083015250611c3c3660c08501611a48565b60a08201526101008084013560c0830152610120611c5b818601611a78565b60e0840152610140611c6e818701611a78565b838501526101609250611c82838701611a78565b91840191909152610180850135908301526101a090930135928101929092525090565b80356001600160401b03811681146118f857600080fd5b6000818303610100811215611cd057600080fd5b611cd8611875565b833581526060601f1983011215611cee57600080fd5b611cf6611897565b9150611d0460208501611ca5565b8252611d1260408501611ca5565b6020830152606084013560408301528160208201526080840135604082015260a0840135606082015260c08401356080820152611d5160e08501611a78565b60a0820152949350505050565b600060208284031215611d7057600080fd5b813561ffff81168114610ccf57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611dab57611dab611d82565b500190565b60006001600160401b0380831681851681830481118215151615611dd657611dd6611d82565b02949350505050565b60006001600160401b0383811690831681811015611dff57611dff611d82565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600082611e2c57611e2c611e07565b500490565b600082611e4057611e40611e07565b500690565b6000600019821415611e5957611e59611d82565b5060010190565b60006001600160401b0380841680611e7a57611e7a611e07565b92169190910492915050565b6000816000190483118215151615611ea057611ea0611d82565b500290565b600082821015611eb757611eb7611d82565b500390565b634e487b7160e01b600052603260045260246000fd5b6000845160005b81811015611ef35760208188018101518583015201611ed9565b81811115611f02576000828501525b5091909101928352506020820152604001919050565b600060ff821660ff811415611f2f57611f2f611d82565b60010192915050565b634e487b7160e01b600052605160045260246000fdfea264697066735822122075656d2789d3f1dcea2eac8ac49fb7a432ca87fcd7794f8df78e6331d332953c64736f6c63430008090033",
562
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633604366f14610030575b600080fd5b61004361003e366004611444565b61005a565b604051610051929190611658565b60405180910390f35b610062611341565b6040805160c081018252600080825282516060808201855282825260208083018490528286018490528401919091529282018190529181018290526080810182905260a08101919091526100b587611b80565b91506100c636879003870187611cbc565b905060006100d76020870187611d5e565b9050611422602861ffff8316108015906100f65750603561ffff831611155b1561010457506101bb61019d565b603661ffff83161080159061011e5750603e61ffff831611155b1561012c575061062661019d565b61ffff8216603f141561014257506109d061019d565b61ffff8216604014156101585750610a0861019d565b60405162461bcd60e51b8152602060048201526015602482015274494e56414c49445f4d454d4f52595f4f50434f444560581b60448201526064015b60405180910390fd5b6101ae84848989898663ffffffff16565b5050965096945050505050565b6000808060286101ce6020880188611d5e565b61ffff1614156101e7575060009150600490508161043c565b60296101f66020880188611d5e565b61ffff16141561021057506001915060089050600061043c565b602a61021f6020880188611d5e565b61ffff16141561023957506002915060049050600061043c565b602b6102486020880188611d5e565b61ffff16141561026257506003915060089050600061043c565b602c6102716020880188611d5e565b61ffff16141561028a575060009150600190508061043c565b602d6102996020880188611d5e565b61ffff1614156102b2575060009150600190508161043c565b602e6102c16020880188611d5e565b61ffff1614156102db57506000915060029050600161043c565b602f6102ea6020880188611d5e565b61ffff161415610303575060009150600290508161043c565b60306103126020880188611d5e565b61ffff16141561032a5750600191508190508061043c565b60316103396020880188611d5e565b61ffff161415610352575060019150819050600061043c565b60326103616020880188611d5e565b61ffff16141561037a575060019150600290508161043c565b60336103896020880188611d5e565b61ffff1614156103a357506001915060029050600061043c565b60346103b26020880188611d5e565b61ffff1614156103cb575060019150600490508161043c565b60356103da6020880188611d5e565b61ffff1614156103f457506001915060049050600061043c565b60405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f4d454d4f52595f4c4f41445f4f50434f44450000000000006044820152606401610194565b600061045361044e8a60200151610ab7565b610adc565b6104679063ffffffff166020890135611d98565b602089015190915060009081906104829084878b8b86610b6d565b5091509150811561049d575050600289525061061f92505050565b8084156105dc578560011480156104c5575060008760068111156104c3576104c3611529565b145b156104db578060000b63ffffffff1690506105dc565b8560011480156104fc575060018760068111156104fa576104fa611529565b145b156105095760000b6105dc565b85600214801561052a5750600087600681111561052857610528611529565b145b15610540578060010b63ffffffff1690506105dc565b8560021480156105615750600187600681111561055f5761055f611529565b145b1561056e5760010b6105dc565b85600414801561058f5750600187600681111561058d5761058d611529565b145b1561059c5760030b6105dc565b60405162461bcd60e51b815260206004820152601560248201527410905117d491505117d096551154d7d4d251d39151605a1b6044820152606401610194565b61061760405180604001604052808960068111156105fc576105fc611529565b81526001600160401b0384166020918201528e015190610c45565b505050505050505b5050505050565b6000808060366106396020880188611d5e565b61ffff16141561064f57506004915060006107be565b603761065e6020880188611d5e565b61ffff16141561067457506008915060016107be565b60386106836020880188611d5e565b61ffff16141561069957506004915060026107be565b60396106a86020880188611d5e565b61ffff1614156106be57506008915060036107be565b603a6106cd6020880188611d5e565b61ffff1614156106e357506001915060006107be565b603b6106f26020880188611d5e565b61ffff16141561070857506002915060006107be565b603c6107176020880188611d5e565b61ffff16141561072c575060019150816107be565b603d61073b6020880188611d5e565b61ffff16141561075157506002915060016107be565b603e6107606020880188611d5e565b61ffff16141561077657506004915060016107be565b60405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f4d454d4f52595f53544f52455f4f50434f444500000000006044820152606401610194565b60006107cd8960200151610ab7565b90508160068111156107e1576107e1611529565b815160068111156107f4576107f4611529565b146108325760405162461bcd60e51b815260206004820152600e60248201526d4241445f53544f52455f5459504560901b6044820152606401610194565b806020015192506008846001600160401b0316101561087d576001610858856008611db0565b6001600160401b031660016001600160401b0316901b6108789190611ddf565b831692505b5050600061089161044e8960200151610ab7565b6108a59063ffffffff166020880135611d98565b90508660200151600001516001600160401b0316836001600160401b0316826108ce9190611d98565b11156108e0575050600286525061061f565b604080516020810190915260608152600090600019906000805b876001600160401b03168110156109ad5760006109178288611d98565b90506000610926602083611e1d565b905085811461096b57600019861461094d57610943858786610c55565b60208f0151604001525b61095e8e60200151828e8e8b610cd6565b9098509196509094509250845b6000610978602084611e31565b905061098585828c610d70565b945060088a6001600160401b0316901c995050505080806109a590611e45565b9150506108fa565b506109b9828483610c55565b60208c015160400152505050505050505050505050565b6020840151516000906109e7906201000090611e60565b9050610a006109f582610df5565b602088015190610c45565b505050505050565b602084015151600090610a1f906201000090611e60565b90506000610a3361044e8860200151610ab7565b90506000610a4a63ffffffff808416908516611d98565b90508660200151602001516001600160401b03168111610a9f57610a716201000082611e86565b60208801516001600160401b039091169052610a9a610a8f84610df5565b60208a015190610c45565b610aad565b610aad610a8f600019610df5565b5050505050505050565b60408051808201909152600080825260208201528151610ad690610e28565b92915050565b60208101516000908183516006811115610af857610af8611529565b14610b2f5760405162461bcd60e51b81526020600482015260076024820152662727aa2fa4999960c91b6044820152606401610194565b6401000000008110610ad65760405162461bcd60e51b81526020600482015260076024820152662120a22fa4999960c91b6044820152606401610194565b8551600090819081906001600160401b0316610b89888a611d98565b1115610b9e5750600191506000905082610c39565b600019600080805b8a811015610c2c576000610bba828e611d98565b90506000610bc9602083611e1d565b9050858114610be957610bdf8f828e8e8e610cd6565b509a509095509350845b6000610bf6602084611e31565b9050610c03846008611e86565b610c0d8783610f38565b60ff16901b851794505050508080610c2490611e45565b915050610ba6565b5060009550935085925050505b96509650969350505050565b8151610c519082610fb2565b5050565b6040516b26b2b6b7b93c903632b0b31d60a11b6020820152602c81018290526000908190604c01604051602081830303815290604052805190602001209050610ccb8585836040518060400160405280601381526020017226b2b6b7b93c9036b2b935b632903a3932b29d60691b8152506110a5565b9150505b9392505050565b600080610cef6040518060200160405280606081525090565b839150610cfd8686846111b7565b9093509150610d0d8686846111d3565b925090506000610d1e828986610c55565b905088604001518114610d645760405162461bcd60e51b815260206004820152600e60248201526d15d493d391d7d3515357d493d3d560921b6044820152606401610194565b50955095509592505050565b600060208310610dba5760405162461bcd60e51b81526020600482015260156024820152740848288bea68aa8be988a828cbe84b2a88abe9288b605b1b6044820152606401610194565b600083610dc960016020611ea5565b610dd39190611ea5565b610dde906008611e86565b60ff848116821b911b198616179150509392505050565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b604080518082019091526000808252602082015281518051610e4c90600190611ea5565b81518110610e5c57610e5c611ebc565b6020026020010151905060006001836000015151610e7a9190611ea5565b6001600160401b03811115610e9157610e916117d0565b604051908082528060200260200182016040528015610ed657816020015b6040805180820190915260008082526020820152815260200190600190039081610eaf5790505b50905060005b8151811015610f31578351805182908110610ef957610ef9611ebc565b6020026020010151828281518110610f1357610f13611ebc565b60200260200101819052508080610f2990611e45565b915050610edc565b5090915290565b600060208210610f835760405162461bcd60e51b81526020600482015260166024820152750848288bea0aa9898be988a828cbe84b2a88abe9288b60531b6044820152606401610194565b600082610f9260016020611ea5565b610f9c9190611ea5565b610fa7906008611e86565b9390931c9392505050565b815151600090610fc3906001611d98565b6001600160401b03811115610fda57610fda6117d0565b60405190808252806020026020018201604052801561101f57816020015b6040805180820190915260008082526020820152815260200190600190039081610ff85790505b50905060005b83515181101561107b57835180518290811061104357611043611ebc565b602002602001015182828151811061105d5761105d611ebc565b6020026020010181905250808061107390611e45565b915050611025565b5081818460000151518151811061109457611094611ebc565b602090810291909101015290915250565b8160005b85515181101561116e576001851661110a578282876000015183815181106110d3576110d3611ebc565b60200260200101516040516020016110ed93929190611ed2565b604051602081830303815290604052805190602001209150611155565b828660000151828151811061112157611121611ebc565b60200260200101518360405160200161113c93929190611ed2565b6040516020818303038152906040528051906020012091505b60019490941c938061116681611e45565b9150506110a9565b5083156111af5760405162461bcd60e51b815260206004820152600f60248201526e141493d3d197d513d3d7d4d213d495608a1b6044820152606401610194565b949350505050565b600081816111c68686846112ad565b9097909650945050505050565b6040805160208101909152606081528160006111f086868461130b565b92509050600060ff82166001600160401b03811115611211576112116117d0565b60405190808252806020026020018201604052801561123a578160200160208202803683370190505b50905060005b8260ff168160ff161015611291576112598888866111b7565b838360ff168151811061126e5761126e611ebc565b60200260200101819650828152505050808061128990611f18565b915050611240565b5060405180602001604052808281525093505050935093915050565b600081815b602081101561130257600883901b92508585838181106112d4576112d4611ebc565b919091013560f81c939093179250816112ec81611e45565b92505080806112fa90611e45565b9150506112b2565b50935093915050565b60008184848281811061132057611320611ebc565b919091013560f81c925081905061133681611e45565b915050935093915050565b604080516101808101909152806000815260200161137660408051606080820183529181019182529081526000602082015290565b81526040805180820182526000808252602080830191909152830152016113b460408051606080820183529181019182529081526000602082015290565b81526020016113d9604051806040016040528060608152602001600080191681525090565b815260408051808201825260008082526020808301829052840191909152908201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b61142a611f38565b565b60006040828403121561143e57600080fd5b50919050565b6000806000806000808688036101c08082121561146057600080fd5b61146a8a8a61142c565b975060408901356001600160401b038082111561148657600080fd5b818b01915082828d03121561149a57600080fd5b819850610100605f19850112156114b057600080fd5b60608b0197506114c48c6101608d0161142c565b96506101a08b01359350808411156114db57600080fd5b838b0193508b601f8501126114ef57600080fd5b833592508083111561150057600080fd5b505089602082840101111561151457600080fd5b60208201935080925050509295509295509295565b634e487b7160e01b600052602160045260246000fd5b6004811061154f5761154f611529565b9052565b80516007811061156557611565611529565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b808410156115c2576115ae828651611553565b93820193600193909301929085019061159b565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b8281101561164157845161160d858251611553565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a0909301926001016115f8565b509687015197909601969096525093949350505050565b600061012080835261166d818401865161153f565b60208501516101c0610140818187015261168b6102e0870184611572565b925060408801516101606116ab8189018380518252602090810151910152565b60608a0151915061011f1980898703016101a08a01526116cb8684611572565b955060808b015192508089870301858a0152506116e885836115d6565b60a08b015180516101e08b015260208101516102008b0152909550935060c08a015161022089015260e08a015163ffffffff81166102408a015293506101008a015163ffffffff81166102608a015293509489015163ffffffff811661028089015294918901516102a0880152508701516102c0860152509150610ccf905060208301848051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611808576118086117d0565b60405290565b604051602081016001600160401b0381118282101715611808576118086117d0565b604051608081016001600160401b0381118282101715611808576118086117d0565b60405161018081016001600160401b0381118282101715611808576118086117d0565b60405160c081016001600160401b0381118282101715611808576118086117d0565b604051606081016001600160401b0381118282101715611808576118086117d0565b604051601f8201601f191681016001600160401b03811182821017156118e1576118e16117d0565b604052919050565b8035600481106118f857600080fd5b919050565b60006001600160401b03821115611916576119166117d0565b5060051b60200190565b60006040828403121561193257600080fd5b61193a6117e6565b905081356007811061194b57600080fd5b808252506020820135602082015292915050565b6000604080838503121561197257600080fd5b61197a6117e6565b915082356001600160401b038082111561199357600080fd5b818501915060208083880312156119a957600080fd5b6119b161180e565b8335838111156119c057600080fd5b80850194505087601f8501126119d557600080fd5b833592506119ea6119e5846118fd565b6118b9565b83815260069390931b84018201928281019089851115611a0957600080fd5b948301945b84861015611a2f57611a208a87611920565b82529486019490830190611a0e565b8252508552948501359484019490945250909392505050565b600060408284031215611a5a57600080fd5b611a626117e6565b9050813581526020820135602082015292915050565b803563ffffffff811681146118f857600080fd5b60006040808385031215611a9f57600080fd5b611aa76117e6565b915082356001600160401b03811115611abf57600080fd5b8301601f81018513611ad057600080fd5b80356020611ae06119e5836118fd565b82815260a09283028401820192828201919089851115611aff57600080fd5b948301945b84861015611b685780868b031215611b1c5760008081fd5b611b24611830565b611b2e8b88611920565b815287870135858201526060611b45818901611a78565b89830152611b5560808901611a78565b9082015283529485019491830191611b04565b50808752505080860135818601525050505092915050565b60006101c08236031215611b9357600080fd5b611b9b611852565b611ba4836118e9565b815260208301356001600160401b0380821115611bc057600080fd5b611bcc3683870161195f565b6020840152611bde3660408701611a48565b60408401526080850135915080821115611bf757600080fd5b611c033683870161195f565b606084015260a0850135915080821115611c1c57600080fd5b50611c2936828601611a8c565b608083015250611c3c3660c08501611a48565b60a08201526101008084013560c0830152610120611c5b818601611a78565b60e0840152610140611c6e818701611a78565b838501526101609250611c82838701611a78565b91840191909152610180850135908301526101a090930135928101929092525090565b80356001600160401b03811681146118f857600080fd5b6000818303610100811215611cd057600080fd5b611cd8611875565b833581526060601f1983011215611cee57600080fd5b611cf6611897565b9150611d0460208501611ca5565b8252611d1260408501611ca5565b6020830152606084013560408301528160208201526080840135604082015260a0840135606082015260c08401356080820152611d5160e08501611a78565b60a0820152949350505050565b600060208284031215611d7057600080fd5b813561ffff81168114610ccf57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611dab57611dab611d82565b500190565b60006001600160401b0380831681851681830481118215151615611dd657611dd6611d82565b02949350505050565b60006001600160401b0383811690831681811015611dff57611dff611d82565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600082611e2c57611e2c611e07565b500490565b600082611e4057611e40611e07565b500690565b6000600019821415611e5957611e59611d82565b5060010190565b60006001600160401b0380841680611e7a57611e7a611e07565b92169190910492915050565b6000816000190483118215151615611ea057611ea0611d82565b500290565b600082821015611eb757611eb7611d82565b500390565b634e487b7160e01b600052603260045260246000fd5b6000845160005b81811015611ef35760208188018101518583015201611ed9565b81811115611f02576000828501525b5091909101928352506020820152604001919050565b600060ff821660ff811415611f2f57611f2f611d82565b60010192915050565b634e487b7160e01b600052605160045260246000fdfea264697066735822122075656d2789d3f1dcea2eac8ac49fb7a432ca87fcd7794f8df78e6331d332953c64736f6c63430008090033",
475
563
  "linkReferences": {},
476
564
  "deployedLinkReferences": {}
477
565
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/06c4d509e20993c3089a7fd027c7b28b.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/06c4d509e20993c3089a7fd027c7b28b.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }