@across-protocol/contracts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +661 -0
  3. package/README.md +53 -0
  4. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.dbg.json +4 -0
  5. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.json +252 -0
  6. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.dbg.json +4 -0
  7. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.json +35 -0
  8. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.dbg.json +4 -0
  9. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +110 -0
  10. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.dbg.json +4 -0
  11. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.json +10 -0
  12. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  14. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.json +108 -0
  16. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  18. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.json +50 -0
  20. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +10 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.json +10 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.json +10 -0
  42. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  43. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  44. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.dbg.json +4 -0
  45. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.json +611 -0
  46. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.dbg.json +4 -0
  47. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.json +297 -0
  48. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.dbg.json +4 -0
  49. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.json +29 -0
  50. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.dbg.json +4 -0
  51. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.json +37 -0
  52. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  53. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  54. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  55. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  56. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  57. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  58. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  59. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  60. package/artifacts/build-info/1cd64db7a8ac0a153df93d26826ad4e9.json +1653 -0
  61. package/artifacts/build-info/1f738b56edd7602183f2f8d2f23f6e90.json +1592 -0
  62. package/artifacts/build-info/343b9221be36acd9ddaca3f3b83d2e75.json +3943 -0
  63. package/artifacts/build-info/622e561692c193f4cd0ff989b5a231e2.json +5661 -0
  64. package/artifacts/build-info/8e408b49e0ff2873bc28d45221a7ff71.json +277715 -0
  65. package/artifacts/build-info/9d1a3182633612bd337d811d567d5d60.json +2072 -0
  66. package/artifacts/build-info/a8cd9c443d245fe513d6650634b60f93.json +23776 -0
  67. package/artifacts/build-info/d302d9d63fbafb5c8d635cc62cb1cc7c.json +167529 -0
  68. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.dbg.json +4 -0
  69. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.json +10 -0
  70. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  71. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.json +10 -0
  72. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  73. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  74. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.dbg.json +4 -0
  75. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.json +30 -0
  76. package/artifacts/contracts/common/implementation/Testable.sol/Testable.dbg.json +4 -0
  77. package/artifacts/contracts/common/implementation/Testable.sol/Testable.json +50 -0
  78. package/artifacts/contracts/common/implementation/Timer.sol/Timer.dbg.json +4 -0
  79. package/artifacts/contracts/common/implementation/Timer.sol/Timer.json +42 -0
  80. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.dbg.json +4 -0
  81. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.json +69 -0
  82. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.dbg.json +4 -0
  83. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.json +42 -0
  84. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.dbg.json +4 -0
  85. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.json +235 -0
  86. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  87. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  88. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  89. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  90. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  91. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  92. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.dbg.json +4 -0
  93. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.json +1019 -0
  94. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.dbg.json +4 -0
  95. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.json +314 -0
  96. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.dbg.json +4 -0
  97. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.json +47 -0
  98. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.dbg.json +4 -0
  99. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.json +62 -0
  100. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.dbg.json +4 -0
  101. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.json +65 -0
  102. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.dbg.json +4 -0
  103. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.json +39 -0
  104. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  105. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  106. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  107. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.json +86 -0
  108. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.dbg.json +4 -0
  109. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.json +10 -0
  110. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.dbg.json +4 -0
  111. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.json +10 -0
  112. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.dbg.json +4 -0
  113. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.json +10 -0
  114. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.dbg.json +4 -0
  115. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.json +104 -0
  116. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.dbg.json +4 -0
  117. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.json +34 -0
  118. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.dbg.json +4 -0
  119. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.json +29 -0
  120. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.dbg.json +4 -0
  121. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.json +79 -0
  122. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.dbg.json +4 -0
  123. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.json +29 -0
  124. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.dbg.json +4 -0
  125. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.json +29 -0
  126. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.dbg.json +4 -0
  127. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.json +54 -0
  128. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.dbg.json +4 -0
  129. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.json +86 -0
  130. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.dbg.json +4 -0
  131. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.json +34 -0
  132. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.dbg.json +4 -0
  133. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.json +108 -0
  134. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.dbg.json +4 -0
  135. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.json +50 -0
  136. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.dbg.json +4 -0
  137. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.json +29 -0
  138. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.json +662 -0
  140. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.dbg.json +4 -0
  141. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.json +391 -0
  142. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.dbg.json +4 -0
  143. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.json +30 -0
  144. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.dbg.json +4 -0
  145. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.json +31 -0
  146. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.dbg.json +4 -0
  147. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.json +1709 -0
  148. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.dbg.json +4 -0
  149. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.json +1709 -0
  150. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.dbg.json +4 -0
  151. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.json +31 -0
  152. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.dbg.json +4 -0
  153. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.json +564 -0
  154. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.dbg.json +4 -0
  155. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.json +45 -0
  156. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  157. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  158. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.dbg.json +4 -0
  159. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.json +191 -0
  160. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.dbg.json +4 -0
  161. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.json +319 -0
  162. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.dbg.json +4 -0
  163. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.json +63 -0
  164. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.dbg.json +4 -0
  165. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.json +54 -0
  166. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.dbg.json +4 -0
  167. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.json +528 -0
  168. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  169. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  170. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.dbg.json +4 -0
  171. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.json +572 -0
  172. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.dbg.json +4 -0
  173. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.json +130 -0
  174. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.dbg.json +4 -0
  175. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.json +142 -0
  176. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.dbg.json +4 -0
  177. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.json +55 -0
  178. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  179. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.json +86 -0
  180. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.dbg.json +4 -0
  181. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.json +68 -0
  182. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.dbg.json +4 -0
  183. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.json +78 -0
  184. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.dbg.json +4 -0
  185. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.json +24 -0
  186. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.dbg.json +4 -0
  187. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.json +510 -0
  188. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.dbg.json +4 -0
  189. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.json +85 -0
  190. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.dbg.json +4 -0
  191. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.json +110 -0
  192. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.dbg.json +4 -0
  193. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.json +24 -0
  194. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.dbg.json +4 -0
  195. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.json +141 -0
  196. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.dbg.json +4 -0
  197. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.json +48 -0
  198. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.dbg.json +4 -0
  199. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.json +56 -0
  200. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.dbg.json +4 -0
  201. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.json +555 -0
  202. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.dbg.json +4 -0
  203. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.json +853 -0
  204. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.dbg.json +4 -0
  205. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.json +124 -0
  206. package/contracts/common/implementation/AncillaryData.sol +144 -0
  207. package/contracts/common/implementation/FixedPoint.sol +763 -0
  208. package/contracts/common/implementation/Lockable.sol +61 -0
  209. package/contracts/common/implementation/MultiCaller.sol +27 -0
  210. package/contracts/common/implementation/Testable.sol +52 -0
  211. package/contracts/common/implementation/Timer.sol +30 -0
  212. package/contracts/common/interfaces/AddressWhitelistInterface.sol +12 -0
  213. package/contracts/external/avm/AVM_CrossDomainEnabled.sol +43 -0
  214. package/contracts/external/avm/interfaces/ArbSys.sol +79 -0
  215. package/contracts/external/avm/interfaces/iArbitrum_Inbox.sol +28 -0
  216. package/contracts/external/avm/interfaces/iArbitrum_Outbox.sol +26 -0
  217. package/contracts/external/chainbridge/Bridge.sol +454 -0
  218. package/contracts/external/chainbridge/handlers/GenericHandler.sol +237 -0
  219. package/contracts/external/chainbridge/interfaces/IBridge.sol +20 -0
  220. package/contracts/external/chainbridge/interfaces/IDepositExecute.sol +29 -0
  221. package/contracts/external/chainbridge/interfaces/IERCHandler.sol +33 -0
  222. package/contracts/external/chainbridge/interfaces/IGenericHandler.sol +23 -0
  223. package/contracts/external/ovm/OVM_CrossDomainEnabled.sol +114 -0
  224. package/contracts/external/polygon/lib/Merkle.sol +36 -0
  225. package/contracts/external/polygon/lib/MerklePatriciaProof.sol +139 -0
  226. package/contracts/external/polygon/lib/RLPReader.sol +251 -0
  227. package/contracts/external/polygon/test/FxChildMock.sol +42 -0
  228. package/contracts/external/polygon/test/FxRootMock.sol +32 -0
  229. package/contracts/external/polygon/test/StateSyncMock.sol +26 -0
  230. package/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol +80 -0
  231. package/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol +185 -0
  232. package/contracts/insured-bridge/BridgeAdmin.sol +394 -0
  233. package/contracts/insured-bridge/BridgeDepositBox.sol +245 -0
  234. package/contracts/insured-bridge/BridgePool.sol +980 -0
  235. package/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol +144 -0
  236. package/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol +67 -0
  237. package/contracts/insured-bridge/avm/Arbitrum_Messenger.sol +72 -0
  238. package/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol +44 -0
  239. package/contracts/insured-bridge/interfaces/BridgePoolInterface.sol +14 -0
  240. package/contracts/insured-bridge/interfaces/MessengerInterface.sol +18 -0
  241. package/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol +135 -0
  242. package/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol +84 -0
  243. package/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol +89 -0
  244. package/contracts/insured-bridge/ovm/Optimism_Messenger.sol +34 -0
  245. package/contracts/insured-bridge/ovm/Optimism_Wrapper.sol +59 -0
  246. package/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol +41 -0
  247. package/contracts/insured-bridge/test/Arbitrum_InboxMock.sol +50 -0
  248. package/contracts/insured-bridge/test/BridgeDepositBoxMock.sol +113 -0
  249. package/contracts/insured-bridge/test/MessengerMock.sol +32 -0
  250. package/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol +16 -0
  251. package/contracts/oracle/implementation/Constants.sol +29 -0
  252. package/contracts/oracle/interfaces/FinderInterface.sol +22 -0
  253. package/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol +28 -0
  254. package/contracts/oracle/interfaces/OptimisticOracleInterface.sol +263 -0
  255. package/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol +251 -0
  256. package/contracts/oracle/interfaces/StoreInterface.sol +46 -0
  257. package/package.json +60 -0
@@ -0,0 +1,662 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "BridgeAdmin",
4
+ "sourceName": "contracts/insured-bridge/BridgeAdmin.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_finder",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint32",
15
+ "name": "_optimisticOracleLiveness",
16
+ "type": "uint32"
17
+ },
18
+ {
19
+ "internalType": "uint64",
20
+ "name": "_proposerBondPct",
21
+ "type": "uint64"
22
+ },
23
+ {
24
+ "internalType": "bytes32",
25
+ "name": "_identifier",
26
+ "type": "bytes32"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "anonymous": false,
34
+ "inputs": [
35
+ {
36
+ "indexed": false,
37
+ "internalType": "address[]",
38
+ "name": "bridgePools",
39
+ "type": "address[]"
40
+ },
41
+ {
42
+ "indexed": true,
43
+ "internalType": "address",
44
+ "name": "newAdmin",
45
+ "type": "address"
46
+ }
47
+ ],
48
+ "name": "BridgePoolsAdminTransferred",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "anonymous": false,
53
+ "inputs": [
54
+ {
55
+ "indexed": true,
56
+ "internalType": "uint256",
57
+ "name": "chainId",
58
+ "type": "uint256"
59
+ },
60
+ {
61
+ "indexed": true,
62
+ "internalType": "address",
63
+ "name": "l2Token",
64
+ "type": "address"
65
+ },
66
+ {
67
+ "indexed": false,
68
+ "internalType": "bool",
69
+ "name": "depositsEnabled",
70
+ "type": "bool"
71
+ }
72
+ ],
73
+ "name": "DepositsEnabled",
74
+ "type": "event"
75
+ },
76
+ {
77
+ "anonymous": false,
78
+ "inputs": [
79
+ {
80
+ "indexed": true,
81
+ "internalType": "address",
82
+ "name": "previousOwner",
83
+ "type": "address"
84
+ },
85
+ {
86
+ "indexed": true,
87
+ "internalType": "address",
88
+ "name": "newOwner",
89
+ "type": "address"
90
+ }
91
+ ],
92
+ "name": "OwnershipTransferred",
93
+ "type": "event"
94
+ },
95
+ {
96
+ "anonymous": false,
97
+ "inputs": [
98
+ {
99
+ "indexed": true,
100
+ "internalType": "uint256",
101
+ "name": "chainId",
102
+ "type": "uint256"
103
+ },
104
+ {
105
+ "indexed": true,
106
+ "internalType": "address",
107
+ "name": "newAdmin",
108
+ "type": "address"
109
+ }
110
+ ],
111
+ "name": "SetCrossDomainAdmin",
112
+ "type": "event"
113
+ },
114
+ {
115
+ "anonymous": false,
116
+ "inputs": [
117
+ {
118
+ "indexed": true,
119
+ "internalType": "uint256",
120
+ "name": "chainId",
121
+ "type": "uint256"
122
+ },
123
+ {
124
+ "indexed": true,
125
+ "internalType": "address",
126
+ "name": "l2DepositContract",
127
+ "type": "address"
128
+ },
129
+ {
130
+ "indexed": true,
131
+ "internalType": "address",
132
+ "name": "l2MessengerContract",
133
+ "type": "address"
134
+ }
135
+ ],
136
+ "name": "SetDepositContracts",
137
+ "type": "event"
138
+ },
139
+ {
140
+ "anonymous": false,
141
+ "inputs": [
142
+ {
143
+ "indexed": true,
144
+ "internalType": "address",
145
+ "name": "bridgePool",
146
+ "type": "address"
147
+ },
148
+ {
149
+ "indexed": false,
150
+ "internalType": "uint64",
151
+ "name": "newLpFeeRatePerSecond",
152
+ "type": "uint64"
153
+ }
154
+ ],
155
+ "name": "SetLpFeeRate",
156
+ "type": "event"
157
+ },
158
+ {
159
+ "anonymous": false,
160
+ "inputs": [
161
+ {
162
+ "indexed": true,
163
+ "internalType": "uint256",
164
+ "name": "chainId",
165
+ "type": "uint256"
166
+ },
167
+ {
168
+ "indexed": false,
169
+ "internalType": "uint64",
170
+ "name": "newMinimumBridgingDelay",
171
+ "type": "uint64"
172
+ }
173
+ ],
174
+ "name": "SetMinimumBridgingDelay",
175
+ "type": "event"
176
+ },
177
+ {
178
+ "anonymous": false,
179
+ "inputs": [
180
+ {
181
+ "indexed": true,
182
+ "internalType": "uint32",
183
+ "name": "liveness",
184
+ "type": "uint32"
185
+ }
186
+ ],
187
+ "name": "SetOptimisticOracleLiveness",
188
+ "type": "event"
189
+ },
190
+ {
191
+ "anonymous": false,
192
+ "inputs": [
193
+ {
194
+ "indexed": true,
195
+ "internalType": "uint64",
196
+ "name": "proposerBondPct",
197
+ "type": "uint64"
198
+ }
199
+ ],
200
+ "name": "SetProposerBondPct",
201
+ "type": "event"
202
+ },
203
+ {
204
+ "anonymous": false,
205
+ "inputs": [
206
+ {
207
+ "indexed": true,
208
+ "internalType": "bytes32",
209
+ "name": "identifier",
210
+ "type": "bytes32"
211
+ }
212
+ ],
213
+ "name": "SetRelayIdentifier",
214
+ "type": "event"
215
+ },
216
+ {
217
+ "anonymous": false,
218
+ "inputs": [
219
+ {
220
+ "indexed": false,
221
+ "internalType": "uint256",
222
+ "name": "chainId",
223
+ "type": "uint256"
224
+ },
225
+ {
226
+ "indexed": true,
227
+ "internalType": "address",
228
+ "name": "l1Token",
229
+ "type": "address"
230
+ },
231
+ {
232
+ "indexed": true,
233
+ "internalType": "address",
234
+ "name": "l2Token",
235
+ "type": "address"
236
+ },
237
+ {
238
+ "indexed": true,
239
+ "internalType": "address",
240
+ "name": "bridgePool",
241
+ "type": "address"
242
+ }
243
+ ],
244
+ "name": "WhitelistToken",
245
+ "type": "event"
246
+ },
247
+ {
248
+ "inputs": [
249
+ {
250
+ "internalType": "uint256",
251
+ "name": "chainId",
252
+ "type": "uint256"
253
+ }
254
+ ],
255
+ "name": "depositContracts",
256
+ "outputs": [
257
+ {
258
+ "components": [
259
+ {
260
+ "internalType": "address",
261
+ "name": "depositContract",
262
+ "type": "address"
263
+ },
264
+ {
265
+ "internalType": "address",
266
+ "name": "messengerContract",
267
+ "type": "address"
268
+ }
269
+ ],
270
+ "internalType": "struct BridgeAdminInterface.DepositUtilityContracts",
271
+ "name": "",
272
+ "type": "tuple"
273
+ }
274
+ ],
275
+ "stateMutability": "view",
276
+ "type": "function"
277
+ },
278
+ {
279
+ "inputs": [],
280
+ "name": "finder",
281
+ "outputs": [
282
+ {
283
+ "internalType": "address",
284
+ "name": "",
285
+ "type": "address"
286
+ }
287
+ ],
288
+ "stateMutability": "view",
289
+ "type": "function"
290
+ },
291
+ {
292
+ "inputs": [],
293
+ "name": "identifier",
294
+ "outputs": [
295
+ {
296
+ "internalType": "bytes32",
297
+ "name": "",
298
+ "type": "bytes32"
299
+ }
300
+ ],
301
+ "stateMutability": "view",
302
+ "type": "function"
303
+ },
304
+ {
305
+ "inputs": [],
306
+ "name": "optimisticOracleLiveness",
307
+ "outputs": [
308
+ {
309
+ "internalType": "uint32",
310
+ "name": "",
311
+ "type": "uint32"
312
+ }
313
+ ],
314
+ "stateMutability": "view",
315
+ "type": "function"
316
+ },
317
+ {
318
+ "inputs": [],
319
+ "name": "owner",
320
+ "outputs": [
321
+ {
322
+ "internalType": "address",
323
+ "name": "",
324
+ "type": "address"
325
+ }
326
+ ],
327
+ "stateMutability": "view",
328
+ "type": "function"
329
+ },
330
+ {
331
+ "inputs": [],
332
+ "name": "proposerBondPct",
333
+ "outputs": [
334
+ {
335
+ "internalType": "uint64",
336
+ "name": "",
337
+ "type": "uint64"
338
+ }
339
+ ],
340
+ "stateMutability": "view",
341
+ "type": "function"
342
+ },
343
+ {
344
+ "inputs": [],
345
+ "name": "renounceOwnership",
346
+ "outputs": [],
347
+ "stateMutability": "nonpayable",
348
+ "type": "function"
349
+ },
350
+ {
351
+ "inputs": [
352
+ {
353
+ "internalType": "uint256",
354
+ "name": "chainId",
355
+ "type": "uint256"
356
+ },
357
+ {
358
+ "internalType": "address",
359
+ "name": "admin",
360
+ "type": "address"
361
+ },
362
+ {
363
+ "internalType": "uint256",
364
+ "name": "l1CallValue",
365
+ "type": "uint256"
366
+ },
367
+ {
368
+ "internalType": "uint256",
369
+ "name": "l2Gas",
370
+ "type": "uint256"
371
+ },
372
+ {
373
+ "internalType": "uint256",
374
+ "name": "l2GasPrice",
375
+ "type": "uint256"
376
+ },
377
+ {
378
+ "internalType": "uint256",
379
+ "name": "maxSubmissionCost",
380
+ "type": "uint256"
381
+ }
382
+ ],
383
+ "name": "setCrossDomainAdmin",
384
+ "outputs": [],
385
+ "stateMutability": "payable",
386
+ "type": "function"
387
+ },
388
+ {
389
+ "inputs": [
390
+ {
391
+ "internalType": "uint256",
392
+ "name": "chainId",
393
+ "type": "uint256"
394
+ },
395
+ {
396
+ "internalType": "address",
397
+ "name": "depositContract",
398
+ "type": "address"
399
+ },
400
+ {
401
+ "internalType": "address",
402
+ "name": "messengerContract",
403
+ "type": "address"
404
+ }
405
+ ],
406
+ "name": "setDepositContract",
407
+ "outputs": [],
408
+ "stateMutability": "nonpayable",
409
+ "type": "function"
410
+ },
411
+ {
412
+ "inputs": [
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "chainId",
416
+ "type": "uint256"
417
+ },
418
+ {
419
+ "internalType": "address",
420
+ "name": "l1Token",
421
+ "type": "address"
422
+ },
423
+ {
424
+ "internalType": "bool",
425
+ "name": "depositsEnabled",
426
+ "type": "bool"
427
+ },
428
+ {
429
+ "internalType": "uint256",
430
+ "name": "l1CallValue",
431
+ "type": "uint256"
432
+ },
433
+ {
434
+ "internalType": "uint256",
435
+ "name": "l2Gas",
436
+ "type": "uint256"
437
+ },
438
+ {
439
+ "internalType": "uint256",
440
+ "name": "l2GasPrice",
441
+ "type": "uint256"
442
+ },
443
+ {
444
+ "internalType": "uint256",
445
+ "name": "maxSubmissionCost",
446
+ "type": "uint256"
447
+ }
448
+ ],
449
+ "name": "setEnableDepositsAndRelays",
450
+ "outputs": [],
451
+ "stateMutability": "payable",
452
+ "type": "function"
453
+ },
454
+ {
455
+ "inputs": [
456
+ {
457
+ "internalType": "bytes32",
458
+ "name": "_identifier",
459
+ "type": "bytes32"
460
+ }
461
+ ],
462
+ "name": "setIdentifier",
463
+ "outputs": [],
464
+ "stateMutability": "nonpayable",
465
+ "type": "function"
466
+ },
467
+ {
468
+ "inputs": [
469
+ {
470
+ "internalType": "address",
471
+ "name": "bridgePool",
472
+ "type": "address"
473
+ },
474
+ {
475
+ "internalType": "uint64",
476
+ "name": "newLpFeeRate",
477
+ "type": "uint64"
478
+ }
479
+ ],
480
+ "name": "setLpFeeRatePerSecond",
481
+ "outputs": [],
482
+ "stateMutability": "nonpayable",
483
+ "type": "function"
484
+ },
485
+ {
486
+ "inputs": [
487
+ {
488
+ "internalType": "uint256",
489
+ "name": "chainId",
490
+ "type": "uint256"
491
+ },
492
+ {
493
+ "internalType": "uint64",
494
+ "name": "minimumBridgingDelay",
495
+ "type": "uint64"
496
+ },
497
+ {
498
+ "internalType": "uint256",
499
+ "name": "l1CallValue",
500
+ "type": "uint256"
501
+ },
502
+ {
503
+ "internalType": "uint256",
504
+ "name": "l2Gas",
505
+ "type": "uint256"
506
+ },
507
+ {
508
+ "internalType": "uint256",
509
+ "name": "l2GasPrice",
510
+ "type": "uint256"
511
+ },
512
+ {
513
+ "internalType": "uint256",
514
+ "name": "maxSubmissionCost",
515
+ "type": "uint256"
516
+ }
517
+ ],
518
+ "name": "setMinimumBridgingDelay",
519
+ "outputs": [],
520
+ "stateMutability": "payable",
521
+ "type": "function"
522
+ },
523
+ {
524
+ "inputs": [
525
+ {
526
+ "internalType": "uint32",
527
+ "name": "liveness",
528
+ "type": "uint32"
529
+ }
530
+ ],
531
+ "name": "setOptimisticOracleLiveness",
532
+ "outputs": [],
533
+ "stateMutability": "nonpayable",
534
+ "type": "function"
535
+ },
536
+ {
537
+ "inputs": [
538
+ {
539
+ "internalType": "uint64",
540
+ "name": "_proposerBondPct",
541
+ "type": "uint64"
542
+ }
543
+ ],
544
+ "name": "setProposerBondPct",
545
+ "outputs": [],
546
+ "stateMutability": "nonpayable",
547
+ "type": "function"
548
+ },
549
+ {
550
+ "inputs": [
551
+ {
552
+ "internalType": "address[]",
553
+ "name": "bridgePools",
554
+ "type": "address[]"
555
+ },
556
+ {
557
+ "internalType": "address",
558
+ "name": "newAdmin",
559
+ "type": "address"
560
+ }
561
+ ],
562
+ "name": "transferBridgePoolAdmin",
563
+ "outputs": [],
564
+ "stateMutability": "nonpayable",
565
+ "type": "function"
566
+ },
567
+ {
568
+ "inputs": [
569
+ {
570
+ "internalType": "address",
571
+ "name": "newOwner",
572
+ "type": "address"
573
+ }
574
+ ],
575
+ "name": "transferOwnership",
576
+ "outputs": [],
577
+ "stateMutability": "nonpayable",
578
+ "type": "function"
579
+ },
580
+ {
581
+ "inputs": [
582
+ {
583
+ "internalType": "uint256",
584
+ "name": "chainId",
585
+ "type": "uint256"
586
+ },
587
+ {
588
+ "internalType": "address",
589
+ "name": "l1Token",
590
+ "type": "address"
591
+ },
592
+ {
593
+ "internalType": "address",
594
+ "name": "l2Token",
595
+ "type": "address"
596
+ },
597
+ {
598
+ "internalType": "address",
599
+ "name": "bridgePool",
600
+ "type": "address"
601
+ },
602
+ {
603
+ "internalType": "uint256",
604
+ "name": "l1CallValue",
605
+ "type": "uint256"
606
+ },
607
+ {
608
+ "internalType": "uint256",
609
+ "name": "l2Gas",
610
+ "type": "uint256"
611
+ },
612
+ {
613
+ "internalType": "uint256",
614
+ "name": "l2GasPrice",
615
+ "type": "uint256"
616
+ },
617
+ {
618
+ "internalType": "uint256",
619
+ "name": "maxSubmissionCost",
620
+ "type": "uint256"
621
+ }
622
+ ],
623
+ "name": "whitelistToken",
624
+ "outputs": [],
625
+ "stateMutability": "payable",
626
+ "type": "function"
627
+ },
628
+ {
629
+ "inputs": [
630
+ {
631
+ "internalType": "address",
632
+ "name": "l1Token",
633
+ "type": "address"
634
+ },
635
+ {
636
+ "internalType": "uint256",
637
+ "name": "chainId",
638
+ "type": "uint256"
639
+ }
640
+ ],
641
+ "name": "whitelistedTokens",
642
+ "outputs": [
643
+ {
644
+ "internalType": "address",
645
+ "name": "l2Token",
646
+ "type": "address"
647
+ },
648
+ {
649
+ "internalType": "address",
650
+ "name": "bridgePool",
651
+ "type": "address"
652
+ }
653
+ ],
654
+ "stateMutability": "view",
655
+ "type": "function"
656
+ }
657
+ ],
658
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162002f6138038062002f61833981016040819052620000349162000492565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916600160a01b178155600180546001600160a01b0387166001600160a01b0319909116179055620000af62000128565b6001600160a01b03161415620000fd5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103334b73232b960911b60448201526064015b60405180910390fd5b6200010883620001ce565b6200011382620002ba565b6200011e8162000316565b5050505062000545565b6001546040516302abf57960e61b81527f436f6c6c61746572616c57686974656c6973740000000000000000000000000060048201526000916001600160a01b03169063aafd5e40906024015b60206040518083038186803b1580156200018e57600080fd5b505afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c99190620004fc565b905090565b63bb7448008163ffffffff16106200021e5760405162461bcd60e51b81526020600482015260126024820152714c6976656e65737320746f6f206c6172676560701b6044820152606401620000f4565b60008163ffffffff1611620002765760405162461bcd60e51b815260206004820152601460248201527f4c6976656e6573732063616e6e6f7420626520300000000000000000000000006044820152606401620000f4565b6004805463ffffffff191663ffffffff83169081179091556040517f18c2dabb108f62fad5fa139a7313bd221f388dc0b09727624af21ddfcf76cbaa90600090a250565b60048054600160201b600160601b0319166401000000006001600160401b0384811682029290921792839055604051920416907facfe7e537e15ef4781402154351bc868c74852d83f3cc95d570a290b2c5a4f9990600090a250565b6200032062000423565b6001600160a01b03166390978d1b826040518263ffffffff1660e01b81526004016200034e91815260200190565b60206040518083038186803b1580156200036757600080fd5b505afa1580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a2919062000521565b620003f05760405162461bcd60e51b815260206004820152601960248201527f4964656e746966696572206e6f742072656769737465726564000000000000006044820152606401620000f4565b600581905560405181907f4b924bf6f3485cd9c93a9734e5916e32005eb2f8af99b1f14b2cc1d2ee04dac990600090a250565b6001546040516302abf57960e61b81527f4964656e74696669657257686974656c6973740000000000000000000000000060048201526000916001600160a01b03169063aafd5e409060240162000175565b80516001600160a01b03811681146200048d57600080fd5b919050565b60008060008060808587031215620004a957600080fd5b620004b48562000475565b9350602085015163ffffffff81168114620004ce57600080fd5b60408601519093506001600160401b0381168114620004ec57600080fd5b6060959095015193969295505050565b6000602082840312156200050f57600080fd5b6200051a8262000475565b9392505050565b6000602082840312156200053457600080fd5b815180151581146200051a57600080fd5b612a0c80620005556000396000f3fe6080604052600436106101435760003560e01c80638da5cb5b116100c0578063b9a3c84c11610074578063bfdb388211610059578063bfdb388214610463578063c73a32c314610476578063f2fde38b146104b857600080fd5b8063b9a3c84c146103a7578063bf06c19a146103d457600080fd5b806394bdf812116100a557806394bdf81214610347578063aae3863e14610367578063b09158501461038757600080fd5b80638da5cb5b146102e8578063934441271461033457600080fd5b806363e463f4116101175780637998a1c4116100fc5780637998a1c4146102095780637d726c751461022d5780637eb4fa731461024057600080fd5b806363e463f4146101d4578063715018a6146101f457600080fd5b8062c99206146101485780630a69da281461016a578063173684c51461017d57806350a7c20e146101b4575b600080fd5b34801561015457600080fd5b5061016861016336600461241e565b6104d8565b005b610168610178366004612469565b6105e3565b34801561018957600080fd5b5060045461019a9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156101c057600080fd5b506101686101cf3660046124e8565b6108aa565b3480156101e057600080fd5b506101686101ef3660046125dd565b610abb565b34801561020057600080fd5b50610168610b7a565b34801561021557600080fd5b5061021f60055481565b6040519081526020016101ab565b61016861023b366004612622565b610c6a565b34801561024c57600080fd5b506102b461025b36600461241e565b6040805180820190915260008082526020820152506000908152600260209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff9081168452600190910154169082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ab565b3480156102f457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b61016861034236600461264b565b610eaf565b34801561035357600080fd5b506101686103623660046126c2565b611502565b34801561037357600080fd5b506101686103823660046126f7565b611693565b34801561039357600080fd5b506101686103a2366004612739565b61182b565b3480156103b357600080fd5b5060015461030f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e057600080fd5b506104366103ef366004612754565b73ffffffffffffffffffffffffffffffffffffffff918216600081815260036020818152604080842095845285825283205493909252905260019091015490821692911690565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ab565b61016861047136600461278e565b6118ea565b34801561048257600080fd5b5060045461049f90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ab565b3480156104c457600080fd5b506101686104d33660046127f3565b611bfe565b60005473ffffffffffffffffffffffffffffffffffffffff16331461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610566611daf565b610593600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81611e35565b6105e0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b60008681526002602052604090208054600190910154879161069f9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6106a7611daf565b6106d4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610555565b6000878152600260205260409081902060018101549054915173ffffffffffffffffffffffffffffffffffffffff898116602483015261081a939281169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde7eba7800000000000000000000000000000000000000000000000000000000179052612026565b60405173ffffffffffffffffffffffffffffffffffffffff87169088907fedd8c3ef4433a93a0049a93cb3e6003b2909b8c337b716e016f73d9264d0575f90600090a36108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610933611daf565b610960600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005b82518160ff161015610a2457828160ff168151811061098457610984612810565b60209081029190910101516040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015290911690638f28397090602401600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b505050508080610a1c9061283f565b915050610963565b508073ffffffffffffffffffffffffffffffffffffffff167fb602b0c040b1aa5c1117626e1f378f960b43fa9dddccaffdc88591092acc9cf483604051610a6b9190612886565b60405180910390a2610ab7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610b44611daf565b610b71600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c8161212b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600086815260026020526040902080546001909101548791610d269173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610d2e611daf565b610d5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6000878152600260205260409081902060018101549054915167ffffffffffffffff89166024820152610e2c9273ffffffffffffffffffffffffffffffffffffffff9283169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ec35b3100000000000000000000000000000000000000000000000000000000179052612026565b60405167ffffffffffffffff8716815287907f9c10783ffe02b4c29472a26771187a113643b69290dab9b0c7f00ad0aff416f19060200160405180910390a26108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600088815260026020526040902080546001909101548991610f6b9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610f73611daf565b610fa0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f427269646765506f6f6c2063616e6e6f74206265207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff87166110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c3220746f6b656e2063616e6e6f74206265207a65726f2061646472657373006044820152606401610555565b6110c861226d565b6040517f3a3ab67200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529190911690633a3ab6729060240160206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116991906128e0565b6111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c31546f6b656e20746f6b656e206e6f742077686974656c69737465640000006044820152606401610555565b8773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b815260040160206040518083038186803b15801561122c57600080fd5b505afa158015611240573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126491906128fd565b73ffffffffffffffffffffffffffffffffffffffff1614611307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f42726964676520706f6f6c2068617320646966666572656e74204c3120746f6b60448201527f656e0000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526003602090815260408083208e845280835281842080548e88167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600192830180548f8a1692168217905560029094529382902090810154905491516024810195909552604485019390935260648401919091526114359391821692899291909116903390899089908990608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4dedca2800000000000000000000000000000000000000000000000000000000179052612026565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f4d34491ed5d9114c52a094ed7004a670e7bcd518f930c86d9a72d9811dc986838c6040516114ab91815260200190565b60405180910390a46114f7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61158b611daf565b6115b8600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f27f224ca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8216600482015273ffffffffffffffffffffffffffffffffffffffff8316906327f224ca90602401600060405180830381600087803b15801561162957600080fd5b505af115801561163d573d6000803e3d6000fd5b505060405167ffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff851692507f2379a780c43dc12faf76871501e88b35e33155b1918b7e8787e8173938a68e6c9150602001610a6b565b60005473ffffffffffffffffffffffffffffffffffffffff163314611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61171c611daf565b611749600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6117538282611f60565b600083815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811784556001909301805491871691909216811790915591519192909186917fa701872361de9bbd7f10a5f5c82ccfe3bf4a8d585403ab897afa655244534f3691a4611826600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6118b4611daf565b6118e1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81612335565b60005473ffffffffffffffffffffffffffffffffffffffff16331461196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000878152600260205260409020805460019091015488916119a69173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6119ae611daf565b6119db600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040908190206001015490517f08ed5b1400000000000000000000000000000000000000000000000000000000815288151560048201529116906308ed5b1490602401600060405180830381600087803b158015611a5a57600080fd5b505af1158015611a6e573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff80891660009081526003602090815260408083208d8452825280832054600290925291829020600181015490549251918416602483018190528b151560448401529450611b5c93908116928a9291169033908a908a908a90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f563c7f6000000000000000000000000000000000000000000000000000000000179052612026565b8073ffffffffffffffffffffffffffffffffffffffff16897f4cd6451d8996d5cf60acf25b65a82bddaaf576a2d664855bbe7bedf3e82a58b189604051611ba7911515815260200190565b60405180910390a350611bf4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b73ffffffffffffffffffffffffffffffffffffffff8116611d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005474010000000000000000000000000000000000000000900460ff16611e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610555565b565b611e3d6123a7565b73ffffffffffffffffffffffffffffffffffffffff166390978d1b826040518263ffffffff1660e01b8152600401611e7791815260200190565b60206040518083038186803b158015611e8f57600080fd5b505afa158015611ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec791906128e0565b611f2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4964656e746966696572206e6f742072656769737465726564000000000000006044820152606401610555565b600581905560405181907f4b924bf6f3485cd9c93a9734e5916e32005eb2f8af99b1f14b2cc1d2ee04dac990600090a250565b73ffffffffffffffffffffffffffffffffffffffff821615801590611f9a575073ffffffffffffffffffffffffffffffffffffffff811615155b610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e76616c6964206465706f736974206f72206d657373656e67657220636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610555565b34871461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f57726f6e67206e756d626572206f66204554482073656e7400000000000000006044820152606401610555565b6040517f9e353c7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690639e353c709089906120ef908a908a9084908b908b908b908b9060040161291a565b6000604051808303818588803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b50505050505050505050505050565b63bb7448008163ffffffff161061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c6976656e65737320746f6f206c6172676500000000000000000000000000006044820152606401610555565b60008163ffffffff161161220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c6976656e6573732063616e6e6f7420626520300000000000000000000000006044820152606401610555565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83169081179091556040517f18c2dabb108f62fad5fa139a7313bd221f388dc0b09727624af21ddfcf76cbaa90600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f436f6c6c61746572616c57686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024015b60206040518083038186803b1580156122f857600080fd5b505afa15801561230c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233091906128fd565b905090565b600480547fffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff1664010000000067ffffffffffffffff84811682029290921792839055604051920416907facfe7e537e15ef4781402154351bc868c74852d83f3cc95d570a290b2c5a4f9990600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4964656e74696669657257686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024016122e0565b60006020828403121561243057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e057600080fd5b803561246481612437565b919050565b60008060008060008060c0878903121561248257600080fd5b86359550602087013561249481612437565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156124fb57600080fd5b823567ffffffffffffffff8082111561251357600080fd5b818501915085601f83011261252757600080fd5b813560208282111561253b5761253b6124b9565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110868211171561257e5761257e6124b9565b60405292835281830193508481018201928984111561259c57600080fd5b948201945b838610156125c1576125b286612459565b855294820194938201936125a1565b96506125d09050878201612459565b9450505050509250929050565b6000602082840312156125ef57600080fd5b813563ffffffff8116811461260357600080fd5b9392505050565b803567ffffffffffffffff8116811461246457600080fd5b60008060008060008060c0878903121561263b57600080fd5b863595506124946020880161260a565b600080600080600080600080610100898b03121561266857600080fd5b88359750602089013561267a81612437565b9650604089013561268a81612437565b9550606089013561269a81612437565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600080604083850312156126d557600080fd5b82356126e081612437565b91506126ee6020840161260a565b90509250929050565b60008060006060848603121561270c57600080fd5b83359250602084013561271e81612437565b9150604084013561272e81612437565b809150509250925092565b60006020828403121561274b57600080fd5b6126038261260a565b6000806040838503121561276757600080fd5b823561277281612437565b946020939093013593505050565b80151581146105e057600080fd5b600080600080600080600060e0888a0312156127a957600080fd5b8735965060208801356127bb81612437565b955060408801356127cb81612780565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60006020828403121561280557600080fd5b813561260381612437565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561287d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6020808252825182820181905260009190848201906040850190845b818110156128d457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016128a2565b50909695505050505050565b6000602082840312156128f257600080fd5b815161260381612780565b60006020828403121561290f57600080fd5b815161260381612437565b600073ffffffffffffffffffffffffffffffffffffffff808a1683526020818a16818501528860408501528760608501528660808501528560a085015260e060c0850152845191508160e085015260005b82811015612988578581018201518582016101000152810161296b565b8281111561299b57600061010084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101610100019897505050505050505056fea2646970667358221220bf43b3df2c076bc2dfd2e8bc07869817d88fc623cb74d6ef0e1e69abd273aecf64736f6c63430008090033",
659
+ "deployedBytecode": "0x6080604052600436106101435760003560e01c80638da5cb5b116100c0578063b9a3c84c11610074578063bfdb388211610059578063bfdb388214610463578063c73a32c314610476578063f2fde38b146104b857600080fd5b8063b9a3c84c146103a7578063bf06c19a146103d457600080fd5b806394bdf812116100a557806394bdf81214610347578063aae3863e14610367578063b09158501461038757600080fd5b80638da5cb5b146102e8578063934441271461033457600080fd5b806363e463f4116101175780637998a1c4116100fc5780637998a1c4146102095780637d726c751461022d5780637eb4fa731461024057600080fd5b806363e463f4146101d4578063715018a6146101f457600080fd5b8062c99206146101485780630a69da281461016a578063173684c51461017d57806350a7c20e146101b4575b600080fd5b34801561015457600080fd5b5061016861016336600461241e565b6104d8565b005b610168610178366004612469565b6105e3565b34801561018957600080fd5b5060045461019a9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156101c057600080fd5b506101686101cf3660046124e8565b6108aa565b3480156101e057600080fd5b506101686101ef3660046125dd565b610abb565b34801561020057600080fd5b50610168610b7a565b34801561021557600080fd5b5061021f60055481565b6040519081526020016101ab565b61016861023b366004612622565b610c6a565b34801561024c57600080fd5b506102b461025b36600461241e565b6040805180820190915260008082526020820152506000908152600260209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff9081168452600190910154169082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ab565b3480156102f457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b61016861034236600461264b565b610eaf565b34801561035357600080fd5b506101686103623660046126c2565b611502565b34801561037357600080fd5b506101686103823660046126f7565b611693565b34801561039357600080fd5b506101686103a2366004612739565b61182b565b3480156103b357600080fd5b5060015461030f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e057600080fd5b506104366103ef366004612754565b73ffffffffffffffffffffffffffffffffffffffff918216600081815260036020818152604080842095845285825283205493909252905260019091015490821692911690565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ab565b61016861047136600461278e565b6118ea565b34801561048257600080fd5b5060045461049f90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ab565b3480156104c457600080fd5b506101686104d33660046127f3565b611bfe565b60005473ffffffffffffffffffffffffffffffffffffffff16331461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610566611daf565b610593600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81611e35565b6105e0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b60008681526002602052604090208054600190910154879161069f9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6106a7611daf565b6106d4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610555565b6000878152600260205260409081902060018101549054915173ffffffffffffffffffffffffffffffffffffffff898116602483015261081a939281169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde7eba7800000000000000000000000000000000000000000000000000000000179052612026565b60405173ffffffffffffffffffffffffffffffffffffffff87169088907fedd8c3ef4433a93a0049a93cb3e6003b2909b8c337b716e016f73d9264d0575f90600090a36108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610933611daf565b610960600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005b82518160ff161015610a2457828160ff168151811061098457610984612810565b60209081029190910101516040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015290911690638f28397090602401600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b505050508080610a1c9061283f565b915050610963565b508073ffffffffffffffffffffffffffffffffffffffff167fb602b0c040b1aa5c1117626e1f378f960b43fa9dddccaffdc88591092acc9cf483604051610a6b9190612886565b60405180910390a2610ab7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610b44611daf565b610b71600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c8161212b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600086815260026020526040902080546001909101548791610d269173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610d2e611daf565b610d5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6000878152600260205260409081902060018101549054915167ffffffffffffffff89166024820152610e2c9273ffffffffffffffffffffffffffffffffffffffff9283169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ec35b3100000000000000000000000000000000000000000000000000000000179052612026565b60405167ffffffffffffffff8716815287907f9c10783ffe02b4c29472a26771187a113643b69290dab9b0c7f00ad0aff416f19060200160405180910390a26108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600088815260026020526040902080546001909101548991610f6b9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610f73611daf565b610fa0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f427269646765506f6f6c2063616e6e6f74206265207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff87166110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c3220746f6b656e2063616e6e6f74206265207a65726f2061646472657373006044820152606401610555565b6110c861226d565b6040517f3a3ab67200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529190911690633a3ab6729060240160206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116991906128e0565b6111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c31546f6b656e20746f6b656e206e6f742077686974656c69737465640000006044820152606401610555565b8773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b815260040160206040518083038186803b15801561122c57600080fd5b505afa158015611240573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126491906128fd565b73ffffffffffffffffffffffffffffffffffffffff1614611307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f42726964676520706f6f6c2068617320646966666572656e74204c3120746f6b60448201527f656e0000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526003602090815260408083208e845280835281842080548e88167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600192830180548f8a1692168217905560029094529382902090810154905491516024810195909552604485019390935260648401919091526114359391821692899291909116903390899089908990608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4dedca2800000000000000000000000000000000000000000000000000000000179052612026565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f4d34491ed5d9114c52a094ed7004a670e7bcd518f930c86d9a72d9811dc986838c6040516114ab91815260200190565b60405180910390a46114f7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61158b611daf565b6115b8600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f27f224ca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8216600482015273ffffffffffffffffffffffffffffffffffffffff8316906327f224ca90602401600060405180830381600087803b15801561162957600080fd5b505af115801561163d573d6000803e3d6000fd5b505060405167ffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff851692507f2379a780c43dc12faf76871501e88b35e33155b1918b7e8787e8173938a68e6c9150602001610a6b565b60005473ffffffffffffffffffffffffffffffffffffffff163314611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61171c611daf565b611749600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6117538282611f60565b600083815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811784556001909301805491871691909216811790915591519192909186917fa701872361de9bbd7f10a5f5c82ccfe3bf4a8d585403ab897afa655244534f3691a4611826600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6118b4611daf565b6118e1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81612335565b60005473ffffffffffffffffffffffffffffffffffffffff16331461196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000878152600260205260409020805460019091015488916119a69173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6119ae611daf565b6119db600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040908190206001015490517f08ed5b1400000000000000000000000000000000000000000000000000000000815288151560048201529116906308ed5b1490602401600060405180830381600087803b158015611a5a57600080fd5b505af1158015611a6e573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff80891660009081526003602090815260408083208d8452825280832054600290925291829020600181015490549251918416602483018190528b151560448401529450611b5c93908116928a9291169033908a908a908a90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f563c7f6000000000000000000000000000000000000000000000000000000000179052612026565b8073ffffffffffffffffffffffffffffffffffffffff16897f4cd6451d8996d5cf60acf25b65a82bddaaf576a2d664855bbe7bedf3e82a58b189604051611ba7911515815260200190565b60405180910390a350611bf4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b73ffffffffffffffffffffffffffffffffffffffff8116611d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005474010000000000000000000000000000000000000000900460ff16611e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610555565b565b611e3d6123a7565b73ffffffffffffffffffffffffffffffffffffffff166390978d1b826040518263ffffffff1660e01b8152600401611e7791815260200190565b60206040518083038186803b158015611e8f57600080fd5b505afa158015611ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec791906128e0565b611f2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4964656e746966696572206e6f742072656769737465726564000000000000006044820152606401610555565b600581905560405181907f4b924bf6f3485cd9c93a9734e5916e32005eb2f8af99b1f14b2cc1d2ee04dac990600090a250565b73ffffffffffffffffffffffffffffffffffffffff821615801590611f9a575073ffffffffffffffffffffffffffffffffffffffff811615155b610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e76616c6964206465706f736974206f72206d657373656e67657220636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610555565b34871461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f57726f6e67206e756d626572206f66204554482073656e7400000000000000006044820152606401610555565b6040517f9e353c7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690639e353c709089906120ef908a908a9084908b908b908b908b9060040161291a565b6000604051808303818588803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b50505050505050505050505050565b63bb7448008163ffffffff161061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c6976656e65737320746f6f206c6172676500000000000000000000000000006044820152606401610555565b60008163ffffffff161161220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c6976656e6573732063616e6e6f7420626520300000000000000000000000006044820152606401610555565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83169081179091556040517f18c2dabb108f62fad5fa139a7313bd221f388dc0b09727624af21ddfcf76cbaa90600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f436f6c6c61746572616c57686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024015b60206040518083038186803b1580156122f857600080fd5b505afa15801561230c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233091906128fd565b905090565b600480547fffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff1664010000000067ffffffffffffffff84811682029290921792839055604051920416907facfe7e537e15ef4781402154351bc868c74852d83f3cc95d570a290b2c5a4f9990600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4964656e74696669657257686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024016122e0565b60006020828403121561243057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e057600080fd5b803561246481612437565b919050565b60008060008060008060c0878903121561248257600080fd5b86359550602087013561249481612437565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156124fb57600080fd5b823567ffffffffffffffff8082111561251357600080fd5b818501915085601f83011261252757600080fd5b813560208282111561253b5761253b6124b9565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110868211171561257e5761257e6124b9565b60405292835281830193508481018201928984111561259c57600080fd5b948201945b838610156125c1576125b286612459565b855294820194938201936125a1565b96506125d09050878201612459565b9450505050509250929050565b6000602082840312156125ef57600080fd5b813563ffffffff8116811461260357600080fd5b9392505050565b803567ffffffffffffffff8116811461246457600080fd5b60008060008060008060c0878903121561263b57600080fd5b863595506124946020880161260a565b600080600080600080600080610100898b03121561266857600080fd5b88359750602089013561267a81612437565b9650604089013561268a81612437565b9550606089013561269a81612437565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600080604083850312156126d557600080fd5b82356126e081612437565b91506126ee6020840161260a565b90509250929050565b60008060006060848603121561270c57600080fd5b83359250602084013561271e81612437565b9150604084013561272e81612437565b809150509250925092565b60006020828403121561274b57600080fd5b6126038261260a565b6000806040838503121561276757600080fd5b823561277281612437565b946020939093013593505050565b80151581146105e057600080fd5b600080600080600080600060e0888a0312156127a957600080fd5b8735965060208801356127bb81612437565b955060408801356127cb81612780565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60006020828403121561280557600080fd5b813561260381612437565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561287d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6020808252825182820181905260009190848201906040850190845b818110156128d457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016128a2565b50909695505050505050565b6000602082840312156128f257600080fd5b815161260381612780565b60006020828403121561290f57600080fd5b815161260381612437565b600073ffffffffffffffffffffffffffffffffffffffff808a1683526020818a16818501528860408501528760608501528660808501528560a085015260e060c0850152845191508160e085015260005b82811015612988578581018201518582016101000152810161296b565b8281111561299b57600061010084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101610100019897505050505050505056fea2646970667358221220bf43b3df2c076bc2dfd2e8bc07869817d88fc623cb74d6ef0e1e69abd273aecf64736f6c63430008090033",
660
+ "linkReferences": {},
661
+ "deployedLinkReferences": {}
662
+ }