@layerzerolabs/protocol-v2-messagelib-evm-contracts 1.2.96 → 1.2.97

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 (272) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/Executor.sol/Executor.json +1413 -0
  3. package/artifacts/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  4. package/artifacts/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +546 -0
  5. package/artifacts/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  6. package/artifacts/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  7. package/artifacts/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  8. package/artifacts/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  9. package/artifacts/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  10. package/artifacts/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +139 -0
  11. package/artifacts/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +260 -0
  12. package/artifacts/contracts/Treasury.sol/Treasury.json +309 -0
  13. package/artifacts/contracts/Worker.sol/Worker.json +579 -0
  14. package/artifacts/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  15. package/artifacts/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  16. package/artifacts/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  17. package/artifacts/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  18. package/artifacts/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  19. package/artifacts/contracts/interfaces/IExecutor.sol/IExecutor.json +487 -0
  20. package/artifacts/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +410 -0
  21. package/artifacts/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  22. package/artifacts/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  23. package/artifacts/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +59 -0
  24. package/artifacts/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  25. package/artifacts/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  26. package/artifacts/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +31 -0
  27. package/artifacts/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  28. package/artifacts/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +369 -0
  29. package/artifacts/contracts/lowlat/MultiCall.sol/MultiCall.json +120 -0
  30. package/artifacts/contracts/mocks/DVNMock.sol/DVNMock.json +135 -0
  31. package/artifacts/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +397 -0
  32. package/artifacts/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  33. package/artifacts/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  34. package/artifacts/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  35. package/artifacts/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  36. package/artifacts/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  37. package/artifacts/contracts/uln/dvn/DVN.sol/DVN.json +1509 -0
  38. package/artifacts/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +695 -0
  39. package/artifacts/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +164 -0
  40. package/artifacts/contracts/uln/dvn/MultiSig.sol/MultiSig.json +217 -0
  41. package/artifacts/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +231 -0
  42. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  43. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  44. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  45. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  46. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  47. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  48. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  49. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  50. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  51. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  52. package/artifacts/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  53. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  54. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  55. package/artifacts/contracts/uln/interfaces/IDVN.sol/IDVN.json +438 -0
  56. package/artifacts/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +374 -0
  57. package/artifacts/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  58. package/artifacts/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +79 -0
  59. package/artifacts/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  60. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  61. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  62. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  63. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  64. package/artifacts/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  65. package/artifacts/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +26 -0
  66. package/artifacts/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +16 -0
  67. package/artifacts/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  68. package/artifacts/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1288 -0
  69. package/artifacts/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +285 -0
  70. package/artifacts/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +387 -0
  71. package/artifacts/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  72. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  73. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  74. package/artifacts/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  75. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  76. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  77. package/artifacts/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  78. package/artifacts/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  79. package/artifacts/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  80. package/artifacts/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  81. package/artifacts/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  82. package/artifacts/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  83. package/artifacts/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  84. package/artifacts/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  85. package/artifacts/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  86. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  87. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  88. package/artifacts/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  89. package/artifacts/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  90. package/artifacts/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  91. package/artifacts/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  92. package/artifacts-tron/contracts/Executor.sol/Executor.json +1413 -0
  93. package/artifacts-tron/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  94. package/artifacts-tron/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +546 -0
  95. package/artifacts-tron/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  96. package/artifacts-tron/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  97. package/artifacts-tron/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  98. package/artifacts-tron/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  99. package/artifacts-tron/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  100. package/artifacts-tron/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +139 -0
  101. package/artifacts-tron/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +260 -0
  102. package/artifacts-tron/contracts/Treasury.sol/Treasury.json +309 -0
  103. package/artifacts-tron/contracts/Worker.sol/Worker.json +579 -0
  104. package/artifacts-tron/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  105. package/artifacts-tron/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  106. package/artifacts-tron/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  107. package/artifacts-tron/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  108. package/artifacts-tron/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  109. package/artifacts-tron/contracts/interfaces/IExecutor.sol/IExecutor.json +487 -0
  110. package/artifacts-tron/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +410 -0
  111. package/artifacts-tron/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  112. package/artifacts-tron/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  113. package/artifacts-tron/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +59 -0
  114. package/artifacts-tron/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  115. package/artifacts-tron/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  116. package/artifacts-tron/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +31 -0
  117. package/artifacts-tron/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  118. package/artifacts-tron/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +369 -0
  119. package/artifacts-tron/contracts/lowlat/MultiCall.sol/MultiCall.json +120 -0
  120. package/artifacts-tron/contracts/mocks/DVNMock.sol/DVNMock.json +135 -0
  121. package/artifacts-tron/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +397 -0
  122. package/artifacts-tron/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  123. package/artifacts-tron/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  124. package/artifacts-tron/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  125. package/artifacts-tron/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  126. package/artifacts-tron/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  127. package/artifacts-tron/contracts/uln/dvn/DVN.sol/DVN.json +1509 -0
  128. package/artifacts-tron/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +695 -0
  129. package/artifacts-tron/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +164 -0
  130. package/artifacts-tron/contracts/uln/dvn/MultiSig.sol/MultiSig.json +217 -0
  131. package/artifacts-tron/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +231 -0
  132. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  133. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  134. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  135. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  136. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  137. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  138. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  139. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  140. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  141. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  142. package/artifacts-tron/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  143. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  144. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  145. package/artifacts-tron/contracts/uln/interfaces/IDVN.sol/IDVN.json +438 -0
  146. package/artifacts-tron/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +374 -0
  147. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  148. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +79 -0
  149. package/artifacts-tron/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  150. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  151. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  152. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  153. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  154. package/artifacts-tron/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  155. package/artifacts-tron/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +26 -0
  156. package/artifacts-tron/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +16 -0
  157. package/artifacts-tron/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  158. package/artifacts-tron/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1288 -0
  159. package/artifacts-tron/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +285 -0
  160. package/artifacts-tron/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +387 -0
  161. package/artifacts-tron/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  162. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  163. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  164. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  165. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  166. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  167. package/artifacts-tron/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  168. package/artifacts-tron/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  169. package/artifacts-tron/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  170. package/artifacts-tron/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  171. package/artifacts-tron/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  172. package/artifacts-tron/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  173. package/artifacts-tron/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  174. package/artifacts-tron/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  175. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  176. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  177. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  178. package/artifacts-tron/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  179. package/artifacts-tron/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  180. package/artifacts-tron/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  181. package/artifacts-tron/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  182. package/artifacts-zk/contracts/Executor.sol/Executor.json +1414 -0
  183. package/artifacts-zk/contracts/Executor.sol/ILayerZeroEndpointV2.json +231 -0
  184. package/artifacts-zk/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +547 -0
  185. package/artifacts-zk/contracts/MessageLibBase.sol/MessageLibBase.json +17 -0
  186. package/artifacts-zk/contracts/PriceFeed.sol/PriceFeed.json +695 -0
  187. package/artifacts-zk/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +155 -0
  188. package/artifacts-zk/contracts/SendLibBase.sol/SendLibBase.json +382 -0
  189. package/artifacts-zk/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +820 -0
  190. package/artifacts-zk/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +140 -0
  191. package/artifacts-zk/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +261 -0
  192. package/artifacts-zk/contracts/Treasury.sol/Treasury.json +310 -0
  193. package/artifacts-zk/contracts/Worker.sol/Worker.json +580 -0
  194. package/artifacts-zk/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +11 -0
  195. package/artifacts-zk/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +330 -0
  196. package/artifacts-zk/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +93 -0
  197. package/artifacts-zk/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +11 -0
  198. package/artifacts-zk/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +221 -0
  199. package/artifacts-zk/contracts/interfaces/IExecutor.sol/IExecutor.json +488 -0
  200. package/artifacts-zk/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +411 -0
  201. package/artifacts-zk/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +80 -0
  202. package/artifacts-zk/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +223 -0
  203. package/artifacts-zk/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +60 -0
  204. package/artifacts-zk/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +80 -0
  205. package/artifacts-zk/contracts/interfaces/IWorker.sol/IWorker.json +222 -0
  206. package/artifacts-zk/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +32 -0
  207. package/artifacts-zk/contracts/libs/SafeCall.sol/SafeCall.json +11 -0
  208. package/artifacts-zk/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +370 -0
  209. package/artifacts-zk/contracts/lowlat/MultiCall.sol/MultiCall.json +121 -0
  210. package/artifacts-zk/contracts/mocks/DVNMock.sol/DVNMock.json +136 -0
  211. package/artifacts-zk/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +398 -0
  212. package/artifacts-zk/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +36 -0
  213. package/artifacts-zk/contracts/uln/LzExecutor.sol/LzExecutor.json +516 -0
  214. package/artifacts-zk/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +552 -0
  215. package/artifacts-zk/contracts/uln/SendUlnBase.sol/SendUlnBase.json +413 -0
  216. package/artifacts-zk/contracts/uln/UlnBase.sol/UlnBase.json +388 -0
  217. package/artifacts-zk/contracts/uln/dvn/DVN.sol/DVN.json +1510 -0
  218. package/artifacts-zk/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +696 -0
  219. package/artifacts-zk/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +165 -0
  220. package/artifacts-zk/contracts/uln/dvn/MultiSig.sol/MultiSig.json +218 -0
  221. package/artifacts-zk/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +232 -0
  222. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1041 -0
  223. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +418 -0
  224. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +790 -0
  225. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +35 -0
  226. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +31 -0
  227. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +937 -0
  228. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +869 -0
  229. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1172 -0
  230. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +31 -0
  231. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +575 -0
  232. package/artifacts-zk/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +17 -0
  233. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +925 -0
  234. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +892 -0
  235. package/artifacts-zk/contracts/uln/interfaces/IDVN.sol/IDVN.json +439 -0
  236. package/artifacts-zk/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +375 -0
  237. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +97 -0
  238. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +80 -0
  239. package/artifacts-zk/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +53 -0
  240. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +161 -0
  241. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +294 -0
  242. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +79 -0
  243. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +302 -0
  244. package/artifacts-zk/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +28 -0
  245. package/artifacts-zk/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +27 -0
  246. package/artifacts-zk/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +17 -0
  247. package/artifacts-zk/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +55 -0
  248. package/artifacts-zk/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1289 -0
  249. package/artifacts-zk/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +286 -0
  250. package/artifacts-zk/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +388 -0
  251. package/artifacts-zk/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +130 -0
  252. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +69 -0
  253. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +417 -0
  254. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1001 -0
  255. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +179 -0
  256. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +127 -0
  257. package/artifacts-zk/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +805 -0
  258. package/artifacts-zk/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1279 -0
  259. package/artifacts-zk/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +95 -0
  260. package/artifacts-zk/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +248 -0
  261. package/artifacts-zk/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +41 -0
  262. package/artifacts-zk/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +45 -0
  263. package/artifacts-zk/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +30 -0
  264. package/artifacts-zk/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +94 -0
  265. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +758 -0
  266. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +147 -0
  267. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +252 -0
  268. package/artifacts-zk/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1260 -0
  269. package/artifacts-zk/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +593 -0
  270. package/artifacts-zk/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +182 -0
  271. package/artifacts-zk/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +161 -0
  272. package/package.json +6 -6
@@ -0,0 +1,1413 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Executor",
4
+ "sourceName": "contracts/Executor.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_to",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_value",
16
+ "type": "uint256"
17
+ }
18
+ ],
19
+ "name": "Transfer_NativeFailed",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "Transfer_ToAddressIsZero",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "Worker_NotAllowed",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "Worker_OnlyMessageLib",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "Worker_RoleRenouncingDisabled",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "anonymous": false,
44
+ "inputs": [
45
+ {
46
+ "components": [
47
+ {
48
+ "internalType": "uint32",
49
+ "name": "dstEid",
50
+ "type": "uint32"
51
+ },
52
+ {
53
+ "internalType": "uint64",
54
+ "name": "lzReceiveBaseGas",
55
+ "type": "uint64"
56
+ },
57
+ {
58
+ "internalType": "uint64",
59
+ "name": "lzComposeBaseGas",
60
+ "type": "uint64"
61
+ },
62
+ {
63
+ "internalType": "uint16",
64
+ "name": "multiplierBps",
65
+ "type": "uint16"
66
+ },
67
+ {
68
+ "internalType": "uint128",
69
+ "name": "floorMarginUSD",
70
+ "type": "uint128"
71
+ },
72
+ {
73
+ "internalType": "uint128",
74
+ "name": "nativeCap",
75
+ "type": "uint128"
76
+ }
77
+ ],
78
+ "indexed": false,
79
+ "internalType": "struct IExecutor.DstConfigParam[]",
80
+ "name": "params",
81
+ "type": "tuple[]"
82
+ }
83
+ ],
84
+ "name": "DstConfigSet",
85
+ "type": "event"
86
+ },
87
+ {
88
+ "anonymous": false,
89
+ "inputs": [
90
+ {
91
+ "indexed": false,
92
+ "internalType": "uint8",
93
+ "name": "version",
94
+ "type": "uint8"
95
+ }
96
+ ],
97
+ "name": "Initialized",
98
+ "type": "event"
99
+ },
100
+ {
101
+ "anonymous": false,
102
+ "inputs": [
103
+ {
104
+ "components": [
105
+ {
106
+ "internalType": "uint32",
107
+ "name": "srcEid",
108
+ "type": "uint32"
109
+ },
110
+ {
111
+ "internalType": "bytes32",
112
+ "name": "sender",
113
+ "type": "bytes32"
114
+ },
115
+ {
116
+ "internalType": "uint64",
117
+ "name": "nonce",
118
+ "type": "uint64"
119
+ }
120
+ ],
121
+ "indexed": false,
122
+ "internalType": "struct Origin",
123
+ "name": "origin",
124
+ "type": "tuple"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "uint32",
129
+ "name": "dstEid",
130
+ "type": "uint32"
131
+ },
132
+ {
133
+ "indexed": false,
134
+ "internalType": "address",
135
+ "name": "oapp",
136
+ "type": "address"
137
+ },
138
+ {
139
+ "components": [
140
+ {
141
+ "internalType": "address",
142
+ "name": "receiver",
143
+ "type": "address"
144
+ },
145
+ {
146
+ "internalType": "uint256",
147
+ "name": "amount",
148
+ "type": "uint256"
149
+ }
150
+ ],
151
+ "indexed": false,
152
+ "internalType": "struct IExecutor.NativeDropParams[]",
153
+ "name": "params",
154
+ "type": "tuple[]"
155
+ },
156
+ {
157
+ "indexed": false,
158
+ "internalType": "bool[]",
159
+ "name": "success",
160
+ "type": "bool[]"
161
+ }
162
+ ],
163
+ "name": "NativeDropApplied",
164
+ "type": "event"
165
+ },
166
+ {
167
+ "anonymous": false,
168
+ "inputs": [
169
+ {
170
+ "indexed": false,
171
+ "internalType": "address",
172
+ "name": "account",
173
+ "type": "address"
174
+ }
175
+ ],
176
+ "name": "Paused",
177
+ "type": "event"
178
+ },
179
+ {
180
+ "anonymous": false,
181
+ "inputs": [
182
+ {
183
+ "indexed": true,
184
+ "internalType": "address",
185
+ "name": "sender",
186
+ "type": "address"
187
+ },
188
+ {
189
+ "indexed": false,
190
+ "internalType": "bool",
191
+ "name": "whitelisted",
192
+ "type": "bool"
193
+ }
194
+ ],
195
+ "name": "PriceFloorWhitelistSet",
196
+ "type": "event"
197
+ },
198
+ {
199
+ "anonymous": false,
200
+ "inputs": [
201
+ {
202
+ "indexed": false,
203
+ "internalType": "address",
204
+ "name": "receiveUln301",
205
+ "type": "address"
206
+ }
207
+ ],
208
+ "name": "ReceiveUln301Set",
209
+ "type": "event"
210
+ },
211
+ {
212
+ "anonymous": false,
213
+ "inputs": [
214
+ {
215
+ "indexed": true,
216
+ "internalType": "bytes32",
217
+ "name": "role",
218
+ "type": "bytes32"
219
+ },
220
+ {
221
+ "indexed": true,
222
+ "internalType": "bytes32",
223
+ "name": "previousAdminRole",
224
+ "type": "bytes32"
225
+ },
226
+ {
227
+ "indexed": true,
228
+ "internalType": "bytes32",
229
+ "name": "newAdminRole",
230
+ "type": "bytes32"
231
+ }
232
+ ],
233
+ "name": "RoleAdminChanged",
234
+ "type": "event"
235
+ },
236
+ {
237
+ "anonymous": false,
238
+ "inputs": [
239
+ {
240
+ "indexed": true,
241
+ "internalType": "bytes32",
242
+ "name": "role",
243
+ "type": "bytes32"
244
+ },
245
+ {
246
+ "indexed": true,
247
+ "internalType": "address",
248
+ "name": "account",
249
+ "type": "address"
250
+ },
251
+ {
252
+ "indexed": true,
253
+ "internalType": "address",
254
+ "name": "sender",
255
+ "type": "address"
256
+ }
257
+ ],
258
+ "name": "RoleGranted",
259
+ "type": "event"
260
+ },
261
+ {
262
+ "anonymous": false,
263
+ "inputs": [
264
+ {
265
+ "indexed": true,
266
+ "internalType": "bytes32",
267
+ "name": "role",
268
+ "type": "bytes32"
269
+ },
270
+ {
271
+ "indexed": true,
272
+ "internalType": "address",
273
+ "name": "account",
274
+ "type": "address"
275
+ },
276
+ {
277
+ "indexed": true,
278
+ "internalType": "address",
279
+ "name": "sender",
280
+ "type": "address"
281
+ }
282
+ ],
283
+ "name": "RoleRevoked",
284
+ "type": "event"
285
+ },
286
+ {
287
+ "anonymous": false,
288
+ "inputs": [
289
+ {
290
+ "indexed": false,
291
+ "internalType": "uint16",
292
+ "name": "multiplierBps",
293
+ "type": "uint16"
294
+ }
295
+ ],
296
+ "name": "SetDefaultMultiplierBps",
297
+ "type": "event"
298
+ },
299
+ {
300
+ "anonymous": false,
301
+ "inputs": [
302
+ {
303
+ "indexed": false,
304
+ "internalType": "address",
305
+ "name": "priceFeed",
306
+ "type": "address"
307
+ }
308
+ ],
309
+ "name": "SetPriceFeed",
310
+ "type": "event"
311
+ },
312
+ {
313
+ "anonymous": false,
314
+ "inputs": [
315
+ {
316
+ "indexed": false,
317
+ "internalType": "uint32",
318
+ "name": "dstEid",
319
+ "type": "uint32"
320
+ },
321
+ {
322
+ "indexed": false,
323
+ "internalType": "uint8[]",
324
+ "name": "optionTypes",
325
+ "type": "uint8[]"
326
+ }
327
+ ],
328
+ "name": "SetSupportedOptionTypes",
329
+ "type": "event"
330
+ },
331
+ {
332
+ "anonymous": false,
333
+ "inputs": [
334
+ {
335
+ "indexed": false,
336
+ "internalType": "address",
337
+ "name": "workerLib",
338
+ "type": "address"
339
+ }
340
+ ],
341
+ "name": "SetWorkerLib",
342
+ "type": "event"
343
+ },
344
+ {
345
+ "anonymous": false,
346
+ "inputs": [
347
+ {
348
+ "indexed": false,
349
+ "internalType": "address",
350
+ "name": "account",
351
+ "type": "address"
352
+ }
353
+ ],
354
+ "name": "Unpaused",
355
+ "type": "event"
356
+ },
357
+ {
358
+ "anonymous": false,
359
+ "inputs": [
360
+ {
361
+ "indexed": false,
362
+ "internalType": "address",
363
+ "name": "lib",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "indexed": false,
368
+ "internalType": "address",
369
+ "name": "to",
370
+ "type": "address"
371
+ },
372
+ {
373
+ "indexed": false,
374
+ "internalType": "uint256",
375
+ "name": "amount",
376
+ "type": "uint256"
377
+ }
378
+ ],
379
+ "name": "Withdraw",
380
+ "type": "event"
381
+ },
382
+ {
383
+ "inputs": [],
384
+ "name": "DEFAULT_ADMIN_ROLE",
385
+ "outputs": [
386
+ {
387
+ "internalType": "bytes32",
388
+ "name": "",
389
+ "type": "bytes32"
390
+ }
391
+ ],
392
+ "stateMutability": "view",
393
+ "type": "function"
394
+ },
395
+ {
396
+ "inputs": [],
397
+ "name": "allowlistSize",
398
+ "outputs": [
399
+ {
400
+ "internalType": "uint64",
401
+ "name": "",
402
+ "type": "uint64"
403
+ }
404
+ ],
405
+ "stateMutability": "view",
406
+ "type": "function"
407
+ },
408
+ {
409
+ "inputs": [
410
+ {
411
+ "internalType": "uint32",
412
+ "name": "_dstEid",
413
+ "type": "uint32"
414
+ },
415
+ {
416
+ "internalType": "address",
417
+ "name": "_sender",
418
+ "type": "address"
419
+ },
420
+ {
421
+ "internalType": "uint256",
422
+ "name": "_calldataSize",
423
+ "type": "uint256"
424
+ },
425
+ {
426
+ "internalType": "bytes",
427
+ "name": "_options",
428
+ "type": "bytes"
429
+ }
430
+ ],
431
+ "name": "assignJob",
432
+ "outputs": [
433
+ {
434
+ "internalType": "uint256",
435
+ "name": "fee",
436
+ "type": "uint256"
437
+ }
438
+ ],
439
+ "stateMutability": "nonpayable",
440
+ "type": "function"
441
+ },
442
+ {
443
+ "inputs": [
444
+ {
445
+ "internalType": "address",
446
+ "name": "_sender",
447
+ "type": "address"
448
+ },
449
+ {
450
+ "internalType": "bytes",
451
+ "name": "_options",
452
+ "type": "bytes"
453
+ }
454
+ ],
455
+ "name": "assignJob",
456
+ "outputs": [
457
+ {
458
+ "internalType": "uint256",
459
+ "name": "fee",
460
+ "type": "uint256"
461
+ }
462
+ ],
463
+ "stateMutability": "nonpayable",
464
+ "type": "function"
465
+ },
466
+ {
467
+ "inputs": [
468
+ {
469
+ "internalType": "address",
470
+ "name": "_from",
471
+ "type": "address"
472
+ },
473
+ {
474
+ "internalType": "address",
475
+ "name": "_to",
476
+ "type": "address"
477
+ },
478
+ {
479
+ "internalType": "bytes32",
480
+ "name": "_guid",
481
+ "type": "bytes32"
482
+ },
483
+ {
484
+ "internalType": "uint16",
485
+ "name": "_index",
486
+ "type": "uint16"
487
+ },
488
+ {
489
+ "internalType": "bytes",
490
+ "name": "_message",
491
+ "type": "bytes"
492
+ },
493
+ {
494
+ "internalType": "bytes",
495
+ "name": "_extraData",
496
+ "type": "bytes"
497
+ },
498
+ {
499
+ "internalType": "uint256",
500
+ "name": "_gasLimit",
501
+ "type": "uint256"
502
+ }
503
+ ],
504
+ "name": "compose302",
505
+ "outputs": [],
506
+ "stateMutability": "payable",
507
+ "type": "function"
508
+ },
509
+ {
510
+ "inputs": [],
511
+ "name": "defaultMultiplierBps",
512
+ "outputs": [
513
+ {
514
+ "internalType": "uint16",
515
+ "name": "",
516
+ "type": "uint16"
517
+ }
518
+ ],
519
+ "stateMutability": "view",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ {
525
+ "internalType": "uint32",
526
+ "name": "dstEid",
527
+ "type": "uint32"
528
+ }
529
+ ],
530
+ "name": "dstConfig",
531
+ "outputs": [
532
+ {
533
+ "internalType": "uint64",
534
+ "name": "lzReceiveBaseGas",
535
+ "type": "uint64"
536
+ },
537
+ {
538
+ "internalType": "uint16",
539
+ "name": "multiplierBps",
540
+ "type": "uint16"
541
+ },
542
+ {
543
+ "internalType": "uint128",
544
+ "name": "floorMarginUSD",
545
+ "type": "uint128"
546
+ },
547
+ {
548
+ "internalType": "uint128",
549
+ "name": "nativeCap",
550
+ "type": "uint128"
551
+ },
552
+ {
553
+ "internalType": "uint64",
554
+ "name": "lzComposeBaseGas",
555
+ "type": "uint64"
556
+ }
557
+ ],
558
+ "stateMutability": "view",
559
+ "type": "function"
560
+ },
561
+ {
562
+ "inputs": [],
563
+ "name": "endpoint",
564
+ "outputs": [
565
+ {
566
+ "internalType": "address",
567
+ "name": "",
568
+ "type": "address"
569
+ }
570
+ ],
571
+ "stateMutability": "view",
572
+ "type": "function"
573
+ },
574
+ {
575
+ "inputs": [
576
+ {
577
+ "internalType": "bytes",
578
+ "name": "_packet",
579
+ "type": "bytes"
580
+ },
581
+ {
582
+ "internalType": "uint256",
583
+ "name": "_gasLimit",
584
+ "type": "uint256"
585
+ }
586
+ ],
587
+ "name": "execute301",
588
+ "outputs": [],
589
+ "stateMutability": "nonpayable",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [
594
+ {
595
+ "components": [
596
+ {
597
+ "internalType": "address",
598
+ "name": "receiver",
599
+ "type": "address"
600
+ },
601
+ {
602
+ "components": [
603
+ {
604
+ "internalType": "uint32",
605
+ "name": "srcEid",
606
+ "type": "uint32"
607
+ },
608
+ {
609
+ "internalType": "bytes32",
610
+ "name": "sender",
611
+ "type": "bytes32"
612
+ },
613
+ {
614
+ "internalType": "uint64",
615
+ "name": "nonce",
616
+ "type": "uint64"
617
+ }
618
+ ],
619
+ "internalType": "struct Origin",
620
+ "name": "origin",
621
+ "type": "tuple"
622
+ },
623
+ {
624
+ "internalType": "bytes32",
625
+ "name": "guid",
626
+ "type": "bytes32"
627
+ },
628
+ {
629
+ "internalType": "bytes",
630
+ "name": "message",
631
+ "type": "bytes"
632
+ },
633
+ {
634
+ "internalType": "bytes",
635
+ "name": "extraData",
636
+ "type": "bytes"
637
+ },
638
+ {
639
+ "internalType": "uint256",
640
+ "name": "gasLimit",
641
+ "type": "uint256"
642
+ }
643
+ ],
644
+ "internalType": "struct IExecutor.ExecutionParams",
645
+ "name": "_executionParams",
646
+ "type": "tuple"
647
+ }
648
+ ],
649
+ "name": "execute302",
650
+ "outputs": [],
651
+ "stateMutability": "payable",
652
+ "type": "function"
653
+ },
654
+ {
655
+ "inputs": [
656
+ {
657
+ "internalType": "uint32",
658
+ "name": "_dstEid",
659
+ "type": "uint32"
660
+ },
661
+ {
662
+ "internalType": "address",
663
+ "name": "_sender",
664
+ "type": "address"
665
+ },
666
+ {
667
+ "internalType": "uint256",
668
+ "name": "_calldataSize",
669
+ "type": "uint256"
670
+ },
671
+ {
672
+ "internalType": "bytes",
673
+ "name": "_options",
674
+ "type": "bytes"
675
+ }
676
+ ],
677
+ "name": "getFee",
678
+ "outputs": [
679
+ {
680
+ "internalType": "uint256",
681
+ "name": "fee",
682
+ "type": "uint256"
683
+ }
684
+ ],
685
+ "stateMutability": "view",
686
+ "type": "function"
687
+ },
688
+ {
689
+ "inputs": [
690
+ {
691
+ "internalType": "address",
692
+ "name": "_sender",
693
+ "type": "address"
694
+ },
695
+ {
696
+ "internalType": "bytes",
697
+ "name": "_options",
698
+ "type": "bytes"
699
+ }
700
+ ],
701
+ "name": "getFee",
702
+ "outputs": [
703
+ {
704
+ "internalType": "uint256",
705
+ "name": "fee",
706
+ "type": "uint256"
707
+ }
708
+ ],
709
+ "stateMutability": "view",
710
+ "type": "function"
711
+ },
712
+ {
713
+ "inputs": [
714
+ {
715
+ "internalType": "bytes32",
716
+ "name": "role",
717
+ "type": "bytes32"
718
+ }
719
+ ],
720
+ "name": "getRoleAdmin",
721
+ "outputs": [
722
+ {
723
+ "internalType": "bytes32",
724
+ "name": "",
725
+ "type": "bytes32"
726
+ }
727
+ ],
728
+ "stateMutability": "view",
729
+ "type": "function"
730
+ },
731
+ {
732
+ "inputs": [
733
+ {
734
+ "internalType": "uint32",
735
+ "name": "_eid",
736
+ "type": "uint32"
737
+ }
738
+ ],
739
+ "name": "getSupportedOptionTypes",
740
+ "outputs": [
741
+ {
742
+ "internalType": "uint8[]",
743
+ "name": "",
744
+ "type": "uint8[]"
745
+ }
746
+ ],
747
+ "stateMutability": "view",
748
+ "type": "function"
749
+ },
750
+ {
751
+ "inputs": [
752
+ {
753
+ "internalType": "bytes32",
754
+ "name": "role",
755
+ "type": "bytes32"
756
+ },
757
+ {
758
+ "internalType": "address",
759
+ "name": "account",
760
+ "type": "address"
761
+ }
762
+ ],
763
+ "name": "grantRole",
764
+ "outputs": [],
765
+ "stateMutability": "nonpayable",
766
+ "type": "function"
767
+ },
768
+ {
769
+ "inputs": [
770
+ {
771
+ "internalType": "address",
772
+ "name": "_sender",
773
+ "type": "address"
774
+ }
775
+ ],
776
+ "name": "hasAcl",
777
+ "outputs": [
778
+ {
779
+ "internalType": "bool",
780
+ "name": "",
781
+ "type": "bool"
782
+ }
783
+ ],
784
+ "stateMutability": "view",
785
+ "type": "function"
786
+ },
787
+ {
788
+ "inputs": [
789
+ {
790
+ "internalType": "bytes32",
791
+ "name": "role",
792
+ "type": "bytes32"
793
+ },
794
+ {
795
+ "internalType": "address",
796
+ "name": "account",
797
+ "type": "address"
798
+ }
799
+ ],
800
+ "name": "hasRole",
801
+ "outputs": [
802
+ {
803
+ "internalType": "bool",
804
+ "name": "",
805
+ "type": "bool"
806
+ }
807
+ ],
808
+ "stateMutability": "view",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [
813
+ {
814
+ "internalType": "address",
815
+ "name": "_endpoint",
816
+ "type": "address"
817
+ },
818
+ {
819
+ "internalType": "address",
820
+ "name": "_receiveUln301",
821
+ "type": "address"
822
+ },
823
+ {
824
+ "internalType": "address[]",
825
+ "name": "_messageLibs",
826
+ "type": "address[]"
827
+ },
828
+ {
829
+ "internalType": "address",
830
+ "name": "_priceFeed",
831
+ "type": "address"
832
+ },
833
+ {
834
+ "internalType": "address",
835
+ "name": "_roleAdmin",
836
+ "type": "address"
837
+ },
838
+ {
839
+ "internalType": "address[]",
840
+ "name": "_admins",
841
+ "type": "address[]"
842
+ }
843
+ ],
844
+ "name": "initialize",
845
+ "outputs": [],
846
+ "stateMutability": "nonpayable",
847
+ "type": "function"
848
+ },
849
+ {
850
+ "inputs": [],
851
+ "name": "localEidV2",
852
+ "outputs": [
853
+ {
854
+ "internalType": "uint32",
855
+ "name": "",
856
+ "type": "uint32"
857
+ }
858
+ ],
859
+ "stateMutability": "view",
860
+ "type": "function"
861
+ },
862
+ {
863
+ "inputs": [
864
+ {
865
+ "components": [
866
+ {
867
+ "internalType": "uint32",
868
+ "name": "srcEid",
869
+ "type": "uint32"
870
+ },
871
+ {
872
+ "internalType": "bytes32",
873
+ "name": "sender",
874
+ "type": "bytes32"
875
+ },
876
+ {
877
+ "internalType": "uint64",
878
+ "name": "nonce",
879
+ "type": "uint64"
880
+ }
881
+ ],
882
+ "internalType": "struct Origin",
883
+ "name": "_origin",
884
+ "type": "tuple"
885
+ },
886
+ {
887
+ "internalType": "uint32",
888
+ "name": "_dstEid",
889
+ "type": "uint32"
890
+ },
891
+ {
892
+ "internalType": "address",
893
+ "name": "_oapp",
894
+ "type": "address"
895
+ },
896
+ {
897
+ "components": [
898
+ {
899
+ "internalType": "address",
900
+ "name": "receiver",
901
+ "type": "address"
902
+ },
903
+ {
904
+ "internalType": "uint256",
905
+ "name": "amount",
906
+ "type": "uint256"
907
+ }
908
+ ],
909
+ "internalType": "struct IExecutor.NativeDropParams[]",
910
+ "name": "_nativeDropParams",
911
+ "type": "tuple[]"
912
+ },
913
+ {
914
+ "internalType": "uint256",
915
+ "name": "_nativeDropGasLimit",
916
+ "type": "uint256"
917
+ }
918
+ ],
919
+ "name": "nativeDrop",
920
+ "outputs": [],
921
+ "stateMutability": "payable",
922
+ "type": "function"
923
+ },
924
+ {
925
+ "inputs": [
926
+ {
927
+ "components": [
928
+ {
929
+ "internalType": "uint32",
930
+ "name": "srcEid",
931
+ "type": "uint32"
932
+ },
933
+ {
934
+ "internalType": "bytes32",
935
+ "name": "sender",
936
+ "type": "bytes32"
937
+ },
938
+ {
939
+ "internalType": "uint64",
940
+ "name": "nonce",
941
+ "type": "uint64"
942
+ }
943
+ ],
944
+ "internalType": "struct Origin",
945
+ "name": "_origin",
946
+ "type": "tuple"
947
+ },
948
+ {
949
+ "components": [
950
+ {
951
+ "internalType": "address",
952
+ "name": "receiver",
953
+ "type": "address"
954
+ },
955
+ {
956
+ "internalType": "uint256",
957
+ "name": "amount",
958
+ "type": "uint256"
959
+ }
960
+ ],
961
+ "internalType": "struct IExecutor.NativeDropParams[]",
962
+ "name": "_nativeDropParams",
963
+ "type": "tuple[]"
964
+ },
965
+ {
966
+ "internalType": "uint256",
967
+ "name": "_nativeDropGasLimit",
968
+ "type": "uint256"
969
+ },
970
+ {
971
+ "internalType": "bytes",
972
+ "name": "_packet",
973
+ "type": "bytes"
974
+ },
975
+ {
976
+ "internalType": "uint256",
977
+ "name": "_gasLimit",
978
+ "type": "uint256"
979
+ }
980
+ ],
981
+ "name": "nativeDropAndExecute301",
982
+ "outputs": [],
983
+ "stateMutability": "payable",
984
+ "type": "function"
985
+ },
986
+ {
987
+ "inputs": [
988
+ {
989
+ "components": [
990
+ {
991
+ "internalType": "address",
992
+ "name": "receiver",
993
+ "type": "address"
994
+ },
995
+ {
996
+ "internalType": "uint256",
997
+ "name": "amount",
998
+ "type": "uint256"
999
+ }
1000
+ ],
1001
+ "internalType": "struct IExecutor.NativeDropParams[]",
1002
+ "name": "_nativeDropParams",
1003
+ "type": "tuple[]"
1004
+ },
1005
+ {
1006
+ "internalType": "uint256",
1007
+ "name": "_nativeDropGasLimit",
1008
+ "type": "uint256"
1009
+ },
1010
+ {
1011
+ "components": [
1012
+ {
1013
+ "internalType": "address",
1014
+ "name": "receiver",
1015
+ "type": "address"
1016
+ },
1017
+ {
1018
+ "components": [
1019
+ {
1020
+ "internalType": "uint32",
1021
+ "name": "srcEid",
1022
+ "type": "uint32"
1023
+ },
1024
+ {
1025
+ "internalType": "bytes32",
1026
+ "name": "sender",
1027
+ "type": "bytes32"
1028
+ },
1029
+ {
1030
+ "internalType": "uint64",
1031
+ "name": "nonce",
1032
+ "type": "uint64"
1033
+ }
1034
+ ],
1035
+ "internalType": "struct Origin",
1036
+ "name": "origin",
1037
+ "type": "tuple"
1038
+ },
1039
+ {
1040
+ "internalType": "bytes32",
1041
+ "name": "guid",
1042
+ "type": "bytes32"
1043
+ },
1044
+ {
1045
+ "internalType": "bytes",
1046
+ "name": "message",
1047
+ "type": "bytes"
1048
+ },
1049
+ {
1050
+ "internalType": "bytes",
1051
+ "name": "extraData",
1052
+ "type": "bytes"
1053
+ },
1054
+ {
1055
+ "internalType": "uint256",
1056
+ "name": "gasLimit",
1057
+ "type": "uint256"
1058
+ }
1059
+ ],
1060
+ "internalType": "struct IExecutor.ExecutionParams",
1061
+ "name": "_executionParams",
1062
+ "type": "tuple"
1063
+ }
1064
+ ],
1065
+ "name": "nativeDropAndExecute302",
1066
+ "outputs": [],
1067
+ "stateMutability": "payable",
1068
+ "type": "function"
1069
+ },
1070
+ {
1071
+ "inputs": [
1072
+ {
1073
+ "internalType": "address",
1074
+ "name": "_receiveUln301",
1075
+ "type": "address"
1076
+ }
1077
+ ],
1078
+ "name": "onUpgrade",
1079
+ "outputs": [],
1080
+ "stateMutability": "nonpayable",
1081
+ "type": "function"
1082
+ },
1083
+ {
1084
+ "inputs": [],
1085
+ "name": "paused",
1086
+ "outputs": [
1087
+ {
1088
+ "internalType": "bool",
1089
+ "name": "",
1090
+ "type": "bool"
1091
+ }
1092
+ ],
1093
+ "stateMutability": "view",
1094
+ "type": "function"
1095
+ },
1096
+ {
1097
+ "inputs": [],
1098
+ "name": "priceFeed",
1099
+ "outputs": [
1100
+ {
1101
+ "internalType": "address",
1102
+ "name": "",
1103
+ "type": "address"
1104
+ }
1105
+ ],
1106
+ "stateMutability": "view",
1107
+ "type": "function"
1108
+ },
1109
+ {
1110
+ "inputs": [
1111
+ {
1112
+ "internalType": "address",
1113
+ "name": "sender",
1114
+ "type": "address"
1115
+ }
1116
+ ],
1117
+ "name": "priceFloorWhitelist",
1118
+ "outputs": [
1119
+ {
1120
+ "internalType": "bool",
1121
+ "name": "whitelisted",
1122
+ "type": "bool"
1123
+ }
1124
+ ],
1125
+ "stateMutability": "view",
1126
+ "type": "function"
1127
+ },
1128
+ {
1129
+ "inputs": [],
1130
+ "name": "receiveUln301",
1131
+ "outputs": [
1132
+ {
1133
+ "internalType": "address",
1134
+ "name": "",
1135
+ "type": "address"
1136
+ }
1137
+ ],
1138
+ "stateMutability": "view",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [
1143
+ {
1144
+ "internalType": "bytes32",
1145
+ "name": "",
1146
+ "type": "bytes32"
1147
+ },
1148
+ {
1149
+ "internalType": "address",
1150
+ "name": "",
1151
+ "type": "address"
1152
+ }
1153
+ ],
1154
+ "name": "renounceRole",
1155
+ "outputs": [],
1156
+ "stateMutability": "pure",
1157
+ "type": "function"
1158
+ },
1159
+ {
1160
+ "inputs": [
1161
+ {
1162
+ "internalType": "bytes32",
1163
+ "name": "role",
1164
+ "type": "bytes32"
1165
+ },
1166
+ {
1167
+ "internalType": "address",
1168
+ "name": "account",
1169
+ "type": "address"
1170
+ }
1171
+ ],
1172
+ "name": "revokeRole",
1173
+ "outputs": [],
1174
+ "stateMutability": "nonpayable",
1175
+ "type": "function"
1176
+ },
1177
+ {
1178
+ "inputs": [
1179
+ {
1180
+ "internalType": "uint16",
1181
+ "name": "_multiplierBps",
1182
+ "type": "uint16"
1183
+ }
1184
+ ],
1185
+ "name": "setDefaultMultiplierBps",
1186
+ "outputs": [],
1187
+ "stateMutability": "nonpayable",
1188
+ "type": "function"
1189
+ },
1190
+ {
1191
+ "inputs": [
1192
+ {
1193
+ "components": [
1194
+ {
1195
+ "internalType": "uint32",
1196
+ "name": "dstEid",
1197
+ "type": "uint32"
1198
+ },
1199
+ {
1200
+ "internalType": "uint64",
1201
+ "name": "lzReceiveBaseGas",
1202
+ "type": "uint64"
1203
+ },
1204
+ {
1205
+ "internalType": "uint64",
1206
+ "name": "lzComposeBaseGas",
1207
+ "type": "uint64"
1208
+ },
1209
+ {
1210
+ "internalType": "uint16",
1211
+ "name": "multiplierBps",
1212
+ "type": "uint16"
1213
+ },
1214
+ {
1215
+ "internalType": "uint128",
1216
+ "name": "floorMarginUSD",
1217
+ "type": "uint128"
1218
+ },
1219
+ {
1220
+ "internalType": "uint128",
1221
+ "name": "nativeCap",
1222
+ "type": "uint128"
1223
+ }
1224
+ ],
1225
+ "internalType": "struct IExecutor.DstConfigParam[]",
1226
+ "name": "_params",
1227
+ "type": "tuple[]"
1228
+ }
1229
+ ],
1230
+ "name": "setDstConfig",
1231
+ "outputs": [],
1232
+ "stateMutability": "nonpayable",
1233
+ "type": "function"
1234
+ },
1235
+ {
1236
+ "inputs": [
1237
+ {
1238
+ "internalType": "bool",
1239
+ "name": "_paused",
1240
+ "type": "bool"
1241
+ }
1242
+ ],
1243
+ "name": "setPaused",
1244
+ "outputs": [],
1245
+ "stateMutability": "nonpayable",
1246
+ "type": "function"
1247
+ },
1248
+ {
1249
+ "inputs": [
1250
+ {
1251
+ "internalType": "address",
1252
+ "name": "_priceFeed",
1253
+ "type": "address"
1254
+ }
1255
+ ],
1256
+ "name": "setPriceFeed",
1257
+ "outputs": [],
1258
+ "stateMutability": "nonpayable",
1259
+ "type": "function"
1260
+ },
1261
+ {
1262
+ "inputs": [
1263
+ {
1264
+ "components": [
1265
+ {
1266
+ "internalType": "address",
1267
+ "name": "sender",
1268
+ "type": "address"
1269
+ },
1270
+ {
1271
+ "internalType": "bool",
1272
+ "name": "whitelisted",
1273
+ "type": "bool"
1274
+ }
1275
+ ],
1276
+ "internalType": "struct Executor.SetPriceFloorWhitelistParam[]",
1277
+ "name": "_params",
1278
+ "type": "tuple[]"
1279
+ }
1280
+ ],
1281
+ "name": "setPriceFloorWhitelist",
1282
+ "outputs": [],
1283
+ "stateMutability": "nonpayable",
1284
+ "type": "function"
1285
+ },
1286
+ {
1287
+ "inputs": [
1288
+ {
1289
+ "internalType": "address",
1290
+ "name": "_receiveUln301",
1291
+ "type": "address"
1292
+ }
1293
+ ],
1294
+ "name": "setReceiveUln301",
1295
+ "outputs": [],
1296
+ "stateMutability": "nonpayable",
1297
+ "type": "function"
1298
+ },
1299
+ {
1300
+ "inputs": [
1301
+ {
1302
+ "internalType": "uint32",
1303
+ "name": "_eid",
1304
+ "type": "uint32"
1305
+ },
1306
+ {
1307
+ "internalType": "uint8[]",
1308
+ "name": "_optionTypes",
1309
+ "type": "uint8[]"
1310
+ }
1311
+ ],
1312
+ "name": "setSupportedOptionTypes",
1313
+ "outputs": [],
1314
+ "stateMutability": "nonpayable",
1315
+ "type": "function"
1316
+ },
1317
+ {
1318
+ "inputs": [
1319
+ {
1320
+ "internalType": "address",
1321
+ "name": "_workerFeeLib",
1322
+ "type": "address"
1323
+ }
1324
+ ],
1325
+ "name": "setWorkerFeeLib",
1326
+ "outputs": [],
1327
+ "stateMutability": "nonpayable",
1328
+ "type": "function"
1329
+ },
1330
+ {
1331
+ "inputs": [
1332
+ {
1333
+ "internalType": "bytes4",
1334
+ "name": "interfaceId",
1335
+ "type": "bytes4"
1336
+ }
1337
+ ],
1338
+ "name": "supportsInterface",
1339
+ "outputs": [
1340
+ {
1341
+ "internalType": "bool",
1342
+ "name": "",
1343
+ "type": "bool"
1344
+ }
1345
+ ],
1346
+ "stateMutability": "view",
1347
+ "type": "function"
1348
+ },
1349
+ {
1350
+ "inputs": [
1351
+ {
1352
+ "internalType": "address",
1353
+ "name": "_lib",
1354
+ "type": "address"
1355
+ },
1356
+ {
1357
+ "internalType": "address",
1358
+ "name": "_to",
1359
+ "type": "address"
1360
+ },
1361
+ {
1362
+ "internalType": "uint256",
1363
+ "name": "_amount",
1364
+ "type": "uint256"
1365
+ }
1366
+ ],
1367
+ "name": "withdrawFee",
1368
+ "outputs": [],
1369
+ "stateMutability": "nonpayable",
1370
+ "type": "function"
1371
+ },
1372
+ {
1373
+ "inputs": [
1374
+ {
1375
+ "internalType": "address",
1376
+ "name": "_token",
1377
+ "type": "address"
1378
+ },
1379
+ {
1380
+ "internalType": "address",
1381
+ "name": "_to",
1382
+ "type": "address"
1383
+ },
1384
+ {
1385
+ "internalType": "uint256",
1386
+ "name": "_amount",
1387
+ "type": "uint256"
1388
+ }
1389
+ ],
1390
+ "name": "withdrawToken",
1391
+ "outputs": [],
1392
+ "stateMutability": "nonpayable",
1393
+ "type": "function"
1394
+ },
1395
+ {
1396
+ "inputs": [],
1397
+ "name": "workerFeeLib",
1398
+ "outputs": [
1399
+ {
1400
+ "internalType": "address",
1401
+ "name": "",
1402
+ "type": "address"
1403
+ }
1404
+ ],
1405
+ "stateMutability": "view",
1406
+ "type": "function"
1407
+ }
1408
+ ],
1409
+ "bytecode": "0x60806040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b506153e3806200003e6000396000f3fe6080604052600436106102c45760003560e01c8063709eb66411610179578063c2803b2c116100d6578063cd88b9031161008a578063d547741f11610064578063d547741f14610c8d578063e395eb5c14610cc7578063fa34c84e14610d2c57600080fd5b8063cd88b90314610bd4578063cfc3257014610c0e578063d2ae210414610c2157600080fd5b8063c416aa51116100bb578063c416aa5114610b19578063c7b2370b14610b60578063c8f8dcd114610b9a57600080fd5b8063c2803b2c14610a97578063c358de0a14610adf57600080fd5b80638624ba071161012d5780639e944965116101125780639e94496514610937578063a217fddf14610a2e578063c015bb7d14610a5d57600080fd5b80638624ba07146108b757806391d14854146108ca57600080fd5b8063724e78da1161015e578063724e78da14610823578063741bef1a1461085d5780637cd44734146108a457600080fd5b8063709eb664146107af578063717e8a42146107e957600080fd5b80632f2ff15d116102275780633d85ac33116101db578063475b6d9e116101c0578063475b6d9e146106fd5780635c975abb146107105780635e280f111461074257600080fd5b80633d85ac331461068957806344bb7e28146106c357600080fd5b806336568abe1161020c57806336568abe146105f15780633927c0751461062b5780633bd0db9f1461063e57600080fd5b80632f2ff15d1461057d5780633146646a146105b757600080fd5b80631095b6d71161027e578063248a9ca311610263578063248a9ca3146104a457806326e67a37146104fc5780632de113761461054357600080fd5b80631095b6d71461043057806316c38b3c1461046a57600080fd5b806301e33667116102af57806301e336671461037257806301ffc9a7146103ac57806302e723d9146103f657600080fd5b80629fc681146102c9578062bf2e8014610305575b600080fd5b3480156102d557600080fd5b50d380156102e257600080fd5b50d280156102ef57600080fd5b506103036102fe366004614152565b610d66565b005b34801561031157600080fd5b50d3801561031e57600080fd5b50d2801561032b57600080fd5b5060c95461035a907c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561037e57600080fd5b50d3801561038b57600080fd5b50d2801561039857600080fd5b506103036103a73660046141f7565b611105565b3480156103b857600080fd5b50d380156103c557600080fd5b50d280156103d257600080fd5b506103e66103e1366004614233565b611140565b6040519015158152602001610369565b34801561040257600080fd5b50d3801561040f57600080fd5b50d2801561041c57600080fd5b5061030361042b366004614275565b6111d9565b34801561043c57600080fd5b50d3801561044957600080fd5b50d2801561045657600080fd5b506103036104653660046141f7565b61127f565b34801561047657600080fd5b50d3801561048357600080fd5b50d2801561049057600080fd5b5061030361049f36600461429e565b61140e565b3480156104b057600080fd5b50d380156104bd57600080fd5b50d280156104ca57600080fd5b506104ee6104d93660046142bb565b60009081526065602052604090206001015490565b604051908152602001610369565b34801561050857600080fd5b50d3801561051557600080fd5b50d2801561052257600080fd5b506105366105313660046142e6565b611433565b6040516103699190614303565b34801561054f57600080fd5b50d3801561055c57600080fd5b50d2801561056957600080fd5b506103e6610578366004614275565b6114ba565b34801561058957600080fd5b50d3801561059657600080fd5b50d280156105a357600080fd5b506103036105b236600461434a565b61159e565b3480156105c357600080fd5b50d380156105d057600080fd5b50d280156105dd57600080fd5b506103036105ec3660046143bf565b6115c8565b3480156105fd57600080fd5b50d3801561060a57600080fd5b50d2801561061757600080fd5b5061030361062636600461434a565b611691565b610303610639366004614468565b6116c3565b34801561064a57600080fd5b50d3801561065757600080fd5b50d2801561066457600080fd5b506103e6610673366004614275565b6101306020526000908152604090205460ff1681565b34801561069557600080fd5b50d380156106a257600080fd5b50d280156106af57600080fd5b506103036106be366004614546565b6117ad565b3480156106cf57600080fd5b50d380156106dc57600080fd5b50d280156106e957600080fd5b506103036106f836600461464e565b61198e565b61030361070b366004614690565b611ad1565b34801561071c57600080fd5b50d3801561072957600080fd5b50d2801561073657600080fd5b5060975460ff166103e6565b34801561074e57600080fd5b50d3801561075b57600080fd5b50d2801561076857600080fd5b5061012e5461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610369565b3480156107bb57600080fd5b50d380156107c857600080fd5b50d280156107d557600080fd5b506104ee6107e4366004614711565b611b25565b3480156107f557600080fd5b50d3801561080257600080fd5b50d2801561080f57600080fd5b506104ee61081e366004614711565b611c60565b34801561082f57600080fd5b50d3801561083c57600080fd5b50d2801561084957600080fd5b50610303610858366004614275565b611dc8565b34801561086957600080fd5b50d3801561087657600080fd5b50d2801561088357600080fd5b5060ca5461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b6103036108b2366004614782565b611e65565b6103036108c5366004614848565b61201a565b3480156108d657600080fd5b50d380156108e357600080fd5b50d280156108f057600080fd5b506103e66108ff36600461434a565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561094357600080fd5b50d3801561095057600080fd5b50d2801561095d57600080fd5b506109e161096c3660046142e6565b61012d602052600090815260409020805460019091015467ffffffffffffffff8083169261ffff68010000000000000000820416926fffffffffffffffffffffffffffffffff6a0100000000000000000000909204821692918116917001000000000000000000000000000000009091041685565b6040805167ffffffffffffffff968716815261ffff90951660208601526fffffffffffffffffffffffffffffffff938416908501529116606083015291909116608082015260a001610369565b348015610a3a57600080fd5b50d38015610a4757600080fd5b50d28015610a5457600080fd5b506104ee600081565b348015610a6957600080fd5b50d38015610a7657600080fd5b50d28015610a8357600080fd5b506104ee610a923660046148bb565b612230565b348015610aa357600080fd5b50d38015610ab057600080fd5b50d28015610abd57600080fd5b5061012f5461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610aeb57600080fd5b50d38015610af857600080fd5b50d28015610b0557600080fd5b50610303610b1436600461490e565b6123a8565b348015610b2557600080fd5b50d38015610b3257600080fd5b50d28015610b3f57600080fd5b5060c95461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610b6c57600080fd5b50d38015610b7957600080fd5b50d28015610b8657600080fd5b50610303610b95366004614275565b612455565b348015610ba657600080fd5b50d38015610bb357600080fd5b50d28015610bc057600080fd5b506104ee610bcf3660046148bb565b6124f2565b348015610be057600080fd5b50d38015610bed57600080fd5b50d28015610bfa57600080fd5b50610303610c09366004614929565b61263d565b610303610c1c3660046149b1565b612687565b348015610c2d57600080fd5b50d38015610c3a57600080fd5b50d28015610c4757600080fd5b5060c954610c749074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610369565b348015610c9957600080fd5b50d38015610ca657600080fd5b50d28015610cb357600080fd5b50610303610cc236600461434a565b612843565b348015610cd357600080fd5b50d38015610ce057600080fd5b50d28015610ced57600080fd5b5061012e54610d179074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610369565b348015610d3857600080fd5b50d38015610d4557600080fd5b50d28015610d5257600080fd5b50610303610d61366004614275565b612868565b6000610d907fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610de95773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610e0b565b3373ffffffffffffffffffffffffffffffffffffffff821614610e0b57600080fd5b600054610100900460ff1615808015610e2b5750600054600160ff909116105b80610e455750303b158015610e45575060005460ff166001145b610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f3457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f3c612956565b610f4b8686612ee087876129f7565b61012e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905163416ecebf916004808201926020929091908290030181865afa158015610fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100791906149e6565b61012e80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff939093169290920291909117905561012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891617905580156110fb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561112f81612ab3565b61113a848484612ac0565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806111d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561120381612ab3565b61012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f2a2a4b95cee71747feecad6bcdaa0016f908444a79c1c31c1987b262ba4e6dbe906020015b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756112a981612ab3565b73ffffffffffffffffffffffffffffffffffffffff841660009081527fe3a3b2721d010eec8988605a93cd7c15d969808c0e2b42f6155dc2b4fa13c081602052604090205460ff16611327576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b15801561139757600080fd5b505af11580156113ab573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b600061141981612ab3565b811561142b57611427612af0565b5050565b611427612b75565b63ffffffff8116600090815260cb60209081526040918290208054835181840281018401909452808452606093928301828280156114ae57602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161147f5790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f0f6a9529577ef7bf1cbc8fccda1cc3c881f755c7e92e34c7c4deac1fa3c1c791602052604081205460ff161561150f57506000919050565b60c95474010000000000000000000000000000000000000000900467ffffffffffffffff161580611584575073ffffffffffffffffffffffffffffffffffffffff821660009081527f35c5067391a9036240763c1067bfa438a7b0131204a675a2fe562dd73782ce85602052604090205460ff165b1561159157506001919050565b506000919050565b919050565b6000828152606560205260409020600101546115b981612ab3565b6115c38383612bcc565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756115f281612ab3565b6115fa612c93565b61012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f89061165590879087908790600401614a4c565b600060405180830381600087803b15801561166f57600080fd5b505af1158015611683573d6000803e3d6000fd5b5050505061113a600160fb55565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116ed81612ab3565b6116f5612c93565b611715886117038686612d0d565b61170d8787612d30565b8a8a8a612d49565b5061012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f89061177190879087908790600401614a4c565b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506110fb600160fb55565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756117d781612ab3565b60005b825181101561195e5760008382815181106117f7576117f7614a70565b6020908102919091018101516040805160a080820183528385015167ffffffffffffffff908116835260608086015161ffff9081168589019081526080808901516fffffffffffffffffffffffffffffffff908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff16600090815261012d909a5296909820945185549851945188166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9590921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090991690841617979097179290921695909517825551600190910180549251909416700100000000000000000000000000000000027fffffffffffffffff000000000000000000000000000000000000000000000000909216921691909117179055508061195681614ace565b9150506117da565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc53826040516112739190614b06565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119b881612ab3565b60005b8281101561113a57368484838181106119d6576119d6614a70565b90506040020190508060200160208101906119f1919061429e565b6101306000611a036020850185614275565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155611a6490820182614275565b73ffffffffffffffffffffffffffffffffffffffff167ffafc7bfa3c73f8a408d873ba109b7145dc715107b809e460e7afe60d5402c6a2611aab604084016020850161429e565b604051901515815260200160405180910390a25080611ac981614ace565b9150506119bb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611afb81612ab3565b611b03612c93565b611b11878787878787612d49565b50611b1c600160fb55565b50505050505050565b600084611b31816114ba565b611b67576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b6f612ec9565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a166020830152888116928201929092526060810187905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663434ee01682611bf28b8b612f36565b88886040518563ffffffff1660e01b8152600401611c139493929190614bad565b602060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c549190614c69565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de611c8c81612ab3565b85611c96816114ba565b611ccc576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cd4612ec9565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b166020830152898116928201929092526060810188905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663566ef76282611d578c8c612f36565b89896040518563ffffffff1660e01b8152600401611d789493929190614bad565b6020604051808303816000875af1158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190614c69565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611df281612ab3565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001611273565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611e8f81612ab3565b611e97612c93565b61012e546040517f91d20fa100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906391d20fa19084903490611f00908f908f908f908f908f908f908f908f90600401614c82565b6000604051808303818589803b158015611f1957600080fd5b5088f19450505050508015611f2c575060015b612004573d808015611f5a576040519150601f19603f3d011682016040523d82523d6000602084013e611f5f565b606091505b5061012e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697fe6b68c8c8c8c88348e8e8e8e8c6040518c63ffffffff1660e01b8152600401611fd09b9a99989796959493929190614d5c565b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b50505050505b61200e600160fb55565b50505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561204481612ab3565b61204c612c93565b61012e5460009061208c90602085019074010000000000000000000000000000000000000000900463ffffffff166120848287614275565b898989612d49565b9050600061209a8234614def565b61012e5490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e086013583602088016120d0818a614275565b60808a01356120e260a08c018c614e02565b6120ef60c08e018e614e02565b6040518a63ffffffff1660e01b81526004016121119796959493929190614ea3565b6000604051808303818589803b15801561212a57600080fd5b5088f1945050505050801561213d575060015b61221d573d80801561216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa36020870161219e8189614275565b608089013560e08a0135876121b660a08d018d614e02565b6121c360c08f018f614e02565b8b6040518b63ffffffff1660e01b81526004016121e99a99989796959493929190614f07565b600060405180830381600087803b15801561220357600080fd5b505af1158015612217573d6000803e3d6000fd5b50505050505b5050612229600160fb55565b5050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de61225c81612ab3565b84612266816114ba565b61229c576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122a4612ec9565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252888116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e549192169063650037849083906123399074010000000000000000000000000000000000000000900463ffffffff168b612f36565b89896040518563ffffffff1660e01b815260040161235a9493929190614f93565b6020604051808303816000875af1158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239d9190614c69565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756123d281612ab3565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001611273565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561247f81612ab3565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001611273565b6000836124fe816114ba565b612534576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61253c612ec9565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252878116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e549192169063337c7a9e9083906125d19074010000000000000000000000000000000000000000900463ffffffff168a612f36565b88886040518563ffffffff1660e01b81526004016125f29493929190614f93565b602060405180830381865afa15801561260f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126339190614c69565b9695505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561266781612ab3565b63ffffffff8416600090815260cb60205260409020612229908484613f14565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756126b181612ab3565b6126b9612c93565b61012e5473ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e084013534602086016126ec8188614275565b60808801356126fe60a08a018a614e02565b61270b60c08c018c614e02565b6040518a63ffffffff1660e01b815260040161272d9796959493929190614ea3565b6000604051808303818589803b15801561274657600080fd5b5088f19450505050508015612759575060015b612839573d808015612787576040519150601f19603f3d011682016040523d82523d6000602084013e61278c565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa3602085016127ba8187614275565b608087013560e0880135346127d260a08b018b614e02565b6127df60c08d018d614e02565b8b6040518b63ffffffff1660e01b81526004016128059a99989796959493929190614f07565b600060405180830381600087803b15801561281f57600080fd5b505af1158015612833573d6000803e3d6000fd5b50505050505b611427600160fb55565b60008281526065602052604090206001015461285e81612ab3565b6115c3838361302f565b60006128927fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166128eb5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561290d565b3373ffffffffffffffffffffffffffffffffffffffff82161461290d57600080fd5b5061012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff166129ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b6129f56130f5565b565b600054610100900460ff16612a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b612a9661318c565b612a9e61318c565b612aa6613223565b61222985858585856132e4565b612abd81336134d9565b50565b73ffffffffffffffffffffffffffffffffffffffff8316612ae5576115c38282613593565b6115c3838383613699565b612af8612ec9565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b4b3390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b612b7d613707565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612b4b565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612c2b5750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15612c895760c98054601490612c629074010000000000000000000000000000000000000000900467ffffffffffffffff16615044565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b6114278282613773565b600260fb5403612cff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ecd565b600260fb55565b600160fb55565b6000612d1d6031602d848661506b565b612d2691615095565b60e01c9392505050565b6000612d42612d3f8484613867565b90565b9392505050565b6000808367ffffffffffffffff811115612d6557612d65614015565b604051908082528060200260200182016040528015612d8e578160200160208202803683370190505b50905060005b84811015612e7c576000868683818110612db057612db0614a70565b905060400201803603810190612dc691906150dd565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682602001518790604051600060405180830381858888f193505050503d8060008114612e2d576040519150601f19603f3d011682016040523d82523d6000602084013e612e32565b606091505b5050905080848481518110612e4957612e49614a70565b911515602092830291909101820152820151612e659086615134565b945050508080612e7490614ace565b915050612d94565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c3468888888888886604051612eb696959493929190615184565b60405180910390a1509695505050505050565b60975460ff16156129f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ecd565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525063ffffffff8216600090815261012d60209081526040808320815160a081018352815467ffffffffffffffff808216835261ffff68010000000000000000830416838701526fffffffffffffffffffffffffffffffff6a010000000000000000000090920482168386015260019093015490811660608301527001000000000000000000000000000000009004909116608082015273ffffffffffffffffffffffffffffffffffffffff851684526101309092529091205460ff16156111d3576000604082015292915050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8214801561308d5750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b156130eb5760c980546014906130c49074010000000000000000000000000000000000000000900467ffffffffffffffff16615216565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b6114278282613880565b600054610100900460ff16612d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b600054610100900460ff166129f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b600054610100900460ff166132ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff1661337b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff86160217905560ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8681169190911790915582161561341f5761341f600083612bcc565b60005b855181101561347e5761346e7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de87838151811061346157613461614a70565b6020026020010151612bcc565b61347781614ace565b9050613422565b5060005b81518110156134d1576134c17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583838151811061346157613461614a70565b6134ca81614ace565b9050613482565b505050505050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611427576135198161393b565b61352483602061395a565b604051602001613535929190615258565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610ecd916004016152d9565b73ffffffffffffffffffffffffffffffffffffffff82166135e0576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461363a576040519150601f19603f3d011682016040523d82523d6000602084013e61363f565b606091505b50509050806115c3576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610ecd565b73ffffffffffffffffffffffffffffffffffffffff82166136e6576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115c373ffffffffffffffffffffffffffffffffffffffff84168383613b9d565b60975460ff166129f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ecd565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661142757600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556138093390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061387760516031848661506b565b612d42916152ec565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561142757600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606111d373ffffffffffffffffffffffffffffffffffffffff831660145b60606000613969836002615328565b613974906002615134565b67ffffffffffffffff81111561398c5761398c614015565b6040519080825280601f01601f1916602001820160405280156139b6576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106139ed576139ed614a70565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613a5057613a50614a70565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613a8c846002615328565b613a97906001615134565b90505b6001811115613b34577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613ad857613ad8614a70565b1a60f81b828281518110613aee57613aee614a70565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93613b2d8161533f565b9050613a9a565b508315612d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ecd565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526115c392869291600091613c68918516908490613d15565b9050805160001480613c89575080806020019051810190613c899190615374565b6115c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ecd565b6060613d248484600085613d2c565b949350505050565b606082471015613dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610ecd565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613de79190615391565b60006040518083038185875af1925050503d8060008114613e24576040519150601f19603f3d011682016040523d82523d6000602084013e613e29565b606091505b509150915061239d8783838760608315613ecb578251600003613ec45773ffffffffffffffffffffffffffffffffffffffff85163b613ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ecd565b5081613d24565b613d248383815115613ee05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd91906152d9565b82805482825590600052602060002090601f01602090048101928215613fad5791602002820160005b83821115613f7e57833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613f3d565b8015613fab5782816101000a81549060ff0219169055600101602081600001049283019260010302613f7e565b505b50613fb9929150613fbd565b5090565b5b80821115613fb95760008155600101613fbe565b6000813574ffffffffffffffffffffffffffffffffffffffffff81168114613ff957600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561406757614067614015565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156140b4576140b4614015565b604052919050565b600067ffffffffffffffff8211156140d6576140d6614015565b5060051b60200190565b600082601f8301126140f157600080fd5b81356020614106614101836140bc565b61406d565b82815260059290921b8401810191818101908684111561412557600080fd5b8286015b848110156141475761413a81613fd2565b8352918301918301614129565b509695505050505050565b60008060008060008060c0878903121561416b57600080fd5b61417487613fd2565b955061418260208801613fd2565b9450604087013567ffffffffffffffff8082111561419f57600080fd5b6141ab8a838b016140e0565b95506141b960608a01613fd2565b94506141c760808a01613fd2565b935060a08901359150808211156141dd57600080fd5b506141ea89828a016140e0565b9150509295509295509295565b60008060006060848603121561420c57600080fd5b61421584613fd2565b925061422360208501613fd2565b9150604084013590509250925092565b60006020828403121561424557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612d4257600080fd5b60006020828403121561428757600080fd5b612d4282613fd2565b8015158114612abd57600080fd5b6000602082840312156142b057600080fd5b8135612d4281614290565b6000602082840312156142cd57600080fd5b5035919050565b63ffffffff81168114612abd57600080fd5b6000602082840312156142f857600080fd5b8135612d42816142d4565b6020808252825182820181905260009190848201906040850190845b8181101561433e57835160ff168352928401929184019160010161431f565b50909695505050505050565b6000806040838503121561435d57600080fd5b8235915061436d60208401613fd2565b90509250929050565b60008083601f84011261438857600080fd5b50813567ffffffffffffffff8111156143a057600080fd5b6020830191508360208285010111156143b857600080fd5b9250929050565b6000806000604084860312156143d457600080fd5b833567ffffffffffffffff8111156143eb57600080fd5b6143f786828701614376565b909790965060209590950135949350505050565b60006060828403121561441d57600080fd5b50919050565b60008083601f84011261443557600080fd5b50813567ffffffffffffffff81111561444d57600080fd5b6020830191508360208260061b85010111156143b857600080fd5b600080600080600080600060e0888a03121561448357600080fd5b61448d898961440b565b9650606088013567ffffffffffffffff808211156144aa57600080fd5b6144b68b838c01614423565b909850965060808a0135955060a08a01359150808211156144d657600080fd5b506144e38a828b01614376565b989b979a5095989497959660c090950135949350505050565b803567ffffffffffffffff8116811461159957600080fd5b803561ffff8116811461159957600080fd5b80356fffffffffffffffffffffffffffffffff8116811461159957600080fd5b6000602080838503121561455957600080fd5b823567ffffffffffffffff81111561457057600080fd5b8301601f8101851361458157600080fd5b803561458f614101826140bc565b81815260c091820283018401918482019190888411156145ae57600080fd5b938501935b838510156146425780858a0312156145cb5760008081fd5b6145d3614044565b85356145de816142d4565b81526145eb8688016144fc565b8782015260406145fc8188016144fc565b90820152606061460d878201614514565b90820152608061461e878201614526565b9082015260a061462f878201614526565b90820152835293840193918501916145b3565b50979650505050505050565b6000806020838503121561466157600080fd5b823567ffffffffffffffff81111561467857600080fd5b61468485828601614423565b90969095509350505050565b60008060008060008060e087890312156146a957600080fd5b6146b3888861440b565b955060608701356146c3816142d4565b94506146d160808801613fd2565b935060a087013567ffffffffffffffff8111156146ed57600080fd5b6146f989828a01614423565b979a969950949794969560c090950135949350505050565b60008060008060006080868803121561472957600080fd5b8535614734816142d4565b945061474260208701613fd2565b935060408601359250606086013567ffffffffffffffff81111561476557600080fd5b61477188828901614376565b969995985093965092949392505050565b600080600080600080600080600060e08a8c0312156147a057600080fd5b6147a98a613fd2565b98506147b760208b01613fd2565b975060408a013596506147cc60608b01614514565b955060808a013567ffffffffffffffff808211156147e957600080fd5b6147f58d838e01614376565b909750955060a08c013591508082111561480e57600080fd5b5061481b8c828d01614376565b9a9d999c50979a9699959894979660c00135949350505050565b6000610100828403121561441d57600080fd5b6000806000806060858703121561485e57600080fd5b843567ffffffffffffffff8082111561487657600080fd5b61488288838901614423565b90965094506020870135935060408701359150808211156148a257600080fd5b506148af87828801614835565b91505092959194509250565b6000806000604084860312156148d057600080fd5b6148d984613fd2565b9250602084013567ffffffffffffffff8111156148f557600080fd5b61490186828701614376565b9497909650939450505050565b60006020828403121561492057600080fd5b612d4282614514565b60008060006040848603121561493e57600080fd5b8335614949816142d4565b9250602084013567ffffffffffffffff8082111561496657600080fd5b818601915086601f83011261497a57600080fd5b81358181111561498957600080fd5b8760208260051b850101111561499e57600080fd5b6020830194508093505050509250925092565b6000602082840312156149c357600080fd5b813567ffffffffffffffff8111156149da57600080fd5b613d2484828501614835565b6000602082840312156149f857600080fd5b8151612d42816142d4565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000614a60604083018587614a03565b9050826020830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614aff57614aff614a9f565b5060010190565b602080825282518282018190526000919060409081850190868401855b82811015614ba0578151805163ffffffff1685528681015167ffffffffffffffff9081168887015286820151168686015260608082015161ffff16908601526080808201516fffffffffffffffffffffffffffffffff9081169187019190915260a091820151169085015260c09093019290850190600101614b23565b5091979650505050505050565b845173ffffffffffffffffffffffffffffffffffffffff908116825260208087015163ffffffff1681840152604080880151909216828401526060808801518185015260808089015161ffff90811682870152885167ffffffffffffffff90811660a0880152938901511660c0860152928701516fffffffffffffffffffffffffffffffff90811660e08601529087015116610100840152908501511661012082015260006101608061014084015261239d8184018587614a03565b600060208284031215614c7b57600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525087604083015261ffff8716606083015260c06080830152614ccc60c083018688614a03565b82810360a0840152614cdf818587614a03565b9b9a5050505050505050505050565b60005b83811015614d09578181015183820152602001614cf1565b50506000910152565b60008151808452614d2a816020860160208601614cee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061012073ffffffffffffffffffffffffffffffffffffffff808f168452808e166020850152508b604084015261ffff8b1660608401528960808401528860a08401528060c0840152614db3818401888a614a03565b905082810360e0840152614dc8818688614a03565b9050828103610100840152614ddd8185614d12565b9e9d5050505050505050505050505050565b818103818111156111d3576111d3614a9f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e3757600080fd5b83018035915067ffffffffffffffff821115614e5257600080fd5b6020019150368190038213156143b857600080fd5b8035614e72816142d4565b63ffffffff1682526020818101359083015267ffffffffffffffff614e99604083016144fc565b1660408301525050565b614ead8189614e67565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000614ee660e083018688614a03565b82810360c0840152614ef9818587614a03565b9a9950505050505050505050565b6000610140614f16838e614e67565b73ffffffffffffffffffffffffffffffffffffffff8c1660608401528a60808401528960a08401528860c08401528060e0840152614f57818401888a614a03565b9050828103610100840152614f6d818688614a03565b9050828103610120840152614f828185614d12565b9d9c50505050505050505050505050565b600061012073ffffffffffffffffffffffffffffffffffffffff8088511684528060208901511660208501525061ffff6040880151166040840152615030606084018767ffffffffffffffff80825116835261ffff602083015116602084015260408201516fffffffffffffffffffffffffffffffff80821660408601528060608501511660608601525050806080830151166080840152505050565b8061010084015261239d8184018587614a03565b600067ffffffffffffffff80831681810361506157615061614a9f565b6001019392505050565b6000808585111561507b57600080fd5b8386111561508857600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156150d55780818660040360031b1b83161692505b505092915050565b6000604082840312156150ef57600080fd5b6040516040810181811067ffffffffffffffff8211171561511257615112614015565b60405261511e83613fd2565b8152602083013560208201528091505092915050565b808201808211156111d3576111d3614a9f565b600081518084526020808501945080840160005b8381101561517957815115158752958201959082019060010161515b565b509495945050505050565b600060e08201615194838a614e67565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a0850152908590528590610100840160005b8781101561520357826151e485613fd2565b16825260208481013590830152604093840193909101906001016151d2565b5084810360c0860152614cdf8187615147565b600067ffffffffffffffff82168061523057615230614a9f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615290816017850160208801614cee565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516152cd816028840160208801614cee565b01602801949350505050565b602081526000612d426020830184614d12565b803560208310156111d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80820281158282048414176111d3576111d3614a9f565b60008161534e5761534e614a9f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60006020828403121561538657600080fd5b8151612d4281614290565b600082516153a3818460208701614cee565b919091019291505056fea26474726f6e58221220d52c89c4ca676c2935ead4a6bd9b9dd4f5abce642588bf4ca2f13b46ab2cbfda64736f6c63430008140033",
1410
+ "deployedBytecode": "0x6080604052600436106102c45760003560e01c8063709eb66411610179578063c2803b2c116100d6578063cd88b9031161008a578063d547741f11610064578063d547741f14610c8d578063e395eb5c14610cc7578063fa34c84e14610d2c57600080fd5b8063cd88b90314610bd4578063cfc3257014610c0e578063d2ae210414610c2157600080fd5b8063c416aa51116100bb578063c416aa5114610b19578063c7b2370b14610b60578063c8f8dcd114610b9a57600080fd5b8063c2803b2c14610a97578063c358de0a14610adf57600080fd5b80638624ba071161012d5780639e944965116101125780639e94496514610937578063a217fddf14610a2e578063c015bb7d14610a5d57600080fd5b80638624ba07146108b757806391d14854146108ca57600080fd5b8063724e78da1161015e578063724e78da14610823578063741bef1a1461085d5780637cd44734146108a457600080fd5b8063709eb664146107af578063717e8a42146107e957600080fd5b80632f2ff15d116102275780633d85ac33116101db578063475b6d9e116101c0578063475b6d9e146106fd5780635c975abb146107105780635e280f111461074257600080fd5b80633d85ac331461068957806344bb7e28146106c357600080fd5b806336568abe1161020c57806336568abe146105f15780633927c0751461062b5780633bd0db9f1461063e57600080fd5b80632f2ff15d1461057d5780633146646a146105b757600080fd5b80631095b6d71161027e578063248a9ca311610263578063248a9ca3146104a457806326e67a37146104fc5780632de113761461054357600080fd5b80631095b6d71461043057806316c38b3c1461046a57600080fd5b806301e33667116102af57806301e336671461037257806301ffc9a7146103ac57806302e723d9146103f657600080fd5b80629fc681146102c9578062bf2e8014610305575b600080fd5b3480156102d557600080fd5b50d380156102e257600080fd5b50d280156102ef57600080fd5b506103036102fe366004614152565b610d66565b005b34801561031157600080fd5b50d3801561031e57600080fd5b50d2801561032b57600080fd5b5060c95461035a907c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561037e57600080fd5b50d3801561038b57600080fd5b50d2801561039857600080fd5b506103036103a73660046141f7565b611105565b3480156103b857600080fd5b50d380156103c557600080fd5b50d280156103d257600080fd5b506103e66103e1366004614233565b611140565b6040519015158152602001610369565b34801561040257600080fd5b50d3801561040f57600080fd5b50d2801561041c57600080fd5b5061030361042b366004614275565b6111d9565b34801561043c57600080fd5b50d3801561044957600080fd5b50d2801561045657600080fd5b506103036104653660046141f7565b61127f565b34801561047657600080fd5b50d3801561048357600080fd5b50d2801561049057600080fd5b5061030361049f36600461429e565b61140e565b3480156104b057600080fd5b50d380156104bd57600080fd5b50d280156104ca57600080fd5b506104ee6104d93660046142bb565b60009081526065602052604090206001015490565b604051908152602001610369565b34801561050857600080fd5b50d3801561051557600080fd5b50d2801561052257600080fd5b506105366105313660046142e6565b611433565b6040516103699190614303565b34801561054f57600080fd5b50d3801561055c57600080fd5b50d2801561056957600080fd5b506103e6610578366004614275565b6114ba565b34801561058957600080fd5b50d3801561059657600080fd5b50d280156105a357600080fd5b506103036105b236600461434a565b61159e565b3480156105c357600080fd5b50d380156105d057600080fd5b50d280156105dd57600080fd5b506103036105ec3660046143bf565b6115c8565b3480156105fd57600080fd5b50d3801561060a57600080fd5b50d2801561061757600080fd5b5061030361062636600461434a565b611691565b610303610639366004614468565b6116c3565b34801561064a57600080fd5b50d3801561065757600080fd5b50d2801561066457600080fd5b506103e6610673366004614275565b6101306020526000908152604090205460ff1681565b34801561069557600080fd5b50d380156106a257600080fd5b50d280156106af57600080fd5b506103036106be366004614546565b6117ad565b3480156106cf57600080fd5b50d380156106dc57600080fd5b50d280156106e957600080fd5b506103036106f836600461464e565b61198e565b61030361070b366004614690565b611ad1565b34801561071c57600080fd5b50d3801561072957600080fd5b50d2801561073657600080fd5b5060975460ff166103e6565b34801561074e57600080fd5b50d3801561075b57600080fd5b50d2801561076857600080fd5b5061012e5461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610369565b3480156107bb57600080fd5b50d380156107c857600080fd5b50d280156107d557600080fd5b506104ee6107e4366004614711565b611b25565b3480156107f557600080fd5b50d3801561080257600080fd5b50d2801561080f57600080fd5b506104ee61081e366004614711565b611c60565b34801561082f57600080fd5b50d3801561083c57600080fd5b50d2801561084957600080fd5b50610303610858366004614275565b611dc8565b34801561086957600080fd5b50d3801561087657600080fd5b50d2801561088357600080fd5b5060ca5461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b6103036108b2366004614782565b611e65565b6103036108c5366004614848565b61201a565b3480156108d657600080fd5b50d380156108e357600080fd5b50d280156108f057600080fd5b506103e66108ff36600461434a565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561094357600080fd5b50d3801561095057600080fd5b50d2801561095d57600080fd5b506109e161096c3660046142e6565b61012d602052600090815260409020805460019091015467ffffffffffffffff8083169261ffff68010000000000000000820416926fffffffffffffffffffffffffffffffff6a0100000000000000000000909204821692918116917001000000000000000000000000000000009091041685565b6040805167ffffffffffffffff968716815261ffff90951660208601526fffffffffffffffffffffffffffffffff938416908501529116606083015291909116608082015260a001610369565b348015610a3a57600080fd5b50d38015610a4757600080fd5b50d28015610a5457600080fd5b506104ee600081565b348015610a6957600080fd5b50d38015610a7657600080fd5b50d28015610a8357600080fd5b506104ee610a923660046148bb565b612230565b348015610aa357600080fd5b50d38015610ab057600080fd5b50d28015610abd57600080fd5b5061012f5461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610aeb57600080fd5b50d38015610af857600080fd5b50d28015610b0557600080fd5b50610303610b1436600461490e565b6123a8565b348015610b2557600080fd5b50d38015610b3257600080fd5b50d28015610b3f57600080fd5b5060c95461078a9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610b6c57600080fd5b50d38015610b7957600080fd5b50d28015610b8657600080fd5b50610303610b95366004614275565b612455565b348015610ba657600080fd5b50d38015610bb357600080fd5b50d28015610bc057600080fd5b506104ee610bcf3660046148bb565b6124f2565b348015610be057600080fd5b50d38015610bed57600080fd5b50d28015610bfa57600080fd5b50610303610c09366004614929565b61263d565b610303610c1c3660046149b1565b612687565b348015610c2d57600080fd5b50d38015610c3a57600080fd5b50d28015610c4757600080fd5b5060c954610c749074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610369565b348015610c9957600080fd5b50d38015610ca657600080fd5b50d28015610cb357600080fd5b50610303610cc236600461434a565b612843565b348015610cd357600080fd5b50d38015610ce057600080fd5b50d28015610ced57600080fd5b5061012e54610d179074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610369565b348015610d3857600080fd5b50d38015610d4557600080fd5b50d28015610d5257600080fd5b50610303610d61366004614275565b612868565b6000610d907fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610de95773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610e0b565b3373ffffffffffffffffffffffffffffffffffffffff821614610e0b57600080fd5b600054610100900460ff1615808015610e2b5750600054600160ff909116105b80610e455750303b158015610e45575060005460ff166001145b610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f3457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f3c612956565b610f4b8686612ee087876129f7565b61012e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905163416ecebf916004808201926020929091908290030181865afa158015610fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100791906149e6565b61012e80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff939093169290920291909117905561012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff891617905580156110fb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561112f81612ab3565b61113a848484612ac0565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806111d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561120381612ab3565b61012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f2a2a4b95cee71747feecad6bcdaa0016f908444a79c1c31c1987b262ba4e6dbe906020015b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756112a981612ab3565b73ffffffffffffffffffffffffffffffffffffffff841660009081527fe3a3b2721d010eec8988605a93cd7c15d969808c0e2b42f6155dc2b4fa13c081602052604090205460ff16611327576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b15801561139757600080fd5b505af11580156113ab573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b600061141981612ab3565b811561142b57611427612af0565b5050565b611427612b75565b63ffffffff8116600090815260cb60209081526040918290208054835181840281018401909452808452606093928301828280156114ae57602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161147f5790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f0f6a9529577ef7bf1cbc8fccda1cc3c881f755c7e92e34c7c4deac1fa3c1c791602052604081205460ff161561150f57506000919050565b60c95474010000000000000000000000000000000000000000900467ffffffffffffffff161580611584575073ffffffffffffffffffffffffffffffffffffffff821660009081527f35c5067391a9036240763c1067bfa438a7b0131204a675a2fe562dd73782ce85602052604090205460ff165b1561159157506001919050565b506000919050565b919050565b6000828152606560205260409020600101546115b981612ab3565b6115c38383612bcc565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756115f281612ab3565b6115fa612c93565b61012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f89061165590879087908790600401614a4c565b600060405180830381600087803b15801561166f57600080fd5b505af1158015611683573d6000803e3d6000fd5b5050505061113a600160fb55565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116ed81612ab3565b6116f5612c93565b611715886117038686612d0d565b61170d8787612d30565b8a8a8a612d49565b5061012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f89061177190879087908790600401614a4c565b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506110fb600160fb55565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756117d781612ab3565b60005b825181101561195e5760008382815181106117f7576117f7614a70565b6020908102919091018101516040805160a080820183528385015167ffffffffffffffff908116835260608086015161ffff9081168589019081526080808901516fffffffffffffffffffffffffffffffff908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff16600090815261012d909a5296909820945185549851945188166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9590921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090991690841617979097179290921695909517825551600190910180549251909416700100000000000000000000000000000000027fffffffffffffffff000000000000000000000000000000000000000000000000909216921691909117179055508061195681614ace565b9150506117da565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc53826040516112739190614b06565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119b881612ab3565b60005b8281101561113a57368484838181106119d6576119d6614a70565b90506040020190508060200160208101906119f1919061429e565b6101306000611a036020850185614275565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155611a6490820182614275565b73ffffffffffffffffffffffffffffffffffffffff167ffafc7bfa3c73f8a408d873ba109b7145dc715107b809e460e7afe60d5402c6a2611aab604084016020850161429e565b604051901515815260200160405180910390a25080611ac981614ace565b9150506119bb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611afb81612ab3565b611b03612c93565b611b11878787878787612d49565b50611b1c600160fb55565b50505050505050565b600084611b31816114ba565b611b67576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b6f612ec9565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a166020830152888116928201929092526060810187905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663434ee01682611bf28b8b612f36565b88886040518563ffffffff1660e01b8152600401611c139493929190614bad565b602060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c549190614c69565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de611c8c81612ab3565b85611c96816114ba565b611ccc576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cd4612ec9565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b166020830152898116928201929092526060810188905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663566ef76282611d578c8c612f36565b89896040518563ffffffff1660e01b8152600401611d789493929190614bad565b6020604051808303816000875af1158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb9190614c69565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611df281612ab3565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001611273565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611e8f81612ab3565b611e97612c93565b61012e546040517f91d20fa100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906391d20fa19084903490611f00908f908f908f908f908f908f908f908f90600401614c82565b6000604051808303818589803b158015611f1957600080fd5b5088f19450505050508015611f2c575060015b612004573d808015611f5a576040519150601f19603f3d011682016040523d82523d6000602084013e611f5f565b606091505b5061012e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697fe6b68c8c8c8c88348e8e8e8e8c6040518c63ffffffff1660e01b8152600401611fd09b9a99989796959493929190614d5c565b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b50505050505b61200e600160fb55565b50505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561204481612ab3565b61204c612c93565b61012e5460009061208c90602085019074010000000000000000000000000000000000000000900463ffffffff166120848287614275565b898989612d49565b9050600061209a8234614def565b61012e5490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e086013583602088016120d0818a614275565b60808a01356120e260a08c018c614e02565b6120ef60c08e018e614e02565b6040518a63ffffffff1660e01b81526004016121119796959493929190614ea3565b6000604051808303818589803b15801561212a57600080fd5b5088f1945050505050801561213d575060015b61221d573d80801561216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa36020870161219e8189614275565b608089013560e08a0135876121b660a08d018d614e02565b6121c360c08f018f614e02565b8b6040518b63ffffffff1660e01b81526004016121e99a99989796959493929190614f07565b600060405180830381600087803b15801561220357600080fd5b505af1158015612217573d6000803e3d6000fd5b50505050505b5050612229600160fb55565b5050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de61225c81612ab3565b84612266816114ba565b61229c576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122a4612ec9565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252888116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e549192169063650037849083906123399074010000000000000000000000000000000000000000900463ffffffff168b612f36565b89896040518563ffffffff1660e01b815260040161235a9493929190614f93565b6020604051808303816000875af1158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239d9190614c69565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756123d281612ab3565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001611273565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561247f81612ab3565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001611273565b6000836124fe816114ba565b612534576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61253c612ec9565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252878116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e549192169063337c7a9e9083906125d19074010000000000000000000000000000000000000000900463ffffffff168a612f36565b88886040518563ffffffff1660e01b81526004016125f29493929190614f93565b602060405180830381865afa15801561260f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126339190614c69565b9695505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561266781612ab3565b63ffffffff8416600090815260cb60205260409020612229908484613f14565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756126b181612ab3565b6126b9612c93565b61012e5473ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e084013534602086016126ec8188614275565b60808801356126fe60a08a018a614e02565b61270b60c08c018c614e02565b6040518a63ffffffff1660e01b815260040161272d9796959493929190614ea3565b6000604051808303818589803b15801561274657600080fd5b5088f19450505050508015612759575060015b612839573d808015612787576040519150601f19603f3d011682016040523d82523d6000602084013e61278c565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa3602085016127ba8187614275565b608087013560e0880135346127d260a08b018b614e02565b6127df60c08d018d614e02565b8b6040518b63ffffffff1660e01b81526004016128059a99989796959493929190614f07565b600060405180830381600087803b15801561281f57600080fd5b505af1158015612833573d6000803e3d6000fd5b50505050505b611427600160fb55565b60008281526065602052604090206001015461285e81612ab3565b6115c3838361302f565b60006128927fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166128eb5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561290d565b3373ffffffffffffffffffffffffffffffffffffffff82161461290d57600080fd5b5061012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff166129ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b6129f56130f5565b565b600054610100900460ff16612a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b612a9661318c565b612a9e61318c565b612aa6613223565b61222985858585856132e4565b612abd81336134d9565b50565b73ffffffffffffffffffffffffffffffffffffffff8316612ae5576115c38282613593565b6115c3838383613699565b612af8612ec9565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b4b3390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b612b7d613707565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612b4b565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612c2b5750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15612c895760c98054601490612c629074010000000000000000000000000000000000000000900467ffffffffffffffff16615044565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b6114278282613773565b600260fb5403612cff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ecd565b600260fb55565b600160fb55565b6000612d1d6031602d848661506b565b612d2691615095565b60e01c9392505050565b6000612d42612d3f8484613867565b90565b9392505050565b6000808367ffffffffffffffff811115612d6557612d65614015565b604051908082528060200260200182016040528015612d8e578160200160208202803683370190505b50905060005b84811015612e7c576000868683818110612db057612db0614a70565b905060400201803603810190612dc691906150dd565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682602001518790604051600060405180830381858888f193505050503d8060008114612e2d576040519150601f19603f3d011682016040523d82523d6000602084013e612e32565b606091505b5050905080848481518110612e4957612e49614a70565b911515602092830291909101820152820151612e659086615134565b945050508080612e7490614ace565b915050612d94565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c3468888888888886604051612eb696959493929190615184565b60405180910390a1509695505050505050565b60975460ff16156129f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ecd565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525063ffffffff8216600090815261012d60209081526040808320815160a081018352815467ffffffffffffffff808216835261ffff68010000000000000000830416838701526fffffffffffffffffffffffffffffffff6a010000000000000000000090920482168386015260019093015490811660608301527001000000000000000000000000000000009004909116608082015273ffffffffffffffffffffffffffffffffffffffff851684526101309092529091205460ff16156111d3576000604082015292915050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8214801561308d5750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b156130eb5760c980546014906130c49074010000000000000000000000000000000000000000900467ffffffffffffffff16615216565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b6114278282613880565b600054610100900460ff16612d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b600054610100900460ff166129f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b600054610100900460ff166132ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff1661337b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ecd565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff86160217905560ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8681169190911790915582161561341f5761341f600083612bcc565b60005b855181101561347e5761346e7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de87838151811061346157613461614a70565b6020026020010151612bcc565b61347781614ace565b9050613422565b5060005b81518110156134d1576134c17fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583838151811061346157613461614a70565b6134ca81614ace565b9050613482565b505050505050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611427576135198161393b565b61352483602061395a565b604051602001613535929190615258565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610ecd916004016152d9565b73ffffffffffffffffffffffffffffffffffffffff82166135e0576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461363a576040519150601f19603f3d011682016040523d82523d6000602084013e61363f565b606091505b50509050806115c3576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610ecd565b73ffffffffffffffffffffffffffffffffffffffff82166136e6576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115c373ffffffffffffffffffffffffffffffffffffffff84168383613b9d565b60975460ff166129f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ecd565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661142757600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556138093390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061387760516031848661506b565b612d42916152ec565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561142757600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606111d373ffffffffffffffffffffffffffffffffffffffff831660145b60606000613969836002615328565b613974906002615134565b67ffffffffffffffff81111561398c5761398c614015565b6040519080825280601f01601f1916602001820160405280156139b6576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106139ed576139ed614a70565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613a5057613a50614a70565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613a8c846002615328565b613a97906001615134565b90505b6001811115613b34577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613ad857613ad8614a70565b1a60f81b828281518110613aee57613aee614a70565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93613b2d8161533f565b9050613a9a565b508315612d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ecd565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526115c392869291600091613c68918516908490613d15565b9050805160001480613c89575080806020019051810190613c899190615374565b6115c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ecd565b6060613d248484600085613d2c565b949350505050565b606082471015613dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610ecd565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613de79190615391565b60006040518083038185875af1925050503d8060008114613e24576040519150601f19603f3d011682016040523d82523d6000602084013e613e29565b606091505b509150915061239d8783838760608315613ecb578251600003613ec45773ffffffffffffffffffffffffffffffffffffffff85163b613ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ecd565b5081613d24565b613d248383815115613ee05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd91906152d9565b82805482825590600052602060002090601f01602090048101928215613fad5791602002820160005b83821115613f7e57833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613f3d565b8015613fab5782816101000a81549060ff0219169055600101602081600001049283019260010302613f7e565b505b50613fb9929150613fbd565b5090565b5b80821115613fb95760008155600101613fbe565b6000813574ffffffffffffffffffffffffffffffffffffffffff81168114613ff957600080fd5b73ffffffffffffffffffffffffffffffffffffffff1692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561406757614067614015565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156140b4576140b4614015565b604052919050565b600067ffffffffffffffff8211156140d6576140d6614015565b5060051b60200190565b600082601f8301126140f157600080fd5b81356020614106614101836140bc565b61406d565b82815260059290921b8401810191818101908684111561412557600080fd5b8286015b848110156141475761413a81613fd2565b8352918301918301614129565b509695505050505050565b60008060008060008060c0878903121561416b57600080fd5b61417487613fd2565b955061418260208801613fd2565b9450604087013567ffffffffffffffff8082111561419f57600080fd5b6141ab8a838b016140e0565b95506141b960608a01613fd2565b94506141c760808a01613fd2565b935060a08901359150808211156141dd57600080fd5b506141ea89828a016140e0565b9150509295509295509295565b60008060006060848603121561420c57600080fd5b61421584613fd2565b925061422360208501613fd2565b9150604084013590509250925092565b60006020828403121561424557600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612d4257600080fd5b60006020828403121561428757600080fd5b612d4282613fd2565b8015158114612abd57600080fd5b6000602082840312156142b057600080fd5b8135612d4281614290565b6000602082840312156142cd57600080fd5b5035919050565b63ffffffff81168114612abd57600080fd5b6000602082840312156142f857600080fd5b8135612d42816142d4565b6020808252825182820181905260009190848201906040850190845b8181101561433e57835160ff168352928401929184019160010161431f565b50909695505050505050565b6000806040838503121561435d57600080fd5b8235915061436d60208401613fd2565b90509250929050565b60008083601f84011261438857600080fd5b50813567ffffffffffffffff8111156143a057600080fd5b6020830191508360208285010111156143b857600080fd5b9250929050565b6000806000604084860312156143d457600080fd5b833567ffffffffffffffff8111156143eb57600080fd5b6143f786828701614376565b909790965060209590950135949350505050565b60006060828403121561441d57600080fd5b50919050565b60008083601f84011261443557600080fd5b50813567ffffffffffffffff81111561444d57600080fd5b6020830191508360208260061b85010111156143b857600080fd5b600080600080600080600060e0888a03121561448357600080fd5b61448d898961440b565b9650606088013567ffffffffffffffff808211156144aa57600080fd5b6144b68b838c01614423565b909850965060808a0135955060a08a01359150808211156144d657600080fd5b506144e38a828b01614376565b989b979a5095989497959660c090950135949350505050565b803567ffffffffffffffff8116811461159957600080fd5b803561ffff8116811461159957600080fd5b80356fffffffffffffffffffffffffffffffff8116811461159957600080fd5b6000602080838503121561455957600080fd5b823567ffffffffffffffff81111561457057600080fd5b8301601f8101851361458157600080fd5b803561458f614101826140bc565b81815260c091820283018401918482019190888411156145ae57600080fd5b938501935b838510156146425780858a0312156145cb5760008081fd5b6145d3614044565b85356145de816142d4565b81526145eb8688016144fc565b8782015260406145fc8188016144fc565b90820152606061460d878201614514565b90820152608061461e878201614526565b9082015260a061462f878201614526565b90820152835293840193918501916145b3565b50979650505050505050565b6000806020838503121561466157600080fd5b823567ffffffffffffffff81111561467857600080fd5b61468485828601614423565b90969095509350505050565b60008060008060008060e087890312156146a957600080fd5b6146b3888861440b565b955060608701356146c3816142d4565b94506146d160808801613fd2565b935060a087013567ffffffffffffffff8111156146ed57600080fd5b6146f989828a01614423565b979a969950949794969560c090950135949350505050565b60008060008060006080868803121561472957600080fd5b8535614734816142d4565b945061474260208701613fd2565b935060408601359250606086013567ffffffffffffffff81111561476557600080fd5b61477188828901614376565b969995985093965092949392505050565b600080600080600080600080600060e08a8c0312156147a057600080fd5b6147a98a613fd2565b98506147b760208b01613fd2565b975060408a013596506147cc60608b01614514565b955060808a013567ffffffffffffffff808211156147e957600080fd5b6147f58d838e01614376565b909750955060a08c013591508082111561480e57600080fd5b5061481b8c828d01614376565b9a9d999c50979a9699959894979660c00135949350505050565b6000610100828403121561441d57600080fd5b6000806000806060858703121561485e57600080fd5b843567ffffffffffffffff8082111561487657600080fd5b61488288838901614423565b90965094506020870135935060408701359150808211156148a257600080fd5b506148af87828801614835565b91505092959194509250565b6000806000604084860312156148d057600080fd5b6148d984613fd2565b9250602084013567ffffffffffffffff8111156148f557600080fd5b61490186828701614376565b9497909650939450505050565b60006020828403121561492057600080fd5b612d4282614514565b60008060006040848603121561493e57600080fd5b8335614949816142d4565b9250602084013567ffffffffffffffff8082111561496657600080fd5b818601915086601f83011261497a57600080fd5b81358181111561498957600080fd5b8760208260051b850101111561499e57600080fd5b6020830194508093505050509250925092565b6000602082840312156149c357600080fd5b813567ffffffffffffffff8111156149da57600080fd5b613d2484828501614835565b6000602082840312156149f857600080fd5b8151612d42816142d4565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000614a60604083018587614a03565b9050826020830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614aff57614aff614a9f565b5060010190565b602080825282518282018190526000919060409081850190868401855b82811015614ba0578151805163ffffffff1685528681015167ffffffffffffffff9081168887015286820151168686015260608082015161ffff16908601526080808201516fffffffffffffffffffffffffffffffff9081169187019190915260a091820151169085015260c09093019290850190600101614b23565b5091979650505050505050565b845173ffffffffffffffffffffffffffffffffffffffff908116825260208087015163ffffffff1681840152604080880151909216828401526060808801518185015260808089015161ffff90811682870152885167ffffffffffffffff90811660a0880152938901511660c0860152928701516fffffffffffffffffffffffffffffffff90811660e08601529087015116610100840152908501511661012082015260006101608061014084015261239d8184018587614a03565b600060208284031215614c7b57600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525087604083015261ffff8716606083015260c06080830152614ccc60c083018688614a03565b82810360a0840152614cdf818587614a03565b9b9a5050505050505050505050565b60005b83811015614d09578181015183820152602001614cf1565b50506000910152565b60008151808452614d2a816020860160208601614cee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061012073ffffffffffffffffffffffffffffffffffffffff808f168452808e166020850152508b604084015261ffff8b1660608401528960808401528860a08401528060c0840152614db3818401888a614a03565b905082810360e0840152614dc8818688614a03565b9050828103610100840152614ddd8185614d12565b9e9d5050505050505050505050505050565b818103818111156111d3576111d3614a9f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e3757600080fd5b83018035915067ffffffffffffffff821115614e5257600080fd5b6020019150368190038213156143b857600080fd5b8035614e72816142d4565b63ffffffff1682526020818101359083015267ffffffffffffffff614e99604083016144fc565b1660408301525050565b614ead8189614e67565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000614ee660e083018688614a03565b82810360c0840152614ef9818587614a03565b9a9950505050505050505050565b6000610140614f16838e614e67565b73ffffffffffffffffffffffffffffffffffffffff8c1660608401528a60808401528960a08401528860c08401528060e0840152614f57818401888a614a03565b9050828103610100840152614f6d818688614a03565b9050828103610120840152614f828185614d12565b9d9c50505050505050505050505050565b600061012073ffffffffffffffffffffffffffffffffffffffff8088511684528060208901511660208501525061ffff6040880151166040840152615030606084018767ffffffffffffffff80825116835261ffff602083015116602084015260408201516fffffffffffffffffffffffffffffffff80821660408601528060608501511660608601525050806080830151166080840152505050565b8061010084015261239d8184018587614a03565b600067ffffffffffffffff80831681810361506157615061614a9f565b6001019392505050565b6000808585111561507b57600080fd5b8386111561508857600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156150d55780818660040360031b1b83161692505b505092915050565b6000604082840312156150ef57600080fd5b6040516040810181811067ffffffffffffffff8211171561511257615112614015565b60405261511e83613fd2565b8152602083013560208201528091505092915050565b808201808211156111d3576111d3614a9f565b600081518084526020808501945080840160005b8381101561517957815115158752958201959082019060010161515b565b509495945050505050565b600060e08201615194838a614e67565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a0850152908590528590610100840160005b8781101561520357826151e485613fd2565b16825260208481013590830152604093840193909101906001016151d2565b5084810360c0860152614cdf8187615147565b600067ffffffffffffffff82168061523057615230614a9f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615290816017850160208801614cee565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516152cd816028840160208801614cee565b01602801949350505050565b602081526000612d426020830184614d12565b803560208310156111d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80820281158282048414176111d3576111d3614a9f565b60008161534e5761534e614a9f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60006020828403121561538657600080fd5b8151612d4281614290565b600082516153a3818460208701614cee565b919091019291505056fea26474726f6e58221220d52c89c4ca676c2935ead4a6bd9b9dd4f5abce642588bf4ca2f13b46ab2cbfda64736f6c63430008140033",
1411
+ "linkReferences": {},
1412
+ "deployedLinkReferences": {}
1413
+ }