@coti-io/coti-contracts 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/.github/workflows/npm-publish.yml +19 -15
  2. package/README.md +3 -1
  3. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.sol +452 -0
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.sol +490 -0
  5. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +432 -0
  6. package/contracts/disperse/disperseToken/MintDisperser.sol +120 -0
  7. package/contracts/disperse/disperseToken/TokenDisperser.sol +139 -0
  8. package/contracts/messaging/PrivateMessaging.sol +456 -0
  9. package/contracts/mocks/messaging/PrivateMessagingHarness.sol +54 -0
  10. package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +31 -0
  11. package/contracts/mocks/token/ERC20DecimalsMock.sol +21 -0
  12. package/contracts/mocks/token/ERC20Mock.sol +19 -0
  13. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +18 -0
  14. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +18 -0
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +44 -0
  16. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +23 -0
  17. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +29 -0
  18. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +9 -4
  19. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +39 -0
  20. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +29 -0
  21. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +18 -0
  22. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +12 -0
  23. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +123 -0
  24. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +122 -0
  25. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +65 -0
  26. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +65 -0
  27. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +64 -0
  28. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +64 -0
  29. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +98 -0
  30. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +98 -0
  31. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +44 -0
  32. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +44 -0
  33. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +55 -0
  34. package/contracts/mocks/utils/mpc/MinimalProxy.sol +27 -0
  35. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +267 -0
  36. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +334 -0
  37. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +24 -0
  38. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +24 -0
  39. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +93 -0
  40. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +116 -0
  41. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +157 -0
  42. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +133 -0
  43. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +137 -0
  44. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +32 -0
  45. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +32 -0
  46. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +36 -0
  47. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +36 -0
  48. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +29 -0
  49. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +29 -0
  50. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +32 -0
  51. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +32 -0
  52. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +59 -0
  53. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +63 -0
  54. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +99 -0
  55. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +7 -6
  56. package/contracts/node/CotiNodeRewards.sol +199 -0
  57. package/contracts/node/SoulboundNodeNFT.sol +519 -0
  58. package/contracts/oracle/CotiPriceConsumer.sol +103 -0
  59. package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
  60. package/contracts/oracle/IStdReference.sol +26 -0
  61. package/contracts/privacyBridge/PrivacyBridge.sol +600 -0
  62. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +316 -0
  63. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +333 -0
  64. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +22 -0
  65. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +23 -0
  66. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +23 -0
  67. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +23 -0
  68. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +23 -0
  69. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +23 -0
  70. package/contracts/token/PrivateERC20/IPrivateERC20.sol +273 -40
  71. package/contracts/token/PrivateERC20/ITokenReceiver.sol +17 -0
  72. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +20 -0
  73. package/contracts/token/PrivateERC20/PrivateERC20.sol +861 -152
  74. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +17 -0
  75. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +13 -0
  76. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +17 -0
  77. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +17 -0
  78. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +17 -0
  79. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +17 -0
  80. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +13 -0
  81. package/contracts/utils/mpc/MpcCore.sol +10780 -4962
  82. package/contracts/utils/mpc/MpcInterface.sol +7 -2
  83. package/hardhat/gasPriceBump.ts +60 -0
  84. package/hardhat.config.ts +63 -12
  85. package/package.json +22 -4
  86. package/scripts/add-bridge-operators.cjs +87 -0
  87. package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
  88. package/scripts/deployCotiNodeRewards.ts +51 -0
  89. package/scripts/deploySoulboundNodeNFT.ts +57 -0
  90. package/scripts/redeploy-private-and-bridges.cjs +201 -0
  91. package/scripts/set-bridge-limits-mainnet.cjs +177 -0
  92. package/scripts/verify-mainnet-private-bridges.cjs +289 -0
  93. package/sonar-project.properties +11 -0
  94. package/test/messaging/PrivateMessaging.test.ts +158 -0
  95. package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1663 -0
  96. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +250 -0
  97. package/test/token/PrivateERC20/PrivateERC20.test.ts +1109 -268
  98. package/test/utils/mpc/Bitwise128.test.ts +92 -0
  99. package/test/utils/mpc/Bitwise256.test.ts +101 -0
  100. package/test/utils/mpc/BuildInputText128.test.ts +398 -0
  101. package/test/utils/mpc/CheckedArithmetic128.test.ts +45 -0
  102. package/test/utils/mpc/CheckedArithmetic256.test.ts +45 -0
  103. package/test/utils/mpc/Comparison128.test.ts +48 -0
  104. package/test/utils/mpc/Comparison256.test.ts +48 -0
  105. package/test/utils/mpc/InvalidCiphertext.test.ts +179 -0
  106. package/test/utils/mpc/InvalidCiphertext128.test.ts +179 -0
  107. package/test/utils/mpc/InvalidCiphertext256.test.ts +201 -0
  108. package/test/utils/mpc/InvalidTransfer128.test.ts +166 -0
  109. package/test/utils/mpc/InvalidTransfer256.test.ts +158 -0
  110. package/test/utils/mpc/MinMax128.test.ts +44 -0
  111. package/test/utils/mpc/MinMax256.test.ts +44 -0
  112. package/test/utils/mpc/MinimalProxyDemo.test.ts +280 -0
  113. package/test/utils/mpc/MpcOperations.test.ts +589 -0
  114. package/test/utils/mpc/MpcOperations128.test.ts +632 -0
  115. package/test/utils/mpc/Mux128.test.ts +41 -0
  116. package/test/utils/mpc/Mux256.test.ts +41 -0
  117. package/test/utils/mpc/NegativeCases.test.ts +478 -0
  118. package/test/utils/mpc/NegativeCases128.test.ts +237 -0
  119. package/test/utils/mpc/NegativeCases256.test.ts +236 -0
  120. package/test/utils/mpc/OnBoard128.test.ts +90 -0
  121. package/test/utils/mpc/OnBoard256.test.ts +114 -0
  122. package/test/utils/mpc/Precompile128.test.ts +51 -0
  123. package/test/utils/mpc/Precompile256.test.ts +115 -0
  124. package/test/utils/mpc/ProxyValidation.test.ts +199 -0
  125. package/test/utils/mpc/Random128.test.ts +47 -0
  126. package/test/utils/mpc/Random256.test.ts +47 -0
  127. package/test/utils/mpc/Shift128.test.ts +41 -0
  128. package/test/utils/mpc/Shift256.test.ts +41 -0
  129. package/test/utils/mpc/Transfer128.test.ts +46 -0
  130. package/test/utils/mpc/Transfer256.test.ts +46 -0
  131. package/test/utils/mpc/TransferWithAllowance128.test.ts +48 -0
  132. package/test/utils/mpc/TransferWithAllowance256.test.ts +48 -0
  133. package/test/utils/mpc/UpgradeablePrivacyProxy.test.ts +307 -0
  134. package/test/utils/mpc/ValidateCiphertext.test.ts +221 -0
  135. package/test/utils/mpc/ValidateCiphertext256.test.ts +161 -0
  136. package/test/utils/mpc/ValidateCiphertext256Decryption.test.ts +383 -0
  137. package/test/utils/mpc/WalletEncryptionFailures.test.ts +494 -0
  138. package/test/utils/privateErc20Helpers.ts +97 -0
  139. package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
  140. package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
  141. package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
  142. package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
  143. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
  144. package/typechain-types/@openzeppelin/contracts/access/index.ts +8 -0
  145. package/typechain-types/@openzeppelin/contracts/index.ts +4 -0
  146. package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
  147. package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
  148. package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +330 -0
  149. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +262 -0
  150. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
  151. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.ts +143 -0
  152. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
  153. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +7 -0
  154. package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
  155. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
  156. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  157. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
  158. package/typechain-types/@openzeppelin/contracts/token/index.ts +2 -0
  159. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.ts +679 -0
  160. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
  161. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
  162. package/typechain-types/contracts/disperse/coinByRatio/index.ts +6 -0
  163. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20.ts +97 -0
  164. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
  165. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +228 -0
  166. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +6 -0
  167. package/typechain-types/contracts/disperse/disperseToken/TokenDisperser.ts +191 -0
  168. package/typechain-types/contracts/disperse/disperseToken/index.ts +6 -0
  169. package/typechain-types/contracts/disperse/index.ts +7 -0
  170. package/typechain-types/contracts/index.ts +10 -0
  171. package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
  172. package/typechain-types/contracts/messaging/index.ts +4 -0
  173. package/typechain-types/contracts/mocks/index.ts +4 -0
  174. package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
  175. package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
  176. package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
  177. package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
  178. package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +349 -0
  179. package/typechain-types/contracts/mocks/token/ERC20Mock.ts +368 -0
  180. package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
  181. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1892 -0
  182. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
  183. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
  184. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.ts +166 -0
  185. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +827 -78
  186. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
  187. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
  188. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  189. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
  190. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
  191. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
  192. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
  193. package/typechain-types/contracts/mocks/token/index.ts +2 -0
  194. package/typechain-types/contracts/mocks/utils/mpc/{Arithmetic128BitTestsContract.ts → Arithmetic128TestsContract.ts} +96 -126
  195. package/typechain-types/contracts/mocks/utils/mpc/{Arithmetic256BitTestsContract.ts → Arithmetic256TestsContract.ts} +97 -133
  196. package/typechain-types/contracts/mocks/utils/mpc/{Bitwise128BitTestsContract.ts → Bitwise128TestsContract.ts} +52 -59
  197. package/typechain-types/contracts/mocks/utils/mpc/{Bitwise256BitTestsContract.ts → Bitwise256TestsContract.ts} +52 -59
  198. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
  199. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
  200. package/typechain-types/contracts/mocks/utils/mpc/{Comparison128BitTestsContract.ts → Comparison128TestsContract.ts} +115 -97
  201. package/typechain-types/contracts/mocks/utils/mpc/{Comparison256BitTestsContract.ts → Comparison256TestsContract.ts} +115 -97
  202. package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
  203. package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
  204. package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
  205. package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
  206. package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
  207. package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
  208. package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
  209. package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
  210. package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
  211. package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
  212. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
  213. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
  214. package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
  215. package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
  216. package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
  217. package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
  218. package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
  219. package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
  220. package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
  221. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
  222. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
  223. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
  224. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
  225. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
  226. package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -8
  227. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
  228. package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
  229. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
  230. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
  231. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  232. package/typechain-types/contracts/node/index.ts +6 -0
  233. package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
  234. package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
  235. package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
  236. package/typechain-types/contracts/oracle/index.ts +6 -0
  237. package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1628 -0
  238. package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1870 -0
  239. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
  240. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1892 -0
  241. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  242. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1892 -0
  243. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1892 -0
  244. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1892 -0
  245. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1892 -0
  246. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1892 -0
  247. package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1892 -0
  248. package/typechain-types/contracts/privacyBridge/index.ts +13 -0
  249. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +507 -70
  250. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
  251. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
  252. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +833 -68
  253. package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
  254. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
  255. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
  256. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
  257. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
  258. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
  259. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
  260. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
  261. package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  262. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
  263. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
  264. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +229 -0
  265. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
  266. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +197 -0
  267. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
  268. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +8 -0
  269. package/typechain-types/factories/@openzeppelin/contracts/index.ts +2 -0
  270. package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
  271. package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
  272. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +356 -0
  273. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
  274. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
  275. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
  276. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
  277. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
  278. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +416 -0
  279. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
  280. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  281. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
  282. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
  283. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +791 -0
  284. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +711 -0
  285. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
  286. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +6 -0
  287. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
  288. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
  289. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +203 -0
  290. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +6 -0
  291. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
  292. package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
  293. package/typechain-types/factories/contracts/disperse/index.ts +5 -0
  294. package/typechain-types/factories/contracts/index.ts +5 -0
  295. package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
  296. package/typechain-types/factories/contracts/messaging/index.ts +4 -0
  297. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  298. package/typechain-types/factories/contracts/mocks/index.ts +2 -0
  299. package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
  300. package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
  301. package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
  302. package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
  303. package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +394 -0
  304. package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +392 -0
  305. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
  306. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1797 -0
  307. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1514 -0
  308. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1466 -0
  309. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
  310. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +975 -127
  311. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
  312. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
  313. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  314. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
  315. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
  316. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
  317. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
  318. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  319. package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
  320. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
  321. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
  322. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  323. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
  324. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
  325. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  326. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
  327. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
  328. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  329. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
  330. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  331. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
  332. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  333. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
  334. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
  335. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  336. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
  337. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
  338. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  339. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  340. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
  341. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
  342. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
  343. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
  344. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  345. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
  346. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
  347. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
  348. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
  349. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
  350. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
  351. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
  352. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
  353. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
  354. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  355. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  356. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
  357. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
  358. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  359. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  360. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
  361. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
  362. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  363. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  364. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  365. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  366. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  367. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  368. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
  369. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
  370. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
  371. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -8
  372. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +10 -28
  373. package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +549 -0
  374. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
  375. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +947 -0
  376. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  377. package/typechain-types/factories/contracts/node/index.ts +5 -0
  378. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  379. package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
  380. package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
  381. package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
  382. package/typechain-types/factories/contracts/oracle/index.ts +6 -0
  383. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1676 -0
  384. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
  385. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1678 -0
  386. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  387. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1782 -0
  388. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1782 -0
  389. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1782 -0
  390. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1782 -0
  391. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1782 -0
  392. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1367 -0
  393. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1782 -0
  394. package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
  395. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +639 -61
  396. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
  397. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
  398. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +986 -120
  399. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
  400. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1445 -0
  401. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1451 -0
  402. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1442 -0
  403. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1445 -0
  404. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1445 -0
  405. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1445 -0
  406. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1451 -0
  407. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  408. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  409. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
  410. package/typechain-types/hardhat.d.ts +1772 -278
  411. package/typechain-types/index.ts +182 -16
  412. package/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.sol +0 -260
  413. package/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.sol +0 -264
  414. package/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.sol +0 -91
  415. package/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.sol +0 -91
  416. package/contracts/mocks/utils/mpc/Comparison128BitTestsContract.sol +0 -158
  417. package/contracts/mocks/utils/mpc/Comparison256BitTestsContract.sol +0 -158
  418. package/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.sol +0 -185
  419. package/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.sol +0 -190
  420. package/contracts/mocks/utils/mpc/README.md +0 -486
  421. package/test/utils/mpc/Unsigned128BitIntegers.test.ts +0 -945
  422. package/test/utils/mpc/Unsigned256BitIntegers.test.ts +0 -1124
  423. package/test/utils/mpc/helpers.ts +0 -77
  424. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
  425. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
  426. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
  427. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
  428. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
  429. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
  430. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
  431. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
  432. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
  433. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
@@ -31,6 +31,11 @@ const _abi = [
31
31
  name: "ERC20InvalidApprover",
32
32
  type: "error",
33
33
  },
34
+ {
35
+ inputs: [],
36
+ name: "ERC20InvalidMetadata",
37
+ type: "error",
38
+ },
34
39
  {
35
40
  inputs: [
36
41
  {
@@ -64,6 +69,82 @@ const _abi = [
64
69
  name: "ERC20InvalidSpender",
65
70
  type: "error",
66
71
  },
72
+ {
73
+ inputs: [
74
+ {
75
+ internalType: "address",
76
+ name: "account",
77
+ type: "address",
78
+ },
79
+ ],
80
+ name: "ERC20SelfTransferNotAllowed",
81
+ type: "error",
82
+ },
83
+ {
84
+ inputs: [],
85
+ name: "ERC20UnsafeApprove",
86
+ type: "error",
87
+ },
88
+ {
89
+ inputs: [],
90
+ name: "PublicAmountsDisabled",
91
+ type: "error",
92
+ },
93
+ {
94
+ inputs: [
95
+ {
96
+ internalType: "address",
97
+ name: "to",
98
+ type: "address",
99
+ },
100
+ ],
101
+ name: "TransferAndCallRequiresContract",
102
+ type: "error",
103
+ },
104
+ {
105
+ anonymous: false,
106
+ inputs: [
107
+ {
108
+ indexed: true,
109
+ internalType: "address",
110
+ name: "account",
111
+ type: "address",
112
+ },
113
+ {
114
+ indexed: true,
115
+ internalType: "address",
116
+ name: "newAddress",
117
+ type: "address",
118
+ },
119
+ ],
120
+ name: "AccountEncryptionAddressSet",
121
+ type: "event",
122
+ },
123
+ {
124
+ anonymous: false,
125
+ inputs: [
126
+ {
127
+ indexed: true,
128
+ internalType: "address",
129
+ name: "owner",
130
+ type: "address",
131
+ },
132
+ {
133
+ indexed: true,
134
+ internalType: "address",
135
+ name: "spender",
136
+ type: "address",
137
+ },
138
+ {
139
+ indexed: false,
140
+ internalType: "bool",
141
+ name: "isSpender",
142
+ type: "bool",
143
+ },
144
+ ],
145
+ name: "AllowanceReencrypted",
146
+ type: "event",
147
+ },
67
148
  {
68
149
  anonymous: false,
69
150
  inputs: [
@@ -80,21 +161,133 @@ const _abi = [
80
161
  type: "address",
81
162
  },
82
163
  {
164
+ components: [
165
+ {
166
+ internalType: "ctUint128",
167
+ name: "ciphertextHigh",
168
+ type: "uint256",
169
+ },
170
+ {
171
+ internalType: "ctUint128",
172
+ name: "ciphertextLow",
173
+ type: "uint256",
174
+ },
175
+ ],
83
176
  indexed: false,
84
- internalType: "ctUint64",
177
+ internalType: "struct ctUint256",
85
178
  name: "ownerValue",
86
- type: "uint256",
179
+ type: "tuple",
87
180
  },
88
181
  {
182
+ components: [
183
+ {
184
+ internalType: "ctUint128",
185
+ name: "ciphertextHigh",
186
+ type: "uint256",
187
+ },
188
+ {
189
+ internalType: "ctUint128",
190
+ name: "ciphertextLow",
191
+ type: "uint256",
192
+ },
193
+ ],
89
194
  indexed: false,
90
- internalType: "ctUint64",
195
+ internalType: "struct ctUint256",
91
196
  name: "spenderValue",
92
- type: "uint256",
197
+ type: "tuple",
93
198
  },
94
199
  ],
95
200
  name: "Approval",
96
201
  type: "event",
97
202
  },
203
+ {
204
+ anonymous: false,
205
+ inputs: [
206
+ {
207
+ indexed: false,
208
+ internalType: "bool",
209
+ name: "enabled",
210
+ type: "bool",
211
+ },
212
+ ],
213
+ name: "PublicAmountsEnabledSet",
214
+ type: "event",
215
+ },
216
+ {
217
+ anonymous: false,
218
+ inputs: [
219
+ {
220
+ indexed: true,
221
+ internalType: "bytes32",
222
+ name: "role",
223
+ type: "bytes32",
224
+ },
225
+ {
226
+ indexed: true,
227
+ internalType: "bytes32",
228
+ name: "previousAdminRole",
229
+ type: "bytes32",
230
+ },
231
+ {
232
+ indexed: true,
233
+ internalType: "bytes32",
234
+ name: "newAdminRole",
235
+ type: "bytes32",
236
+ },
237
+ ],
238
+ name: "RoleAdminChanged",
239
+ type: "event",
240
+ },
241
+ {
242
+ anonymous: false,
243
+ inputs: [
244
+ {
245
+ indexed: true,
246
+ internalType: "bytes32",
247
+ name: "role",
248
+ type: "bytes32",
249
+ },
250
+ {
251
+ indexed: true,
252
+ internalType: "address",
253
+ name: "account",
254
+ type: "address",
255
+ },
256
+ {
257
+ indexed: true,
258
+ internalType: "address",
259
+ name: "sender",
260
+ type: "address",
261
+ },
262
+ ],
263
+ name: "RoleGranted",
264
+ type: "event",
265
+ },
266
+ {
267
+ anonymous: false,
268
+ inputs: [
269
+ {
270
+ indexed: true,
271
+ internalType: "bytes32",
272
+ name: "role",
273
+ type: "bytes32",
274
+ },
275
+ {
276
+ indexed: true,
277
+ internalType: "address",
278
+ name: "account",
279
+ type: "address",
280
+ },
281
+ {
282
+ indexed: true,
283
+ internalType: "address",
284
+ name: "sender",
285
+ type: "address",
286
+ },
287
+ ],
288
+ name: "RoleRevoked",
289
+ type: "event",
290
+ },
98
291
  {
99
292
  anonymous: false,
100
293
  inputs: [
@@ -111,21 +304,71 @@ const _abi = [
111
304
  type: "address",
112
305
  },
113
306
  {
307
+ components: [
308
+ {
309
+ internalType: "ctUint128",
310
+ name: "ciphertextHigh",
311
+ type: "uint256",
312
+ },
313
+ {
314
+ internalType: "ctUint128",
315
+ name: "ciphertextLow",
316
+ type: "uint256",
317
+ },
318
+ ],
114
319
  indexed: false,
115
- internalType: "ctUint64",
320
+ internalType: "struct ctUint256",
116
321
  name: "senderValue",
117
- type: "uint256",
322
+ type: "tuple",
118
323
  },
119
324
  {
325
+ components: [
326
+ {
327
+ internalType: "ctUint128",
328
+ name: "ciphertextHigh",
329
+ type: "uint256",
330
+ },
331
+ {
332
+ internalType: "ctUint128",
333
+ name: "ciphertextLow",
334
+ type: "uint256",
335
+ },
336
+ ],
120
337
  indexed: false,
121
- internalType: "ctUint64",
338
+ internalType: "struct ctUint256",
122
339
  name: "receiverValue",
123
- type: "uint256",
340
+ type: "tuple",
124
341
  },
125
342
  ],
126
343
  name: "Transfer",
127
344
  type: "event",
128
345
  },
346
+ {
347
+ inputs: [],
348
+ name: "DEFAULT_ADMIN_ROLE",
349
+ outputs: [
350
+ {
351
+ internalType: "bytes32",
352
+ name: "",
353
+ type: "bytes32",
354
+ },
355
+ ],
356
+ stateMutability: "view",
357
+ type: "function",
358
+ },
359
+ {
360
+ inputs: [],
361
+ name: "MINTER_ROLE",
362
+ outputs: [
363
+ {
364
+ internalType: "bytes32",
365
+ name: "",
366
+ type: "bytes32",
367
+ },
368
+ ],
369
+ stateMutability: "view",
370
+ type: "function",
371
+ },
129
372
  {
130
373
  inputs: [
131
374
  {
@@ -157,57 +400,508 @@ const _abi = [
157
400
  name: "isSpender",
158
401
  type: "bool",
159
402
  },
160
- ],
161
- name: "allowance",
162
- outputs: [
403
+ ],
404
+ name: "allowance",
405
+ outputs: [
406
+ {
407
+ internalType: "gtUint256",
408
+ name: "",
409
+ type: "uint256",
410
+ },
411
+ ],
412
+ stateMutability: "nonpayable",
413
+ type: "function",
414
+ },
415
+ {
416
+ inputs: [
417
+ {
418
+ internalType: "address",
419
+ name: "owner",
420
+ type: "address",
421
+ },
422
+ {
423
+ internalType: "address",
424
+ name: "spender",
425
+ type: "address",
426
+ },
427
+ ],
428
+ name: "allowance",
429
+ outputs: [
430
+ {
431
+ components: [
432
+ {
433
+ components: [
434
+ {
435
+ internalType: "ctUint128",
436
+ name: "ciphertextHigh",
437
+ type: "uint256",
438
+ },
439
+ {
440
+ internalType: "ctUint128",
441
+ name: "ciphertextLow",
442
+ type: "uint256",
443
+ },
444
+ ],
445
+ internalType: "struct ctUint256",
446
+ name: "ciphertext",
447
+ type: "tuple",
448
+ },
449
+ {
450
+ components: [
451
+ {
452
+ internalType: "ctUint128",
453
+ name: "ciphertextHigh",
454
+ type: "uint256",
455
+ },
456
+ {
457
+ internalType: "ctUint128",
458
+ name: "ciphertextLow",
459
+ type: "uint256",
460
+ },
461
+ ],
462
+ internalType: "struct ctUint256",
463
+ name: "ownerCiphertext",
464
+ type: "tuple",
465
+ },
466
+ {
467
+ components: [
468
+ {
469
+ internalType: "ctUint128",
470
+ name: "ciphertextHigh",
471
+ type: "uint256",
472
+ },
473
+ {
474
+ internalType: "ctUint128",
475
+ name: "ciphertextLow",
476
+ type: "uint256",
477
+ },
478
+ ],
479
+ internalType: "struct ctUint256",
480
+ name: "spenderCiphertext",
481
+ type: "tuple",
482
+ },
483
+ ],
484
+ internalType: "struct IPrivateERC20.Allowance",
485
+ name: "",
486
+ type: "tuple",
487
+ },
488
+ ],
489
+ stateMutability: "view",
490
+ type: "function",
491
+ },
492
+ {
493
+ inputs: [
494
+ {
495
+ internalType: "address",
496
+ name: "spender",
497
+ type: "address",
498
+ },
499
+ {
500
+ internalType: "uint256",
501
+ name: "value",
502
+ type: "uint256",
503
+ },
504
+ ],
505
+ name: "approve",
506
+ outputs: [],
507
+ stateMutability: "nonpayable",
508
+ type: "function",
509
+ },
510
+ {
511
+ inputs: [
512
+ {
513
+ internalType: "address",
514
+ name: "spender",
515
+ type: "address",
516
+ },
517
+ {
518
+ components: [
519
+ {
520
+ components: [
521
+ {
522
+ internalType: "ctUint128",
523
+ name: "ciphertextHigh",
524
+ type: "uint256",
525
+ },
526
+ {
527
+ internalType: "ctUint128",
528
+ name: "ciphertextLow",
529
+ type: "uint256",
530
+ },
531
+ ],
532
+ internalType: "struct ctUint256",
533
+ name: "ciphertext",
534
+ type: "tuple",
535
+ },
536
+ {
537
+ internalType: "bytes",
538
+ name: "signature",
539
+ type: "bytes",
540
+ },
541
+ ],
542
+ internalType: "struct itUint256",
543
+ name: "value",
544
+ type: "tuple",
545
+ },
546
+ ],
547
+ name: "approve",
548
+ outputs: [],
549
+ stateMutability: "nonpayable",
550
+ type: "function",
551
+ },
552
+ {
553
+ inputs: [
554
+ {
555
+ internalType: "address",
556
+ name: "spender",
557
+ type: "address",
558
+ },
559
+ {
560
+ internalType: "gtUint256",
561
+ name: "value",
562
+ type: "uint256",
563
+ },
564
+ ],
565
+ name: "approveGT",
566
+ outputs: [],
567
+ stateMutability: "nonpayable",
568
+ type: "function",
569
+ },
570
+ {
571
+ inputs: [
572
+ {
573
+ internalType: "address",
574
+ name: "account",
575
+ type: "address",
576
+ },
577
+ ],
578
+ name: "balanceOf",
579
+ outputs: [
580
+ {
581
+ components: [
582
+ {
583
+ internalType: "ctUint128",
584
+ name: "ciphertextHigh",
585
+ type: "uint256",
586
+ },
587
+ {
588
+ internalType: "ctUint128",
589
+ name: "ciphertextLow",
590
+ type: "uint256",
591
+ },
592
+ ],
593
+ internalType: "struct ctUint256",
594
+ name: "",
595
+ type: "tuple",
596
+ },
597
+ ],
598
+ stateMutability: "view",
599
+ type: "function",
600
+ },
601
+ {
602
+ inputs: [],
603
+ name: "balanceOf",
604
+ outputs: [
605
+ {
606
+ internalType: "gtUint256",
607
+ name: "",
608
+ type: "uint256",
609
+ },
610
+ ],
611
+ stateMutability: "nonpayable",
612
+ type: "function",
613
+ },
614
+ {
615
+ inputs: [
616
+ {
617
+ internalType: "uint256",
618
+ name: "amount",
619
+ type: "uint256",
620
+ },
621
+ ],
622
+ name: "burn",
623
+ outputs: [],
624
+ stateMutability: "nonpayable",
625
+ type: "function",
626
+ },
627
+ {
628
+ inputs: [
629
+ {
630
+ components: [
631
+ {
632
+ components: [
633
+ {
634
+ internalType: "ctUint128",
635
+ name: "ciphertextHigh",
636
+ type: "uint256",
637
+ },
638
+ {
639
+ internalType: "ctUint128",
640
+ name: "ciphertextLow",
641
+ type: "uint256",
642
+ },
643
+ ],
644
+ internalType: "struct ctUint256",
645
+ name: "ciphertext",
646
+ type: "tuple",
647
+ },
648
+ {
649
+ internalType: "bytes",
650
+ name: "signature",
651
+ type: "bytes",
652
+ },
653
+ ],
654
+ internalType: "struct itUint256",
655
+ name: "amount",
656
+ type: "tuple",
657
+ },
658
+ ],
659
+ name: "burn",
660
+ outputs: [],
661
+ stateMutability: "nonpayable",
662
+ type: "function",
663
+ },
664
+ {
665
+ inputs: [
666
+ {
667
+ internalType: "address",
668
+ name: "account",
669
+ type: "address",
670
+ },
671
+ {
672
+ internalType: "uint256",
673
+ name: "amount",
674
+ type: "uint256",
675
+ },
676
+ ],
677
+ name: "burn",
678
+ outputs: [],
679
+ stateMutability: "nonpayable",
680
+ type: "function",
681
+ },
682
+ {
683
+ inputs: [
684
+ {
685
+ internalType: "gtUint256",
686
+ name: "gtAmount",
687
+ type: "uint256",
688
+ },
689
+ ],
690
+ name: "burnGt",
691
+ outputs: [],
692
+ stateMutability: "nonpayable",
693
+ type: "function",
694
+ },
695
+ {
696
+ inputs: [],
697
+ name: "decimals",
698
+ outputs: [
699
+ {
700
+ internalType: "uint8",
701
+ name: "",
702
+ type: "uint8",
703
+ },
704
+ ],
705
+ stateMutability: "pure",
706
+ type: "function",
707
+ },
708
+ {
709
+ inputs: [
710
+ {
711
+ internalType: "address",
712
+ name: "spender",
713
+ type: "address",
714
+ },
715
+ {
716
+ internalType: "uint256",
717
+ name: "subtractedValue",
718
+ type: "uint256",
719
+ },
720
+ ],
721
+ name: "decreaseAllowance",
722
+ outputs: [],
723
+ stateMutability: "nonpayable",
724
+ type: "function",
725
+ },
726
+ {
727
+ inputs: [
728
+ {
729
+ internalType: "address",
730
+ name: "spender",
731
+ type: "address",
732
+ },
733
+ {
734
+ components: [
735
+ {
736
+ components: [
737
+ {
738
+ internalType: "ctUint128",
739
+ name: "ciphertextHigh",
740
+ type: "uint256",
741
+ },
742
+ {
743
+ internalType: "ctUint128",
744
+ name: "ciphertextLow",
745
+ type: "uint256",
746
+ },
747
+ ],
748
+ internalType: "struct ctUint256",
749
+ name: "ciphertext",
750
+ type: "tuple",
751
+ },
752
+ {
753
+ internalType: "bytes",
754
+ name: "signature",
755
+ type: "bytes",
756
+ },
757
+ ],
758
+ internalType: "struct itUint256",
759
+ name: "subtractedValue",
760
+ type: "tuple",
761
+ },
762
+ ],
763
+ name: "decreaseAllowance",
764
+ outputs: [],
765
+ stateMutability: "nonpayable",
766
+ type: "function",
767
+ },
768
+ {
769
+ inputs: [
770
+ {
771
+ internalType: "address",
772
+ name: "spender",
773
+ type: "address",
774
+ },
775
+ {
776
+ internalType: "gtUint256",
777
+ name: "subtractedValue",
778
+ type: "uint256",
779
+ },
780
+ ],
781
+ name: "decreaseAllowanceGT",
782
+ outputs: [],
783
+ stateMutability: "nonpayable",
784
+ type: "function",
785
+ },
786
+ {
787
+ inputs: [
788
+ {
789
+ internalType: "bytes32",
790
+ name: "role",
791
+ type: "bytes32",
792
+ },
793
+ ],
794
+ name: "getRoleAdmin",
795
+ outputs: [
796
+ {
797
+ internalType: "bytes32",
798
+ name: "",
799
+ type: "bytes32",
800
+ },
801
+ ],
802
+ stateMutability: "view",
803
+ type: "function",
804
+ },
805
+ {
806
+ inputs: [
807
+ {
808
+ internalType: "bytes32",
809
+ name: "role",
810
+ type: "bytes32",
811
+ },
812
+ {
813
+ internalType: "address",
814
+ name: "account",
815
+ type: "address",
816
+ },
817
+ ],
818
+ name: "grantRole",
819
+ outputs: [],
820
+ stateMutability: "nonpayable",
821
+ type: "function",
822
+ },
823
+ {
824
+ inputs: [
825
+ {
826
+ internalType: "bytes32",
827
+ name: "role",
828
+ type: "bytes32",
829
+ },
830
+ {
831
+ internalType: "address",
832
+ name: "account",
833
+ type: "address",
834
+ },
835
+ ],
836
+ name: "hasRole",
837
+ outputs: [
838
+ {
839
+ internalType: "bool",
840
+ name: "",
841
+ type: "bool",
842
+ },
843
+ ],
844
+ stateMutability: "view",
845
+ type: "function",
846
+ },
847
+ {
848
+ inputs: [
849
+ {
850
+ internalType: "address",
851
+ name: "spender",
852
+ type: "address",
853
+ },
163
854
  {
164
- internalType: "gtUint64",
165
- name: "",
855
+ internalType: "uint256",
856
+ name: "addedValue",
166
857
  type: "uint256",
167
858
  },
168
859
  ],
860
+ name: "increaseAllowance",
861
+ outputs: [],
169
862
  stateMutability: "nonpayable",
170
863
  type: "function",
171
864
  },
172
865
  {
173
866
  inputs: [
174
- {
175
- internalType: "address",
176
- name: "owner",
177
- type: "address",
178
- },
179
867
  {
180
868
  internalType: "address",
181
869
  name: "spender",
182
870
  type: "address",
183
871
  },
184
- ],
185
- name: "allowance",
186
- outputs: [
187
872
  {
188
873
  components: [
189
874
  {
190
- internalType: "ctUint64",
875
+ components: [
876
+ {
877
+ internalType: "ctUint128",
878
+ name: "ciphertextHigh",
879
+ type: "uint256",
880
+ },
881
+ {
882
+ internalType: "ctUint128",
883
+ name: "ciphertextLow",
884
+ type: "uint256",
885
+ },
886
+ ],
887
+ internalType: "struct ctUint256",
191
888
  name: "ciphertext",
192
- type: "uint256",
193
- },
194
- {
195
- internalType: "ctUint64",
196
- name: "ownerCiphertext",
197
- type: "uint256",
889
+ type: "tuple",
198
890
  },
199
891
  {
200
- internalType: "ctUint64",
201
- name: "spenderCiphertext",
202
- type: "uint256",
892
+ internalType: "bytes",
893
+ name: "signature",
894
+ type: "bytes",
203
895
  },
204
896
  ],
205
- internalType: "struct IPrivateERC20.Allowance",
206
- name: "",
897
+ internalType: "struct itUint256",
898
+ name: "addedValue",
207
899
  type: "tuple",
208
900
  },
209
901
  ],
210
- stateMutability: "view",
902
+ name: "increaseAllowance",
903
+ outputs: [],
904
+ stateMutability: "nonpayable",
211
905
  type: "function",
212
906
  },
213
907
  {
@@ -218,19 +912,31 @@ const _abi = [
218
912
  type: "address",
219
913
  },
220
914
  {
221
- internalType: "gtUint64",
222
- name: "value",
915
+ internalType: "gtUint256",
916
+ name: "addedValue",
223
917
  type: "uint256",
224
918
  },
225
919
  ],
226
- name: "approve",
227
- outputs: [
920
+ name: "increaseAllowanceGT",
921
+ outputs: [],
922
+ stateMutability: "nonpayable",
923
+ type: "function",
924
+ },
925
+ {
926
+ inputs: [
228
927
  {
229
- internalType: "bool",
230
- name: "",
231
- type: "bool",
928
+ internalType: "address",
929
+ name: "account",
930
+ type: "address",
931
+ },
932
+ {
933
+ internalType: "uint256",
934
+ name: "amount",
935
+ type: "uint256",
232
936
  },
233
937
  ],
938
+ name: "mint",
939
+ outputs: [],
234
940
  stateMutability: "nonpayable",
235
941
  type: "function",
236
942
  },
@@ -238,15 +944,27 @@ const _abi = [
238
944
  inputs: [
239
945
  {
240
946
  internalType: "address",
241
- name: "spender",
947
+ name: "to",
242
948
  type: "address",
243
949
  },
244
950
  {
245
951
  components: [
246
952
  {
247
- internalType: "ctUint64",
953
+ components: [
954
+ {
955
+ internalType: "ctUint128",
956
+ name: "ciphertextHigh",
957
+ type: "uint256",
958
+ },
959
+ {
960
+ internalType: "ctUint128",
961
+ name: "ciphertextLow",
962
+ type: "uint256",
963
+ },
964
+ ],
965
+ internalType: "struct ctUint256",
248
966
  name: "ciphertext",
249
- type: "uint256",
967
+ type: "tuple",
250
968
  },
251
969
  {
252
970
  internalType: "bytes",
@@ -254,19 +972,13 @@ const _abi = [
254
972
  type: "bytes",
255
973
  },
256
974
  ],
257
- internalType: "struct itUint64",
258
- name: "value",
975
+ internalType: "struct itUint256",
976
+ name: "amount",
259
977
  type: "tuple",
260
978
  },
261
979
  ],
262
- name: "approve",
263
- outputs: [
264
- {
265
- internalType: "bool",
266
- name: "",
267
- type: "bool",
268
- },
269
- ],
980
+ name: "mint",
981
+ outputs: [],
270
982
  stateMutability: "nonpayable",
271
983
  type: "function",
272
984
  },
@@ -274,16 +986,28 @@ const _abi = [
274
986
  inputs: [
275
987
  {
276
988
  internalType: "address",
277
- name: "account",
989
+ name: "to",
278
990
  type: "address",
279
991
  },
992
+ {
993
+ internalType: "gtUint256",
994
+ name: "gtAmount",
995
+ type: "uint256",
996
+ },
280
997
  ],
281
- name: "balanceOf",
998
+ name: "mintGt",
999
+ outputs: [],
1000
+ stateMutability: "nonpayable",
1001
+ type: "function",
1002
+ },
1003
+ {
1004
+ inputs: [],
1005
+ name: "name",
282
1006
  outputs: [
283
1007
  {
284
- internalType: "ctUint64",
1008
+ internalType: "string",
285
1009
  name: "",
286
- type: "uint256",
1010
+ type: "string",
287
1011
  },
288
1012
  ],
289
1013
  stateMutability: "view",
@@ -291,15 +1015,15 @@ const _abi = [
291
1015
  },
292
1016
  {
293
1017
  inputs: [],
294
- name: "balanceOf",
1018
+ name: "publicAmountsEnabled",
295
1019
  outputs: [
296
1020
  {
297
- internalType: "gtUint64",
1021
+ internalType: "bool",
298
1022
  name: "",
299
- type: "uint256",
1023
+ type: "bool",
300
1024
  },
301
1025
  ],
302
- stateMutability: "nonpayable",
1026
+ stateMutability: "view",
303
1027
  type: "function",
304
1028
  },
305
1029
  {
@@ -310,93 +1034,106 @@ const _abi = [
310
1034
  type: "address",
311
1035
  },
312
1036
  {
313
- internalType: "uint64",
314
- name: "amount",
315
- type: "uint64",
1037
+ internalType: "bool",
1038
+ name: "isSpender",
1039
+ type: "bool",
316
1040
  },
317
1041
  ],
318
- name: "burn",
1042
+ name: "reencryptAllowance",
319
1043
  outputs: [],
320
1044
  stateMutability: "nonpayable",
321
1045
  type: "function",
322
1046
  },
323
1047
  {
324
- inputs: [],
325
- name: "decimals",
326
- outputs: [
1048
+ inputs: [
327
1049
  {
328
- internalType: "uint8",
329
- name: "",
330
- type: "uint8",
1050
+ internalType: "bytes32",
1051
+ name: "role",
1052
+ type: "bytes32",
1053
+ },
1054
+ {
1055
+ internalType: "address",
1056
+ name: "account",
1057
+ type: "address",
331
1058
  },
332
1059
  ],
333
- stateMutability: "view",
1060
+ name: "renounceRole",
1061
+ outputs: [],
1062
+ stateMutability: "nonpayable",
334
1063
  type: "function",
335
1064
  },
336
1065
  {
337
1066
  inputs: [
1067
+ {
1068
+ internalType: "bytes32",
1069
+ name: "role",
1070
+ type: "bytes32",
1071
+ },
338
1072
  {
339
1073
  internalType: "address",
340
1074
  name: "account",
341
1075
  type: "address",
342
1076
  },
343
- {
344
- internalType: "uint64",
345
- name: "amount",
346
- type: "uint64",
347
- },
348
1077
  ],
349
- name: "mint",
1078
+ name: "revokeRole",
350
1079
  outputs: [],
351
1080
  stateMutability: "nonpayable",
352
1081
  type: "function",
353
1082
  },
354
1083
  {
355
- inputs: [],
356
- name: "name",
1084
+ inputs: [
1085
+ {
1086
+ internalType: "address",
1087
+ name: "offBoardAddress",
1088
+ type: "address",
1089
+ },
1090
+ ],
1091
+ name: "setAccountEncryptionAddress",
357
1092
  outputs: [
358
1093
  {
359
- internalType: "string",
1094
+ internalType: "bool",
360
1095
  name: "",
361
- type: "string",
1096
+ type: "bool",
362
1097
  },
363
1098
  ],
364
- stateMutability: "view",
1099
+ stateMutability: "nonpayable",
365
1100
  type: "function",
366
1101
  },
367
1102
  {
368
1103
  inputs: [
369
- {
370
- internalType: "address",
371
- name: "account",
372
- type: "address",
373
- },
374
1104
  {
375
1105
  internalType: "bool",
376
- name: "isSpender",
1106
+ name: "enabled",
377
1107
  type: "bool",
378
1108
  },
379
1109
  ],
380
- name: "reencryptAllowance",
1110
+ name: "setPublicAmountsEnabled",
1111
+ outputs: [],
1112
+ stateMutability: "nonpayable",
1113
+ type: "function",
1114
+ },
1115
+ {
1116
+ inputs: [],
1117
+ name: "supplyCap",
381
1118
  outputs: [
382
1119
  {
383
- internalType: "bool",
1120
+ internalType: "uint256",
384
1121
  name: "",
385
- type: "bool",
1122
+ type: "uint256",
386
1123
  },
387
1124
  ],
388
- stateMutability: "nonpayable",
1125
+ stateMutability: "view",
389
1126
  type: "function",
390
1127
  },
391
1128
  {
392
1129
  inputs: [
393
1130
  {
394
- internalType: "address",
395
- name: "offBoardAddress",
396
- type: "address",
1131
+ internalType: "bytes4",
1132
+ name: "interfaceId",
1133
+ type: "bytes4",
397
1134
  },
398
1135
  ],
399
- name: "setAccountEncryptionAddress",
1136
+ name: "supportsInterface",
400
1137
  outputs: [
401
1138
  {
402
1139
  internalType: "bool",
@@ -404,7 +1141,7 @@ const _abi = [
404
1141
  type: "bool",
405
1142
  },
406
1143
  ],
407
- stateMutability: "nonpayable",
1144
+ stateMutability: "view",
408
1145
  type: "function",
409
1146
  },
410
1147
  {
@@ -443,9 +1180,21 @@ const _abi = [
443
1180
  {
444
1181
  components: [
445
1182
  {
446
- internalType: "ctUint64",
1183
+ components: [
1184
+ {
1185
+ internalType: "ctUint128",
1186
+ name: "ciphertextHigh",
1187
+ type: "uint256",
1188
+ },
1189
+ {
1190
+ internalType: "ctUint128",
1191
+ name: "ciphertextLow",
1192
+ type: "uint256",
1193
+ },
1194
+ ],
1195
+ internalType: "struct ctUint256",
447
1196
  name: "ciphertext",
448
- type: "uint256",
1197
+ type: "tuple",
449
1198
  },
450
1199
  {
451
1200
  internalType: "bytes",
@@ -453,19 +1202,31 @@ const _abi = [
453
1202
  type: "bytes",
454
1203
  },
455
1204
  ],
456
- internalType: "struct itUint64",
1205
+ internalType: "struct itUint256",
457
1206
  name: "value",
458
1207
  type: "tuple",
459
1208
  },
460
1209
  ],
461
1210
  name: "transfer",
462
- outputs: [
1211
+ outputs: [],
1212
+ stateMutability: "nonpayable",
1213
+ type: "function",
1214
+ },
1215
+ {
1216
+ inputs: [
463
1217
  {
464
- internalType: "gtBool",
465
- name: "",
1218
+ internalType: "address",
1219
+ name: "to",
1220
+ type: "address",
1221
+ },
1222
+ {
1223
+ internalType: "uint256",
1224
+ name: "value",
466
1225
  type: "uint256",
467
1226
  },
468
1227
  ],
1228
+ name: "transfer",
1229
+ outputs: [],
469
1230
  stateMutability: "nonpayable",
470
1231
  type: "function",
471
1232
  },
@@ -477,19 +1238,88 @@ const _abi = [
477
1238
  type: "address",
478
1239
  },
479
1240
  {
480
- internalType: "gtUint64",
481
- name: "value",
1241
+ components: [
1242
+ {
1243
+ components: [
1244
+ {
1245
+ internalType: "ctUint128",
1246
+ name: "ciphertextHigh",
1247
+ type: "uint256",
1248
+ },
1249
+ {
1250
+ internalType: "ctUint128",
1251
+ name: "ciphertextLow",
1252
+ type: "uint256",
1253
+ },
1254
+ ],
1255
+ internalType: "struct ctUint256",
1256
+ name: "ciphertext",
1257
+ type: "tuple",
1258
+ },
1259
+ {
1260
+ internalType: "bytes",
1261
+ name: "signature",
1262
+ type: "bytes",
1263
+ },
1264
+ ],
1265
+ internalType: "struct itUint256",
1266
+ name: "amount",
1267
+ type: "tuple",
1268
+ },
1269
+ {
1270
+ internalType: "bytes",
1271
+ name: "data",
1272
+ type: "bytes",
1273
+ },
1274
+ ],
1275
+ name: "transferAndCall",
1276
+ outputs: [],
1277
+ stateMutability: "nonpayable",
1278
+ type: "function",
1279
+ },
1280
+ {
1281
+ inputs: [
1282
+ {
1283
+ internalType: "address",
1284
+ name: "to",
1285
+ type: "address",
1286
+ },
1287
+ {
1288
+ internalType: "uint256",
1289
+ name: "amount",
482
1290
  type: "uint256",
483
1291
  },
1292
+ {
1293
+ internalType: "bytes",
1294
+ name: "data",
1295
+ type: "bytes",
1296
+ },
484
1297
  ],
485
- name: "transfer",
486
- outputs: [
1298
+ name: "transferAndCall",
1299
+ outputs: [],
1300
+ stateMutability: "nonpayable",
1301
+ type: "function",
1302
+ },
1303
+ {
1304
+ inputs: [
487
1305
  {
488
- internalType: "gtBool",
489
- name: "",
1306
+ internalType: "address",
1307
+ name: "from",
1308
+ type: "address",
1309
+ },
1310
+ {
1311
+ internalType: "address",
1312
+ name: "to",
1313
+ type: "address",
1314
+ },
1315
+ {
1316
+ internalType: "uint256",
1317
+ name: "value",
490
1318
  type: "uint256",
491
1319
  },
492
1320
  ],
1321
+ name: "transferFrom",
1322
+ outputs: [],
493
1323
  stateMutability: "nonpayable",
494
1324
  type: "function",
495
1325
  },
@@ -508,9 +1338,21 @@ const _abi = [
508
1338
  {
509
1339
  components: [
510
1340
  {
511
- internalType: "ctUint64",
1341
+ components: [
1342
+ {
1343
+ internalType: "ctUint128",
1344
+ name: "ciphertextHigh",
1345
+ type: "uint256",
1346
+ },
1347
+ {
1348
+ internalType: "ctUint128",
1349
+ name: "ciphertextLow",
1350
+ type: "uint256",
1351
+ },
1352
+ ],
1353
+ internalType: "struct ctUint256",
512
1354
  name: "ciphertext",
513
- type: "uint256",
1355
+ type: "tuple",
514
1356
  },
515
1357
  {
516
1358
  internalType: "bytes",
@@ -518,19 +1360,13 @@ const _abi = [
518
1360
  type: "bytes",
519
1361
  },
520
1362
  ],
521
- internalType: "struct itUint64",
1363
+ internalType: "struct itUint256",
522
1364
  name: "value",
523
1365
  type: "tuple",
524
1366
  },
525
1367
  ],
526
1368
  name: "transferFrom",
527
- outputs: [
528
- {
529
- internalType: "gtBool",
530
- name: "",
531
- type: "uint256",
532
- },
533
- ],
1369
+ outputs: [],
534
1370
  stateMutability: "nonpayable",
535
1371
  type: "function",
536
1372
  },
@@ -547,26 +1383,38 @@ const _abi = [
547
1383
  type: "address",
548
1384
  },
549
1385
  {
550
- internalType: "gtUint64",
1386
+ internalType: "gtUint256",
551
1387
  name: "value",
552
1388
  type: "uint256",
553
1389
  },
554
1390
  ],
555
- name: "transferFrom",
556
- outputs: [
1391
+ name: "transferFromGT",
1392
+ outputs: [],
1393
+ stateMutability: "nonpayable",
1394
+ type: "function",
1395
+ },
1396
+ {
1397
+ inputs: [
557
1398
  {
558
- internalType: "gtBool",
559
- name: "",
1399
+ internalType: "address",
1400
+ name: "to",
1401
+ type: "address",
1402
+ },
1403
+ {
1404
+ internalType: "gtUint256",
1405
+ name: "value",
560
1406
  type: "uint256",
561
1407
  },
562
1408
  ],
1409
+ name: "transferGT",
1410
+ outputs: [],
563
1411
  stateMutability: "nonpayable",
564
1412
  type: "function",
565
1413
  },
566
1414
  ] as const;
567
1415
 
568
1416
  const _bytecode =
569
- "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f5072697661746545524332304d6f636b60801b81525060405180604001604052806005815260200164504532304d60d81b81525081600490816200006a919062000127565b50600562000079828262000127565b505050620001f3565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ad57607f821691505b602082108103620000ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012257600081815260208120601f850160051c81016020861015620000fd5750805b601f850160051c820191505b818110156200011e5782815560010162000109565b5050505b505050565b81516001600160401b0381111562000143576200014362000082565b6200015b8162000154845462000098565b84620000d4565b602080601f8311600181146200019357600084156200017a5750858301515b600019600386901b1c1916600185901b1785556200011e565b600085815260208120601f198616915b82811015620001c457888601518255948401946001909101908401620001a3565b5085821015620001e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61194a80620002036000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063313ce567116100cd57806396b2db3811610081578063a7d9ad6a11610066578063a7d9ad6a146102f9578063a9059cbb1461030c578063dd62ed3e1461031f57600080fd5b806396b2db38146102d3578063a42c0af9146102e657600080fd5b8063722713f7116100b2578063722713f7146102b05780638269bcc3146102b857806395d89b41146102cb57600080fd5b8063313ce5671461026757806370a082311461027657600080fd5b806313691c761161012457806323b872dd1161010957806323b872dd1461022e57806326a9b3f1146102415780632893c5b01461025457600080fd5b806313691c761461021257806318160ddd1461022757600080fd5b8063043d20851461015657806306fdde03146101b957806308a2032a146101ce578063095ea7b3146101ef575b600080fd5b61018f61016436600461146b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101c1610354565b6040516101b091906114ea565b6101e16101dc366004611515565b6103e6565b6040519081526020016101b0565b6102026101fd366004611573565b61041d565b60405190151581526020016101b0565b61022561022036600461159d565b610437565b005b60006101e1565b6101e161023c3660046115e1565b61044e565b61020261024f36600461161d565b610470565b61022561026236600461159d565b610524565b604051600681526020016101b0565b6101e161028436600461146b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120015490565b6101e1610536565b6102026102c636600461146b565b610546565b6101c16105ca565b6101e16102e136600461161d565b6105d9565b6102026102f436600461164e565b61065c565b6101e161030736600461164e565b610684565b6101e161031a366004611573565b6106a1565b61033261032d36600461169c565b6106b7565b60408051825181526020808401519082015291810151908201526060016101b0565b606060048054610363906116cf565b80601f016020809104026020016040519081016040528092919081815260200182805461038f906116cf565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b600033816103fb6103f6856117c3565b610736565b90506104088683836107e2565b6104138686836108cf565b9695505050505050565b60003361042b818585610981565b60019150505b92915050565b6104498261044483610b93565b610c03565b505050565b60003361045c8582856107e2565b6104678585856108cf565b95945050505050565b60008061047c33610c68565b905082156104d45733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080546104c9906104c390610c9e565b83610cbb565b60019091015561042b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290208054610513906104c390610c9e565b600290910155600191505092915050565b6104498261053183610b93565b610da0565b600061054133610dfe565b905090565b60008061055233610dfe565b33600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905590506105ab8184610cbb565b3360009081526001602081905260409091208101919091559392505050565b606060058054610363906116cf565b600081156106225733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461061b90610c9e565b9050610431565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205461061b90610c9e565b6000338161066c6103f6856117c3565b9050610679828683610981565b506001949350505050565b600033816106946103f6856117c3565b90506104678286836108cf565b6000336106af8185856108cf565b949350505050565b6106db60405180606001604052806000815260200160008152602001600081525090565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529283529083902083516060810185528154815260018201549381019390935201549181019190915290565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e109261079f927f04000000000000000000000000000000000000000000000000000000000000009290916004016118b5565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043191906118f6565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205461081190610c9e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602090815260408083209388168352929052908120549192509061085390610c9e565b905060006108718261086c67ffffffffffffffff610b93565b610e2d565b9050600061087f8486610ead565b9050600061088d8487610ead565b905060006108b76108a7856108a28686610ec2565b610ec2565b6108b1878a610ed6565b87610eeb565b90506108c4898983610981565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416610926576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610976576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6106af848484610fb0565b73ffffffffffffffffffffffffffffffffffffffff83166109d1576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b73ffffffffffffffffffffffffffffffffffffffff8216610a21576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6000610a2c82611142565b90506000610a3985610c68565b90506000610a478483610cbb565b9050610a5285610c68565b91506000610a608584610cbb565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a78484604051610b82929190918252602082015260400190565b60405180910390a350505050505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b609060440161079f565b600073ffffffffffffffffffffffffffffffffffffffff8316610c55576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6183600084610fb0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610431575090919050565b600081600003610cb2576104316000610b93565b6104318261119c565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891610d5d917f04000000000000000000000000000000000000000000000000000000000000009188916038016118b5565b6020604051808303816000875af1158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906118f6565b600073ffffffffffffffffffffffffffffffffffffffff8316610df2576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6160008484610fb0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610c6181610c9e565b60006064637c12a1eb610e42600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610d5d565b6000606463dd148693610e42600480856111ac565b6000606463fb7da35f610e428380806111ac565b6000606463371d1bf2610e42600480856111ac565b600060646320cc408d610f00600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906118f6565b6000808281610fbf6001611209565b905073ffffffffffffffffffffffffffffffffffffffff8716611023576000610fe9600354610c9e565b9050610ff58187611268565b905061100081611142565b600355600061100e88610dfe565b905061101a8188611268565b9450505061106b565b600061102e88610dfe565b9050600061103b88610dfe565b9050600061104a83838a61127d565b9097509450905061105b8a8261133b565b6110658683610ed6565b94505050505b73ffffffffffffffffffffffffffffffffffffffff86166110b3576000611093600354610c9e565b905061109f8184610ed6565b90506110aa81611142565b600355506110bd565b6110bd868461133b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611116858b610cbb565b611120868b610cbb565b6040805192835260208301919091520160405180910390a39695505050505050565b6000606463c50c9c0260045b60f81b846040518363ffffffff1660e01b815260040161079f9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e5600461114e565b60008160028111156111c0576111c0611886565b60ff1660088460048111156111d7576111d7611886565b61ffff16901b61ffff1660108660048111156111f5576111f5611886565b62ffffff16901b171760e81b949350505050565b6000808261121857600061121b565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610d5d565b60006064638c5d0150610e42600480856111ac565b6000808080808060646356c72d28611298600480808661138e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b81168252919091166004820152602481018c9052604481018b9052606481018a90526084016060604051808303816000875af1158015611305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611329919061190f565b919b909a509098509650505050505050565b600061134683610c68565b9050611352828261140e565b73ffffffffffffffffffffffffffffffffffffffff90931660009081526001602081815260409092208551815594909101519301929092555050565b60008160028111156113a2576113a2611886565b60ff1660088460048111156113b9576113b9611886565b61ffff16901b61ffff1660108660048111156113d7576113d7611886565b62ffffff16901b62ffffff1660188860048111156113f7576113f7611886565b63ffffffff16901b17171760e01b95945050505050565b604080518082019091526000808252602082015261142b83611142565b81526114378383610cbb565b602082015292915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461146657600080fd5b919050565b60006020828403121561147d57600080fd5b610c6182611442565b6000815180845260005b818110156114ac57602081850181015186830182015201611490565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c616020830184611486565b60006040828403121561150f57600080fd5b50919050565b60008060006060848603121561152a57600080fd5b61153384611442565b925061154160208501611442565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114fd565b9150509250925092565b6000806040838503121561158657600080fd5b61158f83611442565b946020939093013593505050565b600080604083850312156115b057600080fd5b6115b983611442565b9150602083013567ffffffffffffffff811681146115d657600080fd5b809150509250929050565b6000806000606084860312156115f657600080fd5b6115ff84611442565b925061160d60208501611442565b9150604084013590509250925092565b6000806040838503121561163057600080fd5b61163983611442565b9150602083013580151581146115d657600080fd5b6000806040838503121561166157600080fd5b61166a83611442565b9150602083013567ffffffffffffffff81111561168657600080fd5b611692858286016114fd565b9150509250929050565b600080604083850312156116af57600080fd5b6116b883611442565b91506116c660208401611442565b90509250929050565b600181811c908216806116e357607f821691505b60208210810361150f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176e5761176e61171c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117bb576117bb61171c565b604052919050565b6000604082360312156117d557600080fd5b6117dd61174b565b8235815260208084013567ffffffffffffffff808211156117fd57600080fd5b9085019036601f83011261181057600080fd5b8135818111156118225761182261171c565b611852847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611774565b9150808252368482850101111561186857600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006104676060830184611486565b60006020828403121561190857600080fd5b5051919050565b60008060006060848603121561192457600080fd5b835192506020840151915060408401519050925092509256fea164736f6c6343000813000a";
1417
+ "0x608034620003a35760406001600160401b0382820181811184821017620002a45782526010835260206f5072697661746545524332304d6f636b60801b8185015282519183830183811082821117620002a45784526005835264504532304d60d81b82840152600192838055855115620003925780511562000392578551828111620002a457600854968588811c9816801562000387575b8589101462000283578190601f9889811162000330575b508590898311600114620002c657600092620002ba575b5050600019600383901b1c191690851b176008555b8051918211620002a4576009548481811c9116801562000299575b84821014620002835786811162000237575b5082958211600114620001ce57948192939495600092620001c2575b5050600019600383901b1c191690831b176009555b60008052600081528260002033600052815260ff8360002054161562000173575b5060ff19600254161760025551613edf9081620003a98239f35b600080526000815282600020903360005252816000208160ff19825416179055333360007f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a43862000159565b01519050388062000123565b601f198216956009600052836000209160005b888110620002215750838697989695961062000207575b505050811b0160095562000138565b015160001960f88460031b161c19169055388080620001f8565b81830151845592860192918501918501620001e1565b6009600052836000208780850160051c82019286861062000279575b0160051c019085905b8281106200026c57505062000107565b600081550185906200025c565b9250819262000253565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000f5565b634e487b7160e01b600052604160045260246000fd5b015190503880620000c5565b90879350601f198316916008600052876000209260005b89828210620003195750508411620002ff575b505050811b01600855620000da565b015160001960f88460031b161c19169055388080620002f0565b8385015186558b97909501949384019301620002dd565b9091506008600052856000208980850160051c8201928886106200037d575b918991869594930160051c01915b8281106200036d575050620000ae565b600081558594508991016200035d565b925081926200034f565b97607f169762000097565b8451631251828960e31b8152600490fd5b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80620a77ed14611d2a57806301ffc9a714611c54578063043d208514611bed5780630564c4cf14611b6a57806306fdde0314611a9d578063095ea7b31461198257806318160ddd14610a2f57806323b872dd1461189c578063248a9ca31461187357806326a9b3f11461170c5780632f2ff15d1461163a578063313ce5671461161e57806336568abe146115575780633826c5801461142b57806338e071bc146113df57806339509351146113865780633c96e77c146112c25780634000aea01461112857806340c10f19146110f957806342966c68146110c55780634faa7ebf146110a15780635d484ff814610f6457806368c7a25d14610f1057806370a0823114610e89578063722713f714610e625780638269bcc314610d6c57806383ae57f414610d2457806384813e9314610cd15780638e532c4414610c775780638f770ad014610c5a57806391d1485414610c0957806395d89b4114610ab757806396b2db3814610a825780639dc29fac14610a4a578063a217fddf14610a2f578063a457c2d7146109d6578063a9059cbb14610950578063b485441d14610901578063b935980914610886578063c183b7fc14610824578063d18468361461050a578063d5391393146104cb578063d547741f1461048e578063dd62ed3e14610313578063e4f75ce7146102955763fb2205ca1461021a57600080fd5b346102915761022836611e3e565b919092610233611e91565b61023b612529565b73ffffffffffffffffffffffffffffffffffffffff84161561027b57846102748561026e6102693688612598565b61390e565b90612c96565b6001805580f35b9084602492519163ec442f0560e01b8352820152fd5b8280fd5b5034610291576102a436611e3e565b9190926102af612529565b73ffffffffffffffffffffffffffffffffffffffff8416156102e45784610274856102dd6102693688612598565b9033613285565b908460249251917f94280d62000000000000000000000000000000000000000000000000000000008352820152fd5b50903461029157806003193601126102915761032d611d50565b90610336611d78565b8151926103428461222e565b82519361034e85612279565b86855260209487868201528152835161036681612279565b8781528786820152858201528380519161037f83612279565b8883528887840152015273ffffffffffffffffffffffffffffffffffffffff80911691821561045f571690811561043057858492849260c0985260058452828220908252835220916103fa8151956103d68761222e565b6103df85612716565b87526103ed60028601612716565b9484880195865201612716565b928186019384528282519651805188520151838701525190815190860152015160608401525180516080840152015160a0820152f35b602485878551917f94280d62000000000000000000000000000000000000000000000000000000008352820152fd5b602486888651917fe602df05000000000000000000000000000000000000000000000000000000008352820152fd5b5090346102915780600319360112610291576104c891356104c360016104b2611d78565b938387528660205286200154612111565b6122f2565b80f35b505034610506578160031936011261050657602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b5080fd5b5091903461050657602090816003193601126102915783359081151580920361082057838052838352808420338552835260ff8185205416156105a0577fd42670144ecdb96470ba224c43350a54c3f4a1890e72b2a470a689962b9f3c4f9394507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006002541660ff83161760025551908152a180f35b849150836105ad336123d2565b90808351906105bb82612295565b604282528682019260603685378251156107f457603084538251906001918210156107c85790607860218501536041915b81831161071e575050506106c357604861067c93859361068b936106bf97519687937f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c8601526106478c8251928391603789019101611d9b565b8401917f206973206d697373696e6720726f6c6520000000000000000000000000000000603784015251809386840190611d9b565b010360288101855201836122b1565b519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190611dbe565b0390fd5b60648587808751927f08c379a000000000000000000000000000000000000000000000000000000000845283015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f8116601081101561079c577f3031323334353637383961626364656600000000000000000000000000000000901a61075b8587612392565b53881c928015610770576000190191906105ec565b60248260118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248360328c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b806032897f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b806032887f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b8380fd5b503461029157816003193601126102915761083d611d50565b91610846612529565b73ffffffffffffffffffffffffffffffffffffffff8316156108705783610274602435853361281f565b9083602492519163ec442f0560e01b8352820152fd5b503461029157816003193601126102915761089f611d50565b916108a8612529565b73ffffffffffffffffffffffffffffffffffffffff8316156108d2578361027460243585336133b6565b908360249251917f94280d62000000000000000000000000000000000000000000000000000000008352820152fd5b50346102915761091036611e3e565b91909261091b612529565b73ffffffffffffffffffffffffffffffffffffffff8416156102e45784610274856109496102693688612598565b90336133b6565b5034610291578160031936011261029157610969611d50565b91610972612529565b73ffffffffffffffffffffffffffffffffffffffff8316156108705760ff60025416156109b05783610274846109a9602435613c06565b903361281f565b517fa25be20b000000000000000000000000000000000000000000000000000000008152fd5b50346102915781600319360112610291576109ef611d50565b916109f8612529565b73ffffffffffffffffffffffffffffffffffffffff8316156108d25760ff60025416156109b0578361027484610949602435613c06565b50503461050657816003193601126105065751908152602090f35b50503461050657600319360112610a7f57610274610a66611d50565b610a6e612529565b610a79602435613c06565b90612edf565b80fd5b505034610506578060031936011261050657602090610ab0610aa2611d50565b610aaa611e01565b90612734565b9051908152f35b509134610a7f5780600319360112610a7f578151918160095492600184811c91818616958615610bff575b6020968785108114610bd3578899509688969785829a529182600014610b8e575050600114610b32575b505050610b2e9291610b1f9103856122b1565b51928284938452830190611dbe565b0390f35b9190869350600983527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5b828410610b765750505082010181610b1f610b2e610b0c565b8054848a018601528895508794909301928101610b5d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610b1f9150610b2e9050610b0c565b60248360228c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b92607f1692610ae2565b50346102915781600319360112610291578160209360ff92610c29611d78565b9035825281865273ffffffffffffffffffffffffffffffffffffffff83832091168252855220541690519015158152f35b505034610506578160031936011261050657602090516000198152f35b503461029157610c8636611e3e565b919092610c91612529565b73ffffffffffffffffffffffffffffffffffffffff8416156102e4578461027485610cbf6102693688612598565b90610ccb82823361313a565b336134ec565b5034610291578160031936011261029157610cea611d50565b91610cf3611e91565b610cfb612529565b73ffffffffffffffffffffffffffffffffffffffff831615610870578361027460243585612c96565b503461029157610d3336611e3e565b919092610d3e612529565b73ffffffffffffffffffffffffffffffffffffffff84161561027b5784610274856109a96102693688612598565b50829034610506576020928360031936011261029157610d8a611d50565b91610d93612529565b73ffffffffffffffffffffffffffffffffffffffff8316928315610e4c57610dd390338652828752610dce610dc9858820612716565b61368e565b613ab4565b9033855260038652828520847fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905585526003858386209280516002850155015191015551917f60662088d92b75bf198cd91648eaec81fc2278e7a02f3cf02643637be4728c24339180a36001805560018152f35b5083602492519163ec442f0560e01b8352820152fd5b5034610291578260031936011261029157610dc982602094610ab093338252865220612716565b508290346105065760206003193601126105065773ffffffffffffffffffffffffffffffffffffffff610eba611d50565b8360208651610ec881612279565b8281520152168015610efa578252602052819020610ee890600201612716565b60208251918051835201516020820152f35b5090602492519163ec442f0560e01b8352820152fd5b83823461050657600319906020823601126102915780359167ffffffffffffffff831161082057606090833603011261029157610269610f5e9161027493610f56612529565b369101612598565b33612edf565b50829034610506576003199060608236011261029157610f82611d50565b610f8a611d78565b916044359367ffffffffffffffff851161109d57606090853603011261109957610fb2612529565b73ffffffffffffffffffffffffffffffffffffffff9384831694851561106a5784161561105457610dc96102749697610ff761026961104f9561100f95369101612598565b9689526005602052808920338a526020528820612716565b61104661101b82613e5b565b61103c61104161103c6110366110318b88613d7b565b6138a3565b846137c5565b61380f565b6127ba565b90853385613673565b61281f565b6024828789519163ec442f0560e01b8352820152fd5b602483888a51917f96c6fd1e000000000000000000000000000000000000000000000000000000008352820152fd5b8480fd5b8580fd5b50503461050657816003193601126105065760209060ff6002541690519015158152f35b509034610291576020600319360112610291576110e0612529565b60ff60025416156109b05750610f5e6102749135613c06565b50503461050657600319360112610a7f57610274611115611d50565b61111d612529565b61026e602435613c06565b503461029157606060031936011261029157611142611d50565b6024359060443567ffffffffffffffff811161109d576111659036908501611e10565b929093611170612529565b73ffffffffffffffffffffffffffffffffffffffff83169283156112ac57803b1561127d5760ff60025416156112555782916111b489926109a96020989796613c06565b6111fe8851978896879586947fbed2554200000000000000000000000000000000000000000000000000000000865233908601526024850152606060448501526064840191612672565b03925af1908115611249576102749250839161121b575b506126b1565b61123c915060203d8111611242575b61123481836122b1565b81019061265a565b38611215565b503d61122a565b505051903d90823e3d90fd5b5085517fa25be20b000000000000000000000000000000000000000000000000000000008152fd5b602482858951917f7ca756dc000000000000000000000000000000000000000000000000000000008352820152fd5b6024828989519163ec442f0560e01b8352820152fd5b50829034610506576060600319360112610506576112de611d50565b6112e6611d78565b90604435926112f3612529565b73ffffffffffffffffffffffffffffffffffffffff9081831691821561135757841615611341575061100f610dc9869761104f9361027498526005602052808920338a526020528820612716565b6024908688519163ec442f0560e01b8352820152fd5b602482888a51917f96c6fd1e000000000000000000000000000000000000000000000000000000008352820152fd5b503461029157816003193601126102915761139f611d50565b916113a8612529565b73ffffffffffffffffffffffffffffffffffffffff8316156108d25760ff60025416156109b05783610274846102dd602435613c06565b50346102915781600319360112610291576113f8611d50565b91611401612529565b73ffffffffffffffffffffffffffffffffffffffff8316156108d257836102746024358533613285565b50346102915760031960608136011261082057611446611d50565b916024359167ffffffffffffffff9081841161155357606090843603011261109d5760443590811161109d5761147f9036908301611e10565b91909361148a612529565b73ffffffffffffffffffffffffffffffffffffffff811693841561153d57813b1561150e57602094926114cd6111fe9795936109a96102698c9536908601612598565b8751968795869485937f2ac65e4e00000000000000000000000000000000000000000000000000000000855233908501528a60248501526044840191612672565b602483868951917f7ca756dc000000000000000000000000000000000000000000000000000000008352820152fd5b6024838989519163ec442f0560e01b8352820152fd5b8680fd5b50829034610506578260031936011261050657611572611d78565b903373ffffffffffffffffffffffffffffffffffffffff83160361159b57906104c891356122f2565b60849060208551917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152fd5b5050346105065781600319360112610506576020905160068152f35b50346102915781600319360112610291573590611655611d78565b908284528360205261166c60018286200154612111565b8284528360205273ffffffffffffffffffffffffffffffffffffffff81852092169182855260205260ff8185205416156116a4578380f35b82845283602052808420828552602052832060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b50829034610506578260031936011261050657611727611d50565b92611730611e01565b91611739612529565b73ffffffffffffffffffffffffffffffffffffffff9182861691821561185e5761176233612b44565b9084821615611848578697866000146117e45792859392600560208097946117c5857fb4f3d65fffdf9e90f369eef21114568cc4ebe6bc1853767f497f0c6efbfd0e169b989d3398815285855281812089825285522094610dce610dc987612716565b9081519085015501519101555b51951515865216941692a36001805580f35b9650509260209281927fb4f3d65fffdf9e90f369eef21114568cc4ebe6bc1853767f497f0c6efbfd0e1695339892898b5260058752828b20908b528652600386611837848d2093610dce610dc986612716565b8051600285015501519101556117d2565b6024908784519163ec442f0560e01b8352820152fd5b85602492519163ec442f0560e01b8352820152fd5b503461029157602060031936011261029157816020936001923581528085522001549051908152f35b50829034610506576060600319360112610506576118b8611d50565b6118c0611d78565b906118c9612529565b60ff600254161561195a5773ffffffffffffffffffffffffffffffffffffffff9283821693841561192b57831615611915575061104f61100f610dc96102749697610ff7604435613c06565b6024908587519163ec442f0560e01b8352820152fd5b602482878951917f96c6fd1e000000000000000000000000000000000000000000000000000000008352820152fd5b8285517fa25be20b000000000000000000000000000000000000000000000000000000008152fd5b50903461029157806003193601126102915761199c611d50565b91602435916119a9612529565b73ffffffffffffffffffffffffffffffffffffffff84168015611a6e5760ff6002541615611a4757836119ec575b85610274866119e587613c06565b90336134ec565b3386526005602052818620908652602052611a1661103c611a11610dc9848920612716565b613de4565b15611a2157806119d7565b517f288ade40000000000000000000000000000000000000000000000000000000008152fd5b50517fa25be20b000000000000000000000000000000000000000000000000000000008152fd5b602483878451917f94280d62000000000000000000000000000000000000000000000000000000008352820152fd5b509134610a7f5780600319360112610a7f578151918160085492600184811c91818616958615611b60575b6020968785108114610bd3578899509688969785829a529182600014610b8e575050600114611b0457505050610b2e9291610b1f9103856122b1565b9190869350600883527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee35b828410611b485750505082010181610b1f610b2e610b0c565b8054848a018601528895508794909301928101611b2f565b92607f1692611ac8565b50829034610506578260031936011261050657611b85611d50565b60243591611b91612529565b73ffffffffffffffffffffffffffffffffffffffff821615611bbe57509081610ccb82610274943361313a565b602490848651917f94280d62000000000000000000000000000000000000000000000000000000008352820152fd5b508234610a7f576020600319360112610a7f5773ffffffffffffffffffffffffffffffffffffffff9182611c1f611d50565b16908115611c3e57602085858186868152600385522054169051908152f35b6024908386519163ec442f0560e01b8352820152fd5b50346102915760206003193601126102915735907fffffffff00000000000000000000000000000000000000000000000000000000821680920361029157602092507f479eaff4000000000000000000000000000000000000000000000000000000008214918215611cca575b50519015158152f35b9091507f7965db0b000000000000000000000000000000000000000000000000000000008114908115611d00575b509038611cc1565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438611cf8565b8382346105065760206003193601126105065761027490611d49612529565b3533612edf565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611d7357565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203611d7357565b60005b838110611dae5750506000910152565b8181015183820152602001611d9e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093611dfa81518092818752878088019101611d9b565b0116010190565b602435908115158203611d7357565b9181601f84011215611d735782359167ffffffffffffffff8311611d735760208381860195010111611d7357565b90600319604081840112611d735760043573ffffffffffffffffffffffffffffffffffffffff81168103611d7357926024359167ffffffffffffffff8311611d735782606092030112611d735760040190565b3360009081527f0781d7cac9c378efa22a7481e4d4d29704a680ddf504b3bc50b517700ee11e6c602090815260408083205490927f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69160ff1615611ef55750505050565b611efe336123d2565b91845190611f0b82612295565b604282528482019260603685378251156120e457603084538251906001918210156120e45790607860218501536041915b81831161203757505050611fdb5760486106bf938693611fa593611f9698519889937f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a860152610647815180928c603789019101611d9b565b010360288101875201856122b1565b519283927f08c379a000000000000000000000000000000000000000000000000000000000845260048401526024830190611dbe565b6064848651907f08c379a000000000000000000000000000000000000000000000000000000000825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f811660108110156120b7577f3031323334353637383961626364656600000000000000000000000000000000901a6120748587612392565b5360041c92801561208a57600019019190611f3c565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526032600452fd5b600090808252602090828252604092838120338252835260ff84822054161561213a5750505050565b612143336123d2565b9184519061215082612295565b604282528482019260603685378251156120e457603084538251906001918210156120e45790607860218501536041915b8183116121db57505050611fdb5760486106bf938693611fa593611f9698519889937f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008a860152610647815180928c603789019101611d9b565b909192600f811660108110156120b7577f3031323334353637383961626364656600000000000000000000000000000000901a6122188587612392565b5360041c92801561208a57600019019190612181565b6060810190811067ffffffffffffffff82111761224a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761224a57604052565b6080810190811067ffffffffffffffff82111761224a57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761224a57604052565b906000918083528260205273ffffffffffffffffffffffffffffffffffffffff6040842092169182845260205260ff60408420541661233057505050565b8083528260205260408320828452602052604083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9081518110156123a3570160200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604051906123df8261222e565b602a82526020820160403682378251156123a3576030905381516001908110156123a357607860218401536029905b80821161247c57505061241e5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f811660108110156124fb577f3031323334353637383961626364656600000000000000000000000000000000901a6124b88486612392565b5360041c9180156124cd57600019019061240e565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b60026001541461253a576002600155565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b91908281039260608412611d73576040516125b281612279565b6040819512611d7357604051916125c883612279565b8035835260209283820135848201528252604081013567ffffffffffffffff91828211611d73570184601f82011215611d7357803591821161224a5760405194612639857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601876122b1565b828652848383010111611d7357816000928580930183880137850101520152565b90816020910312611d7357518015158103611d735790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b156126b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f43616c6c6261636b206661696c656400000000000000000000000000000000006044820152fd5b9060405161272381612279565b602060018294805484520154910152565b73ffffffffffffffffffffffffffffffffffffffff169081156127a2571561277d57600052600560205260406000203360005260205261277a610dc96040600020612716565b90565b33600052600560205260406000209060005260205261277a610dc96040600020612716565b602460405163ec442f0560e01b815260006004820152fd5b156127c157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b929173ffffffffffffffffffffffffffffffffffffffff908185168015612b13578284169081156127a257818114612ae257829660009582875260209660048852604096612871610dc9898420612716565b9a86835260048a52612887610dc98a8520612716565b978860448b519e8f907f56c72d280000000000000000000000000000000000000000000000000000000082527f060606000000000000000000000000000000000000000000000000000000000060048301526024820152015260648d015260608c6084818660645af1978815612ad85783908490859a612a98575b61292e9b9c9d9e506129138b61380f565b9283612a6f575b505050612994575b5050505050505061380f565b15612937575050565b6064925051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f45524332303a20757064617465206661696c65640000000000000000000000006044820152fd5b6129d07f51d0ad1c942bf69951ef3f74b4b135c487a07fcefe7c0247e1940b708654c5a395848d8d516129c681612279565b8281520152612b44565b80831615612a52576129e56129f49183613ab4565b945b848d8d516129c681612279565b91821615612a3757612a069250613ab4565b905b87518151815260209182015182820152825160408201529101516060820152608090a338808080808080612922565b5050875190612a4582612279565b8082528982015290612a08565b506129f48a51612a6181612279565b848152848d820152946129e7565b612a9092945090612a83612a89928a612b95565b84613d12565b9286612b95565b38808061291a565b9950505060608c3d8211612ad0575b81612ab4606093836122b1565b81010312610291578b518a8d01519c8a01519b9c8d9c99612902565b3d9150612aa7565b89513d85823e3d90fd5b602490604051907fa26ce2e10000000000000000000000000000000000000000000000000000000082526004820152fd5b60246040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152fd5b73ffffffffffffffffffffffffffffffffffffffff8082168015612b8d57600052600360205260406000205416908115612b7c575090565b8091503b612b875790565b50600090565b505050600090565b90600390612ba283612b44565b73ffffffffffffffffffffffffffffffffffffffff9190828116612c175750612bca906139ef565b921660009281845260046020526001602060408620928051845501519101556040805193612bf785612279565b808552602085019281845281526004602052209251600284015551910155565b916040805195612c2687612279565b815192612c3284612279565b600091828552612c7060209786858a809901528b52868b01978651612c5681612279565b86815286898201528952612c69816139ef565b8c52613ab4565b865216815260048352209451805186550151600185015551805160028501550151910155565b91909173ffffffffffffffffffffffffffffffffffffffff9081811680156127a257612ce990600081815260209460048652604094612ce289612cdd610dc9898720612716565b613c76565b95906138a3565b98612d17612d1082612cdd8a51612cff81612279565b60065481526007548d82015261368e565b91906138a3565b8851907f145fca2c0000000000000000000000000000000000000000000000000000000082527f0606020000000000000000000000000000000000000000000000000000000000600483015282602483015260001960448301528a826064818a825af1918215612ed5578792612ea4575b508a9b9c612d9f61292e9b9c9493612da593613765565b90613765565b97612daf8961380f565b9283612e80575b505050612dc8575b505050505061380f565b7f51d0ad1c942bf69951ef3f74b4b135c487a07fcefe7c0247e1940b708654c5a392848a8a51612df781612279565b8281520152612e20895193612e0b85612279565b868552868c860152868c8c516129c681612279565b90811615612e6557612e3191613ab4565b905b8751815181526020918201518282015282516040820152910151606082015280608081015b0390a33880808080612dbe565b50508651612e7281612279565b838152838982015290612e33565b612e8c612e9c936139ef565b8051600655015160075584612b95565b38808b612db6565b9091508a81813d8311612ece575b612ebc81836122b1565b8101031261155357519061292e612d88565b503d612eb2565b8a513d89823e3d90fd5b919073ffffffffffffffffffffffffffffffffffffffff90818416908115612b1357809160009080825260209460048652604094612f21610dc9878620612716565b98612f2a613b94565b9587519a7f56c72d28000000000000000000000000000000000000000000000000000000008c527f060606000000000000000000000000000000000000000000000000000000000060048d015260248c01528660448c015260648b015260608a6084818860645af19586156131305785908687986130ef575b61292e999a9b9c50612fb48961380f565b928361309b575b505050612fcc57505050505061380f565b612fdd90858a8a516129c681612279565b91821615613060577f51d0ad1c942bf69951ef3f74b4b135c487a07fcefe7c0247e1940b708654c5a39161301091613ab4565b8388885161301d81612279565b828152015286519061302e82612279565b848252888201859052875181518152602091820151828201528251604082015291015160608201528060808101612e58565b50507f51d0ad1c942bf69951ef3f74b4b135c487a07fcefe7c0247e1940b708654c5a3855161308e81612279565b8381528388820152613010565b6130b09395506130ab9085612b95565b613d12565b91896130dd6130d8856130ab8d516130c781612279565b60065481526007548682015261368e565b6139ef565b80516006550151600755388080612fbb565b5096505060608a3d8211613128575b8161310b606093836122b1565b81010312611099578951888b01519a880151999a8b9a9790612fa3565b3d91506130fe565b87513d87823e3d90fd5b91906131ae91613148613b94565b6040517f7c12a1eb0000000000000000000000000000000000000000000000000000000081527f06060000000000000000000000000000000000000000000000000000000000006004820152602481019290925260448201529160209083906064820190565b03928181600095818760645af1801561327a57849061324b575b6131d2915061380f565b61324557604061103c93611a1193610dc9936132149773ffffffffffffffffffffffffffffffffffffffff809116845260058252848420921683525220612716565b1561321b57565b60046040517f288ade40000000000000000000000000000000000000000000000000000000008152fd5b50505050565b508181813d8311613273575b61326181836122b1565b81010312610820576131d290516131c8565b503d613257565b6040513d86823e3d90fd5b919073ffffffffffffffffffffffffffffffffffffffff8084169081156133855782169081156133545761103c936132e6926132df926000526005602052604060002090600052602052612cdd610dc96040600020612716565b93906138a3565b156132f6576132f4926134ec565b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f77000000000000006044820152fd5b60246040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152fd5b60246040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b9092919273ffffffffffffffffffffffffffffffffffffffff91828116928315613385578216928315613354576134739360009182526005602052604096879182842090845260205261340d610dc9838520612716565b825196879283927fce8c713d000000000000000000000000000000000000000000000000000000008452600484016040909392919360608101947f0606000000000000000000000000000000000000000000000000000000000000825260208201520152565b03818460645af19384156134e0576132f4959682956134a3575b505061104161103c61349e926138a3565b6134ec565b61103c955061349e925061104191816134d092903d106134d9575b6134c881836122b1565b8101906139d9565b9590925061348d565b503d6134be565b508551903d90823e3d90fd5b9173ffffffffffffffffffffffffffffffffffffffff80841692831561338557818116948515613354578361363991600561355061354a7f836b0bdb95065391d1c4c568d3e48559e54d5969d06d7ea87f85869e1ef69dc8986139ef565b92612b44565b9560009361358a6040958651996135668b612279565b818b5260209a8b018290528085161561365957613584915083613ab4565b97612b44565b90600092838a885161359b81612279565b828152015282161561363e576135b19250613ab4565b955b8351926135bf8461222e565b835280830186815281858501918983528b600052848252866000208d6000528252818760002096518051885501516001870155518051600287015501516003850155518051600485015501519101555192839283909291602060609181608085019680518652015182850152805160408501520151910152565b0390a3565b505083519061364c82612279565b80825287820152956135b3565b5086519061366682612279565b8082528a82015297612b44565b92909193613245576132f49361368891613d12565b916134ec565b80511580613759575b6137505760208151910151604051917f2d5831350000000000000000000000000000000000000000000000000000000083527f06000000000000000000000000000000000000000000000000000000000000006004840152602483015260448201526020816064816000825af190811561374457600091613716575090565b906020823d821161373c575b8161372f602093836122b1565b81010312610a7f57505190565b3d9150613722565b6040513d6000823e3d90fd5b5061277a613b94565b50602081015115613697565b6040517ffe9c73d1000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152604481019190915260208180606481015b0381600060645af190811561374457600091613716575090565b6040517ffb7da35f000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152604481019190915260208180606481016137ab565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260009182600483015260248201526020816044818560645af1918215613897578092613863575b5050151590565b9091506020823d821161388f575b8161387e602093836122b1565b81010312610a7f575051388061385c565b3d9150613871565b604051903d90823e3d90fd5b6040517f1d79e49a00000000000000000000000000000000000000000000000000000000815260009182600483015260248201526020816044818560645af19182156138975780926138f457505090565b9091506020823d821161373c578161372f602093836122b1565b8051908151916020918280809301519101519361399060405195869384937f0135e4660000000000000000000000000000000000000000000000000000000085527f0600000000000000000000000000000000000000000000000000000000000000600486015260248501526044840152608060648401526084830190611dbe565b0381600060645af1908115613744576000916139ad575b50905090565b82813d83116139d2575b6139c181836122b1565b81010312610a7f57505180386139a7565b503d6139b7565b9190826040910312611d73576020825192015190565b602090604080516139ff81612279565b600093818580935201528051917f1f4491de0000000000000000000000000000000000000000000000000000000083527f06000000000000000000000000000000000000000000000000000000000000006004840152602483015280826044818660645af1918215613aaa578392613a88575b505191613a7e83612279565b8252602082015290565b90809350613aa292503d84116134d9576134c881836122b1565b909138613a72565b81513d85823e3d90fd5b60408051602093613b74938392613aca81612279565b600096818880935201527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083519260601b16602083015260148252613b0e82612279565b825194859283927fe5c833130000000000000000000000000000000000000000000000000000000084527f060000000000000000000000000000000000000000000000000000000000000060048501526024840152606060448401526064830190611dbe565b03818660645af1918215613aaa578392613a8857505191613a7e83612279565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f060000000000000000000000000000000000000000000000000000000000000060048201526000908160248201526020816044818560645af19182156138975780926138f457505090565b604051907fd9b60b600000000000000000000000000000000000000000000000000000000082527f060000000000000000000000000000000000000000000000000000000000000060048301526024820152602081604481600060645af190811561374457600091613716575090565b604080517ff581fa200000000000000000000000000000000000000000000000000000000081527f06060000000000000000000000000000000000000000000000000000000000006004820152602481019290925260448201929092529190826064816000825af1918215613744576000908193613cf357509190565b9050613d0e91925060403d81116134d9576134c881836122b1565b9091565b6040517f371d1bf20000000000000000000000000000000000000000000000000000000081527f060600000000000000000000000000000000000000000000000000000000000060048201526024810191909152604481019190915260208180606481016137ab565b6040517fdd1486930000000000000000000000000000000000000000000000000000000081527f060600000000000000000000000000000000000000000000000000000000000060048201526024810191909152604481019190915260208180606481016137ab565b604051907f7c12a1eb0000000000000000000000000000000000000000000000000000000082527f06060200000000000000000000000000000000000000000000000000000000006004830152602482015260009081604482015260208160648185825af19182156138975780926138f457505090565b604051907f7c12a1eb0000000000000000000000000000000000000000000000000000000082527f06060200000000000000000000000000000000000000000000000000000000006004830152602482015260001960448201526020816064816000825af19081156137445760009161371657509056fea164736f6c6343000813000a";
570
1418
 
571
1419
  type PrivateERC20MockConstructorParams =
572
1420
  | [signer?: Signer]