@etherisc/gif-next 0.0.2-d911522 → 0.0.2-d96b9e1-825

Sign up to get free protection for your applications and to get access to all the features.
Files changed (339) hide show
  1. package/README.md +109 -0
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +48 -53
  4. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  5. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +48 -53
  6. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
  8. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/{IProduct.sol → IProductComponent.sol}/IProductComponent.json +139 -52
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +218 -44
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +144 -70
  14. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  16. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  20. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  32. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  34. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  38. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1194 -220
  44. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +1443 -354
  48. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
  50. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{product/ProductService.sol/ProductModule.json → base/IInstanceBase.sol/IInstanceBase.json} +18 -30
  52. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +511 -0
  54. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  56. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
  58. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/InstanceBase.sol/InstanceBase.json} +137 -138
  60. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +692 -0
  62. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  64. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  66. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{component/IComponent.sol/IComponentContract.json → base/ServiceBase.sol/ServiceBase.json} +148 -27
  68. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  70. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  72. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  74. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +296 -0
  76. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  78. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +296 -0
  80. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +10 -0
  82. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +10 -0
  84. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +10 -0
  86. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
  88. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  90. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +40 -97
  92. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  94. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +142 -112
  96. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +142 -112
  98. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  100. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +57 -57
  102. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +50 -63
  104. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  106. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +10 -0
  108. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +10 -0
  110. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
  112. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  113. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +533 -0
  114. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  115. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  116. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  117. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +533 -0
  118. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +491 -0
  120. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  122. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
  124. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
  126. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +471 -0
  128. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +673 -0
  130. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
  132. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  133. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  134. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +103 -77
  135. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  136. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  137. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  138. package/artifacts/contracts/registry/Registry.sol/Registry.json +194 -69
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  141. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  142. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  143. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  144. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +18 -63
  145. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  146. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  148. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +18 -63
  149. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  150. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  153. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  154. package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
  155. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  156. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +82 -0
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  164. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  166. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
  169. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  170. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  171. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  173. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  175. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/Fee.sol/FeeLib.json +218 -0
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  178. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  182. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  189. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +68 -55
  191. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  192. package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
  193. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  195. package/contracts/components/BaseComponent.sol +88 -0
  196. package/contracts/components/IBaseComponent.sol +19 -0
  197. package/contracts/components/IPoolComponent.sol +57 -0
  198. package/contracts/components/IProductComponent.sol +19 -0
  199. package/contracts/components/Pool.sol +161 -16
  200. package/contracts/components/Product.sol +77 -26
  201. package/contracts/experiment/errors/Require.sol +10 -5
  202. package/contracts/experiment/errors/Revert.sol +13 -8
  203. package/contracts/experiment/inheritance/A.sol +8 -11
  204. package/contracts/experiment/inheritance/B.sol +10 -5
  205. package/contracts/experiment/inheritance/C.sol +11 -5
  206. package/contracts/experiment/inheritance/IA.sol +2 -7
  207. package/contracts/experiment/inheritance/IB.sol +3 -2
  208. package/contracts/experiment/inheritance/IC.sol +4 -3
  209. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  210. package/contracts/experiment/statemachine/ISM.sol +25 -0
  211. package/contracts/experiment/statemachine/README.md +112 -0
  212. package/contracts/experiment/statemachine/SM.sol +57 -0
  213. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  214. package/contracts/experiment/types/TypeA.sol +14 -9
  215. package/contracts/experiment/types/TypeB.sol +14 -9
  216. package/contracts/instance/IInstance.sol +40 -8
  217. package/contracts/instance/IInstanceLinked.sol +8 -0
  218. package/contracts/instance/Instance.sol +47 -43
  219. package/contracts/instance/base/ComponentServiceBase.sol +42 -0
  220. package/contracts/instance/base/IInstanceBase.sol +14 -0
  221. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  222. package/contracts/instance/base/ILifecycle.sol +30 -0
  223. package/contracts/instance/base/IService.sol +15 -0
  224. package/contracts/instance/base/InstanceBase.sol +80 -0
  225. package/contracts/instance/base/KeyValueStore.sol +147 -0
  226. package/contracts/instance/base/Lifecycle.sol +95 -0
  227. package/contracts/instance/base/ModuleBase.sol +52 -0
  228. package/contracts/instance/base/ServiceBase.sol +37 -0
  229. package/contracts/instance/module/access/Access.sol +149 -0
  230. package/contracts/instance/module/access/IAccess.sol +53 -0
  231. package/contracts/instance/module/bundle/BundleModule.sol +136 -0
  232. package/contracts/instance/module/bundle/IBundle.sol +58 -0
  233. package/contracts/instance/module/compensation/CompensationModule.sol +8 -0
  234. package/contracts/instance/module/compensation/ICompensation.sol +10 -0
  235. package/contracts/instance/module/component/ComponentModule.sol +95 -0
  236. package/contracts/instance/module/component/IComponent.sol +53 -0
  237. package/contracts/instance/module/policy/IPolicy.sol +60 -0
  238. package/contracts/instance/module/policy/PolicyModule.sol +76 -0
  239. package/contracts/instance/module/pool/IPoolModule.sol +41 -0
  240. package/contracts/instance/module/pool/PoolModule.sol +87 -0
  241. package/contracts/instance/module/risk/IRisk.sol +10 -0
  242. package/contracts/instance/module/risk/RiskModule.sol +8 -0
  243. package/contracts/instance/module/treasury/ITreasury.sol +103 -0
  244. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  245. package/contracts/instance/module/treasury/TreasuryModule.sol +152 -0
  246. package/contracts/instance/service/ComponentOwnerService.sol +170 -0
  247. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  248. package/contracts/instance/service/IPoolService.sol +30 -0
  249. package/contracts/instance/service/IProductService.sol +58 -0
  250. package/contracts/instance/service/PoolService.sol +123 -0
  251. package/contracts/instance/service/ProductService.sol +354 -0
  252. package/contracts/registry/ChainNft.sol +80 -94
  253. package/contracts/registry/IChainNft.sol +10 -7
  254. package/contracts/registry/IRegistry.sol +38 -51
  255. package/contracts/registry/IRegistryLinked.sol +8 -0
  256. package/contracts/registry/Registry.sol +310 -111
  257. package/contracts/shared/ERC165.sol +21 -0
  258. package/contracts/shared/IOwnable.sol +6 -0
  259. package/contracts/shared/IRegisterable.sol +24 -0
  260. package/contracts/shared/IVersionable.sol +52 -0
  261. package/contracts/shared/Registerable.sol +86 -0
  262. package/contracts/shared/Versionable.sol +89 -0
  263. package/contracts/test/TestFee.sol +25 -0
  264. package/contracts/test/TestPool.sol +22 -0
  265. package/contracts/test/TestProduct.sol +44 -0
  266. package/contracts/test/TestRegisterable.sol +19 -0
  267. package/contracts/test/TestRoleId.sol +14 -0
  268. package/contracts/test/TestService.sol +32 -0
  269. package/contracts/test/TestToken.sol +26 -0
  270. package/contracts/test/TestVersion.sol +44 -0
  271. package/contracts/test/TestVersionable.sol +17 -0
  272. package/contracts/types/AddressSet.sol +58 -0
  273. package/contracts/types/Blocknumber.sol +76 -18
  274. package/contracts/types/ChainId.sol +18 -10
  275. package/contracts/types/Fee.sol +51 -0
  276. package/contracts/types/Key32.sol +45 -0
  277. package/contracts/types/NftId.sol +48 -11
  278. package/contracts/types/NftIdSet.sol +60 -0
  279. package/contracts/types/ObjectType.sol +115 -0
  280. package/contracts/types/RoleId.sol +36 -0
  281. package/contracts/types/StateId.sol +101 -0
  282. package/contracts/types/Timestamp.sol +85 -17
  283. package/contracts/types/UFixed.sol +71 -72
  284. package/contracts/types/Version.sol +95 -0
  285. package/package.json +15 -4
  286. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  287. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  288. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  289. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  290. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  291. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  293. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  294. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  295. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  296. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  297. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  298. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  300. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  301. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  302. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  303. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  304. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  305. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  306. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  307. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  308. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  309. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  310. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  311. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  312. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  313. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  314. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  315. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  316. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  317. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  318. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  320. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  321. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  322. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  323. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  324. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  325. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  326. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  327. package/contracts/components/Component.sol +0 -62
  328. package/contracts/components/IPool.sol +0 -9
  329. package/contracts/components/IProduct.sol +0 -12
  330. package/contracts/instance/access/Access.sol +0 -218
  331. package/contracts/instance/access/IAccess.sol +0 -83
  332. package/contracts/instance/component/ComponentModule.sol +0 -248
  333. package/contracts/instance/component/IComponent.sol +0 -95
  334. package/contracts/instance/policy/IPolicy.sol +0 -66
  335. package/contracts/instance/policy/PolicyModule.sol +0 -107
  336. package/contracts/instance/pool/IPoolModule.sol +0 -41
  337. package/contracts/instance/pool/PoolModule.sol +0 -86
  338. package/contracts/instance/product/IProductService.sol +0 -46
  339. package/contracts/instance/product/ProductService.sol +0 -108
@@ -0,0 +1,82 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TestRoleId",
4
+ "sourceName": "contracts/test/TestRoleId.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "getPoolOwnerRole",
9
+ "outputs": [
10
+ {
11
+ "internalType": "RoleId",
12
+ "name": "",
13
+ "type": "bytes8"
14
+ }
15
+ ],
16
+ "stateMutability": "pure",
17
+ "type": "function"
18
+ },
19
+ {
20
+ "inputs": [],
21
+ "name": "getPoolOwnerRoleName",
22
+ "outputs": [
23
+ {
24
+ "internalType": "string",
25
+ "name": "",
26
+ "type": "string"
27
+ }
28
+ ],
29
+ "stateMutability": "pure",
30
+ "type": "function"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "getProductOwnerRole",
35
+ "outputs": [
36
+ {
37
+ "internalType": "RoleId",
38
+ "name": "",
39
+ "type": "bytes8"
40
+ }
41
+ ],
42
+ "stateMutability": "pure",
43
+ "type": "function"
44
+ },
45
+ {
46
+ "inputs": [],
47
+ "name": "getProductOwnerRoleName",
48
+ "outputs": [
49
+ {
50
+ "internalType": "string",
51
+ "name": "",
52
+ "type": "string"
53
+ }
54
+ ],
55
+ "stateMutability": "pure",
56
+ "type": "function"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "string",
62
+ "name": "roleName",
63
+ "type": "string"
64
+ }
65
+ ],
66
+ "name": "getRole",
67
+ "outputs": [
68
+ {
69
+ "internalType": "RoleId",
70
+ "name": "",
71
+ "type": "bytes8"
72
+ }
73
+ ],
74
+ "stateMutability": "pure",
75
+ "type": "function"
76
+ }
77
+ ],
78
+ "bytecode": "0x608060405234801561001057600080fd5b50610568806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631fa8a7301461005c5780636e9067fb1461007a578063775a4048146100aa578063b844f20e146100c8578063c4ce6e5b146100e6575b600080fd5b610064610104565b60405161007191906102d3565b60405180910390f35b610094600480360381019061008f9190610448565b610113565b6040516100a191906102d3565b60405180910390f35b6100b2610125565b6040516100bf91906102d3565b60405180910390f35b6100d0610134565b6040516100dd9190610510565b60405180910390f35b6100ee610143565b6040516100fb9190610510565b60405180910390f35b600061010e610152565b905090565b600061011e82610197565b9050919050565b600061012f6101c7565b905090565b606061013e61020c565b905090565b606061014d610249565b905090565b60006101926040518060400160405280600d81526020017f506f6f6c4f776e6572526f6c6500000000000000000000000000000000000000815250610197565b905090565b6000816040516020016101aa9190610510565b604051602081830303815290604052805190602001209050919050565b60006102076040518060400160405280601081526020017f50726f647563744f776e6572526f6c6500000000000000000000000000000000815250610197565b905090565b60606040518060400160405280601081526020017f50726f647563744f776e6572526f6c6500000000000000000000000000000000815250905090565b60606040518060400160405280600d81526020017f506f6f6c4f776e6572526f6c6500000000000000000000000000000000000000815250905090565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b60006102bd82610286565b9050919050565b6102cd816102b2565b82525050565b60006020820190506102e860008301846102c4565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6103558261030c565b810181811067ffffffffffffffff821117156103745761037361031d565b5b80604052505050565b60006103876102ee565b9050610393828261034c565b919050565b600067ffffffffffffffff8211156103b3576103b261031d565b5b6103bc8261030c565b9050602081019050919050565b82818337600083830152505050565b60006103eb6103e684610398565b61037d565b90508281526020810184848401111561040757610406610307565b5b6104128482856103c9565b509392505050565b600082601f83011261042f5761042e610302565b5b813561043f8482602086016103d8565b91505092915050565b60006020828403121561045e5761045d6102f8565b5b600082013567ffffffffffffffff81111561047c5761047b6102fd565b5b6104888482850161041a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156104cb5780820151818401526020810190506104b0565b60008484015250505050565b60006104e282610491565b6104ec818561049c565b93506104fc8185602086016104ad565b6105058161030c565b840191505092915050565b6000602082019050818103600083015261052a81846104d7565b90509291505056fea26469706673582212207dbe124fc211a3a75108638c3fca52309136ce85664073b4ccd763614efa43cd64736f6c63430008140033",
79
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631fa8a7301461005c5780636e9067fb1461007a578063775a4048146100aa578063b844f20e146100c8578063c4ce6e5b146100e6575b600080fd5b610064610104565b60405161007191906102d3565b60405180910390f35b610094600480360381019061008f9190610448565b610113565b6040516100a191906102d3565b60405180910390f35b6100b2610125565b6040516100bf91906102d3565b60405180910390f35b6100d0610134565b6040516100dd9190610510565b60405180910390f35b6100ee610143565b6040516100fb9190610510565b60405180910390f35b600061010e610152565b905090565b600061011e82610197565b9050919050565b600061012f6101c7565b905090565b606061013e61020c565b905090565b606061014d610249565b905090565b60006101926040518060400160405280600d81526020017f506f6f6c4f776e6572526f6c6500000000000000000000000000000000000000815250610197565b905090565b6000816040516020016101aa9190610510565b604051602081830303815290604052805190602001209050919050565b60006102076040518060400160405280601081526020017f50726f647563744f776e6572526f6c6500000000000000000000000000000000815250610197565b905090565b60606040518060400160405280601081526020017f50726f647563744f776e6572526f6c6500000000000000000000000000000000815250905090565b60606040518060400160405280600d81526020017f506f6f6c4f776e6572526f6c6500000000000000000000000000000000000000815250905090565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b60006102bd82610286565b9050919050565b6102cd816102b2565b82525050565b60006020820190506102e860008301846102c4565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6103558261030c565b810181811067ffffffffffffffff821117156103745761037361031d565b5b80604052505050565b60006103876102ee565b9050610393828261034c565b919050565b600067ffffffffffffffff8211156103b3576103b261031d565b5b6103bc8261030c565b9050602081019050919050565b82818337600083830152505050565b60006103eb6103e684610398565b61037d565b90508281526020810184848401111561040757610406610307565b5b6104128482856103c9565b509392505050565b600082601f83011261042f5761042e610302565b5b813561043f8482602086016103d8565b91505092915050565b60006020828403121561045e5761045d6102f8565b5b600082013567ffffffffffffffff81111561047c5761047b6102fd565b5b6104888482850161041a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156104cb5780820151818401526020810190506104b0565b60008484015250505050565b60006104e282610491565b6104ec818561049c565b93506104fc8185602086016104ad565b6105058161030c565b840191505092915050565b6000602082019050818103600083015261052a81846104d7565b90509291505056fea26469706673582212207dbe124fc211a3a75108638c3fca52309136ce85664073b4ccd763614efa43cd64736f6c63430008140033",
80
+ "linkReferences": {},
81
+ "deployedLinkReferences": {}
82
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/746f2ad7b0d888e05db828a61f6d5e10.json"
4
+ }
@@ -0,0 +1,379 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TestService",
4
+ "sourceName": "contracts/test/TestService.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "registry",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "NftId",
15
+ "name": "registryNftId",
16
+ "type": "uint96"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": false,
27
+ "internalType": "Version",
28
+ "name": "version",
29
+ "type": "uint24"
30
+ },
31
+ {
32
+ "indexed": false,
33
+ "internalType": "address",
34
+ "name": "implementation",
35
+ "type": "address"
36
+ },
37
+ {
38
+ "indexed": false,
39
+ "internalType": "address",
40
+ "name": "activatedBy",
41
+ "type": "address"
42
+ }
43
+ ],
44
+ "name": "LogVersionableActivated",
45
+ "type": "event"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "NAME",
50
+ "outputs": [
51
+ {
52
+ "internalType": "string",
53
+ "name": "",
54
+ "type": "string"
55
+ }
56
+ ],
57
+ "stateMutability": "view",
58
+ "type": "function"
59
+ },
60
+ {
61
+ "inputs": [
62
+ {
63
+ "internalType": "address",
64
+ "name": "implementation",
65
+ "type": "address"
66
+ },
67
+ {
68
+ "internalType": "address",
69
+ "name": "activatedBy",
70
+ "type": "address"
71
+ }
72
+ ],
73
+ "name": "activate",
74
+ "outputs": [],
75
+ "stateMutability": "nonpayable",
76
+ "type": "function"
77
+ },
78
+ {
79
+ "inputs": [],
80
+ "name": "getData",
81
+ "outputs": [
82
+ {
83
+ "internalType": "bytes",
84
+ "name": "data",
85
+ "type": "bytes"
86
+ }
87
+ ],
88
+ "stateMutability": "view",
89
+ "type": "function"
90
+ },
91
+ {
92
+ "inputs": [],
93
+ "name": "getMajorVersion",
94
+ "outputs": [
95
+ {
96
+ "internalType": "VersionPart",
97
+ "name": "majorVersion",
98
+ "type": "uint8"
99
+ }
100
+ ],
101
+ "stateMutability": "view",
102
+ "type": "function"
103
+ },
104
+ {
105
+ "inputs": [],
106
+ "name": "getName",
107
+ "outputs": [
108
+ {
109
+ "internalType": "string",
110
+ "name": "name",
111
+ "type": "string"
112
+ }
113
+ ],
114
+ "stateMutability": "pure",
115
+ "type": "function"
116
+ },
117
+ {
118
+ "inputs": [],
119
+ "name": "getNftId",
120
+ "outputs": [
121
+ {
122
+ "internalType": "NftId",
123
+ "name": "nftId",
124
+ "type": "uint96"
125
+ }
126
+ ],
127
+ "stateMutability": "view",
128
+ "type": "function"
129
+ },
130
+ {
131
+ "inputs": [],
132
+ "name": "getOwner",
133
+ "outputs": [
134
+ {
135
+ "internalType": "address",
136
+ "name": "owner",
137
+ "type": "address"
138
+ }
139
+ ],
140
+ "stateMutability": "view",
141
+ "type": "function"
142
+ },
143
+ {
144
+ "inputs": [],
145
+ "name": "getParentNftId",
146
+ "outputs": [
147
+ {
148
+ "internalType": "NftId",
149
+ "name": "nftId",
150
+ "type": "uint96"
151
+ }
152
+ ],
153
+ "stateMutability": "view",
154
+ "type": "function"
155
+ },
156
+ {
157
+ "inputs": [],
158
+ "name": "getRegistry",
159
+ "outputs": [
160
+ {
161
+ "internalType": "contract IRegistry",
162
+ "name": "registry",
163
+ "type": "address"
164
+ }
165
+ ],
166
+ "stateMutability": "view",
167
+ "type": "function"
168
+ },
169
+ {
170
+ "inputs": [],
171
+ "name": "getType",
172
+ "outputs": [
173
+ {
174
+ "internalType": "ObjectType",
175
+ "name": "",
176
+ "type": "uint8"
177
+ }
178
+ ],
179
+ "stateMutability": "pure",
180
+ "type": "function"
181
+ },
182
+ {
183
+ "inputs": [],
184
+ "name": "getVersion",
185
+ "outputs": [
186
+ {
187
+ "internalType": "Version",
188
+ "name": "",
189
+ "type": "uint24"
190
+ }
191
+ ],
192
+ "stateMutability": "pure",
193
+ "type": "function"
194
+ },
195
+ {
196
+ "inputs": [
197
+ {
198
+ "internalType": "uint256",
199
+ "name": "idx",
200
+ "type": "uint256"
201
+ }
202
+ ],
203
+ "name": "getVersion",
204
+ "outputs": [
205
+ {
206
+ "internalType": "Version",
207
+ "name": "",
208
+ "type": "uint24"
209
+ }
210
+ ],
211
+ "stateMutability": "view",
212
+ "type": "function"
213
+ },
214
+ {
215
+ "inputs": [],
216
+ "name": "getVersionCount",
217
+ "outputs": [
218
+ {
219
+ "internalType": "uint256",
220
+ "name": "",
221
+ "type": "uint256"
222
+ }
223
+ ],
224
+ "stateMutability": "view",
225
+ "type": "function"
226
+ },
227
+ {
228
+ "inputs": [
229
+ {
230
+ "internalType": "Version",
231
+ "name": "_version",
232
+ "type": "uint24"
233
+ }
234
+ ],
235
+ "name": "getVersionInfo",
236
+ "outputs": [
237
+ {
238
+ "components": [
239
+ {
240
+ "internalType": "Version",
241
+ "name": "version",
242
+ "type": "uint24"
243
+ },
244
+ {
245
+ "internalType": "address",
246
+ "name": "implementation",
247
+ "type": "address"
248
+ },
249
+ {
250
+ "internalType": "address",
251
+ "name": "activatedBy",
252
+ "type": "address"
253
+ },
254
+ {
255
+ "internalType": "Timestamp",
256
+ "name": "activatedAt",
257
+ "type": "uint40"
258
+ },
259
+ {
260
+ "internalType": "Blocknumber",
261
+ "name": "activatedIn",
262
+ "type": "uint32"
263
+ }
264
+ ],
265
+ "internalType": "struct IVersionable.VersionInfo",
266
+ "name": "",
267
+ "type": "tuple"
268
+ }
269
+ ],
270
+ "stateMutability": "view",
271
+ "type": "function"
272
+ },
273
+ {
274
+ "inputs": [
275
+ {
276
+ "internalType": "Version",
277
+ "name": "_version",
278
+ "type": "uint24"
279
+ }
280
+ ],
281
+ "name": "isActivated",
282
+ "outputs": [
283
+ {
284
+ "internalType": "bool",
285
+ "name": "",
286
+ "type": "bool"
287
+ }
288
+ ],
289
+ "stateMutability": "view",
290
+ "type": "function"
291
+ },
292
+ {
293
+ "inputs": [],
294
+ "name": "register",
295
+ "outputs": [
296
+ {
297
+ "internalType": "NftId",
298
+ "name": "nftId",
299
+ "type": "uint96"
300
+ }
301
+ ],
302
+ "stateMutability": "nonpayable",
303
+ "type": "function"
304
+ },
305
+ {
306
+ "inputs": [
307
+ {
308
+ "internalType": "bytes4",
309
+ "name": "interfaceId",
310
+ "type": "bytes4"
311
+ }
312
+ ],
313
+ "name": "supportsInterface",
314
+ "outputs": [
315
+ {
316
+ "internalType": "bool",
317
+ "name": "",
318
+ "type": "bool"
319
+ }
320
+ ],
321
+ "stateMutability": "view",
322
+ "type": "function"
323
+ }
324
+ ],
325
+ "bytecode": "0x60e06040523480156200001157600080fd5b5060405162002ca938038062002ca98339818101604052810190620000379190620009a5565b818181816200006c7f01ffc9a7000000000000000000000000000000000000000000000000000000006200039360201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620000de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000d59062000a4d565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f06ecd8ef000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016200016f919062000aac565b602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b3919062000b06565b620001f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ec9062000b88565b60405180910390fd5b806bffffffffffffffffffffffff1660a0816bffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663e74d052f60a0516040518263ffffffff1660e01b815260040162000258919062000bed565b602060405180830381865afa15801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c919062000b06565b620002de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d59062000c80565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050620003437f3bf74c8e000000000000000000000000000000000000000000000000000000006200039360201b60201c565b505062000358600033620003ff60201b60201c565b620003897fda309788000000000000000000000000000000000000000000000000000000006200039360201b60201c565b50505050620010fa565b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000620004116200074d60201b60201c565b90506200042481620007d760201b60201c565b1562000467576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200045e9062000d18565b60405180910390fd5b6000600280549050111562000519576000600260016002805490506200048e919062000d73565b81548110620004a257620004a162000dae565b5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050620004d5828262000897565b62000517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050e9062000e53565b60405180910390fd5b505b60028190806001815401808255809150506001900390600052602060002090600a91828204019190066003029091909190916101000a81548162ffffff021916908362ffffff1602179055506040518060a001604052808262ffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001620005c3620008ae60201b60201c565b64ffffffffff168152602001620005df620008c660201b60201c565b63ffffffff16815250600160008362ffffff1662ffffff16815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548163ffffffff021916908363ffffffff1602179055509050507f68e7327fca0057a787cde34ababb9ef9844ba8065ee03e8781d8122fc15d4419818484604051620007409392919062000ece565b60405180910390a1505050565b600073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__632efe011360036000806040518463ffffffff1660e01b81526004016200078e9392919062000f91565b602060405180830381865af4158015620007ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d2919062000fff565b905090565b600080600160008462ffffff1662ffffff16815260200190815260200160002060010160199054906101000a900463ffffffff1663ffffffff1673__$5f476116ae21c5294e0c0761c07efa7e1c$__636effeac490916040518263ffffffff1660e01b81526004016200084b91906200107a565b602060405180830381865af415801562000869573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200088f9190620010c8565b119050919050565b60008162ffffff168362ffffff1611905092915050565b6000620008c142620008de60201b60201c565b905090565b6000620008d943620008e860201b60201c565b905090565b6000819050919050565b6000819050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200092482620008f7565b9050919050565b620009368162000917565b81146200094257600080fd5b50565b60008151905062000956816200092b565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6200097f816200095c565b81146200098b57600080fd5b50565b6000815190506200099f8162000974565b92915050565b60008060408385031215620009bf57620009be620008f2565b5b6000620009cf8582860162000945565b9250506020620009e2858286016200098e565b9150509250929050565b600082825260208201905092915050565b7f4552524f523a5247422d3031303a52454749535452595f5a45524f0000000000600082015250565b600062000a35601b83620009ec565b915062000a4282620009fd565b602082019050919050565b6000602082019050818103600083015262000a688162000a26565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000aa68162000a6f565b82525050565b600060208201905062000ac3600083018462000a9b565b92915050565b60008115159050919050565b62000ae08162000ac9565b811462000aec57600080fd5b50565b60008151905062000b008162000ad5565b92915050565b60006020828403121562000b1f5762000b1e620008f2565b5b600062000b2f8482850162000aef565b91505092915050565b7f4552524f523a5247422d3031313a4e4f545f5245474953545259000000000000600082015250565b600062000b70601a83620009ec565b915062000b7d8262000b38565b602082019050919050565b6000602082019050818103600083015262000ba38162000b61565b9050919050565b6000819050919050565b600062000bd562000bcf62000bc9846200095c565b62000baa565b6200095c565b9050919050565b62000be78162000bb4565b82525050565b600060208201905062000c04600083018462000bdc565b92915050565b7f4552524f523a5247422d3031323a504152454e545f4e4f545f5245474953544560008201527f5245440000000000000000000000000000000000000000000000000000000000602082015250565b600062000c68602383620009ec565b915062000c758262000c0a565b604082019050919050565b6000602082019050818103600083015262000c9b8162000c59565b9050919050565b7f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f414360008201527f5449564154454400000000000000000000000000000000000000000000000000602082015250565b600062000d00602783620009ec565b915062000d0d8262000ca2565b604082019050919050565b6000602082019050818103600083015262000d338162000cf1565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d808262000d3a565b915062000d8d8362000d3a565b925082820390508181111562000da85762000da762000d44565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160008201527f53494e4700000000000000000000000000000000000000000000000000000000602082015250565b600062000e3b602483620009ec565b915062000e488262000ddd565b604082019050919050565b6000602082019050818103600083015262000e6e8162000e2c565b9050919050565b600062ffffff82169050919050565b600062000ea562000e9f62000e998462000e75565b62000baa565b62000e75565b9050919050565b62000eb78162000e84565b82525050565b62000ec88162000917565b82525050565b600060608201905062000ee5600083018662000eac565b62000ef4602083018562000ebd565b62000f03604083018462000ebd565b949350505050565b6000819050919050565b600062000f3662000f3062000f2a8462000f0b565b62000baa565b62000d3a565b9050919050565b62000f488162000f15565b82525050565b6000819050919050565b600062000f7962000f7362000f6d8462000f4e565b62000baa565b62000d3a565b9050919050565b62000f8b8162000f58565b82525050565b600060608201905062000fa8600083018662000f3d565b62000fb7602083018562000f80565b62000fc6604083018462000f80565b949350505050565b62000fd98162000e75565b811462000fe557600080fd5b50565b60008151905062000ff98162000fce565b92915050565b600060208284031215620010185762001017620008f2565b5b6000620010288482850162000fe8565b91505092915050565b600063ffffffff82169050919050565b6000620010626200105c620010568462001031565b62000baa565b62001031565b9050919050565b620010748162001041565b82525050565b600060208201905062001091600083018462001069565b92915050565b620010a28162000d3a565b8114620010ae57600080fd5b50565b600081519050620010c28162001097565b92915050565b600060208284031215620010e157620010e0620008f2565b5b6000620010f184828501620010b1565b91505092915050565b60805160a05160c051611b63620011466000396000610973015260006106630152600081816105c0015281816107f70152818161081f015281816108c1015261099c0152611b636000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634d459c90116100a2578063946dfcfe11610071578063946dfcfe146102ae5780639555c4db146102cc578063a3f4df7e146102e8578063b88da75914610306578063cde749f4146103365761010b565b80634d459c90146102245780635ab1bd5314610254578063644c45e014610272578063893d20e8146102905761010b565b806317d7de7c116100de57806317d7de7c146101ac5780631aa3a008146101ca57806331b62a3b146101e85780633bc5de30146102065761010b565b806301ffc9a7146101105780630abd8434146101405780630d8e6e2c1461017057806315dae03e1461018e575b600080fd5b61012a60048036038101906101259190611041565b610354565b6040516101379190611089565b60405180910390f35b61015a600480360381019061015591906110df565b6103bb565b6040516101679190611089565b60405180910390f35b610178610476565b6040516101859190611147565b60405180910390f35b6101966104fb565b6040516101a391906111a0565b60405180910390f35b6101b461050a565b6040516101c1919061124b565b60405180910390f35b6101d2610547565b6040516101df91906112b6565b60405180910390f35b6101f061065f565b6040516101fd91906112b6565b60405180910390f35b61020e610687565b60405161021b9190611326565b60405180910390f35b61023e600480360381019061023991906110df565b61069e565b60405161024b9190611483565b60405180910390f35b61025c6107f3565b60405161026991906114f3565b60405180910390f35b61027a61081b565b60405161028791906112b6565b60405180910390f35b6102986108bc565b6040516102a5919061151d565b60405180910390f35b6102b6610a3b565b6040516102c39190611551565b60405180910390f35b6102e660048036038101906102e19190611598565b610a48565b005b6102f0610a56565b6040516102fd919061124b565b60405180910390f35b610320600480360381019061031b9190611604565b610a8f565b60405161032d9190611147565b60405180910390f35b61033e610ad1565b60405161034b9190611640565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600080600160008462ffffff1662ffffff16815260200190815260200160002060010160199054906101000a900463ffffffff1663ffffffff1673__$5f476116ae21c5294e0c0761c07efa7e1c$__636effeac490916040518263ffffffff1660e01b815260040161042d919061166a565b602060405180830381865af415801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e919061169a565b119050919050565b600073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__632efe011360036000806040518463ffffffff1660e01b81526004016104b59392919061173d565b602060405180830381865af41580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f69190611789565b905090565b6000610505610bc5565b905090565b60606040518060400160405280600b81526020017f5465737453657276696365000000000000000000000000000000000000000000815250905090565b60006105516108bc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590611802565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401610617919061151d565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061184e565b905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b606060405180602001604052806000815250905090565b6106a6610f77565b600160008362ffffff1662ffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900464ffffffffff1664ffffffffff1664ffffffffff1681526020016001820160199054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b8152600401610876919061151d565b602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b7919061184e565b905090565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b8152600401610918919061151d565b602060405180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610959919061184e565b905061096c81610967610bd6565b610bdb565b1561099a577f0000000000000000000000000000000000000000000000000000000000000000915050610a38565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663df33330b826040518263ffffffff1660e01b81526004016109f391906112b6565b602060405180830381865afa158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a349190611890565b9150505b90565b6000600280549050905090565b610a528282610c04565b5050565b6040518060400160405280600b81526020017f546573745365727669636500000000000000000000000000000000000000000081525081565b600060028281548110610aa557610aa46118bd565b5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b60003073ffffffffffffffffffffffffffffffffffffffff16630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190611789565b62ffffff1673__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63c9e66e2990916040518263ffffffff1660e01b8152600401610b7f91906118fb565b602060405180830381865af4158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190611942565b905090565b6000610bd16028610f22565b905090565b600090565b6000816bffffffffffffffffffffffff16836bffffffffffffffffffffffff1614905092915050565b6000610c0e610476565b9050610c19816103bb565b15610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c50906119e1565b60405180910390fd5b60006002805490501115610d0057600060026001600280549050610c7d9190611a30565b81548110610c8e57610c8d6118bd565b5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050610cbf8282610f2c565b610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590611ad6565b60405180910390fd5b505b60028190806001815401808255809150506001900390600052602060002090600a91828204019190066003029091909190916101000a81548162ffffff021916908362ffffff1602179055506040518060a001604052808262ffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001610da2610f43565b64ffffffffff168152602001610db6610f53565b63ffffffff16815250600160008362ffffff1662ffffff16815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548163ffffffff021916908363ffffffff1602179055509050507f68e7327fca0057a787cde34ababb9ef9844ba8065ee03e8781d8122fc15d4419818484604051610f1593929190611af6565b60405180910390a1505050565b6000819050919050565b60008162ffffff168362ffffff1611905092915050565b6000610f4e42610f63565b905090565b6000610f5e43610f6d565b905090565b6000819050919050565b6000819050919050565b6040518060a00160405280600062ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600064ffffffffff168152602001600063ffffffff1681525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61101e81610fe9565b811461102957600080fd5b50565b60008135905061103b81611015565b92915050565b60006020828403121561105757611056610fe4565b5b60006110658482850161102c565b91505092915050565b60008115159050919050565b6110838161106e565b82525050565b600060208201905061109e600083018461107a565b92915050565b600062ffffff82169050919050565b6110bc816110a4565b81146110c757600080fd5b50565b6000813590506110d9816110b3565b92915050565b6000602082840312156110f5576110f4610fe4565b5b6000611103848285016110ca565b91505092915050565b6000819050919050565b600061113161112c611127846110a4565b61110c565b6110a4565b9050919050565b61114181611116565b82525050565b600060208201905061115c6000830184611138565b92915050565b600060ff82169050919050565b600061118a61118561118084611162565b61110c565b611162565b9050919050565b61119a8161116f565b82525050565b60006020820190506111b56000830184611191565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156111f55780820151818401526020810190506111da565b60008484015250505050565b6000601f19601f8301169050919050565b600061121d826111bb565b61122781856111c6565b93506112378185602086016111d7565b61124081611201565b840191505092915050565b600060208201905081810360008301526112658184611212565b905092915050565b60006bffffffffffffffffffffffff82169050919050565b60006112a061129b6112968461126d565b61110c565b61126d565b9050919050565b6112b081611285565b82525050565b60006020820190506112cb60008301846112a7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006112f8826112d1565b61130281856112dc565b93506113128185602086016111d7565b61131b81611201565b840191505092915050565b6000602082019050818103600083015261134081846112ed565b905092915050565b61135181611116565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061138282611357565b9050919050565b61139281611377565b82525050565b600064ffffffffff82169050919050565b60006113c46113bf6113ba84611398565b61110c565b611398565b9050919050565b6113d4816113a9565b82525050565b600063ffffffff82169050919050565b60006114056114006113fb846113da565b61110c565b6113da565b9050919050565b611415816113ea565b82525050565b60a0820160008201516114316000850182611348565b5060208201516114446020850182611389565b5060408201516114576040850182611389565b50606082015161146a60608501826113cb565b50608082015161147d608085018261140c565b50505050565b600060a082019050611498600083018461141b565b92915050565b60006114b96114b46114af84611357565b61110c565b611357565b9050919050565b60006114cb8261149e565b9050919050565b60006114dd826114c0565b9050919050565b6114ed816114d2565b82525050565b600060208201905061150860008301846114e4565b92915050565b61151781611377565b82525050565b6000602082019050611532600083018461150e565b92915050565b6000819050919050565b61154b81611538565b82525050565b60006020820190506115666000830184611542565b92915050565b61157581611377565b811461158057600080fd5b50565b6000813590506115928161156c565b92915050565b600080604083850312156115af576115ae610fe4565b5b60006115bd85828601611583565b92505060206115ce85828601611583565b9150509250929050565b6115e181611538565b81146115ec57600080fd5b50565b6000813590506115fe816115d8565b92915050565b60006020828403121561161a57611619610fe4565b5b6000611628848285016115ef565b91505092915050565b61163a8161116f565b82525050565b60006020820190506116556000830184611631565b92915050565b611664816113ea565b82525050565b600060208201905061167f600083018461165b565b92915050565b600081519050611694816115d8565b92915050565b6000602082840312156116b0576116af610fe4565b5b60006116be84828501611685565b91505092915050565b6000819050919050565b60006116ec6116e76116e2846116c7565b61110c565b611538565b9050919050565b6116fc816116d1565b82525050565b6000819050919050565b600061172761172261171d84611702565b61110c565b611538565b9050919050565b6117378161170c565b82525050565b600060608201905061175260008301866116f3565b61175f602083018561172e565b61176c604083018461172e565b949350505050565b600081519050611783816110b3565b92915050565b60006020828403121561179f5761179e610fe4565b5b60006117ad84828501611774565b91505092915050565b7f4552524f523a5247422d3030313a4e4f545f4f574e4552000000000000000000600082015250565b60006117ec6017836111c6565b91506117f7826117b6565b602082019050919050565b6000602082019050818103600083015261181b816117df565b9050919050565b61182b8161126d565b811461183657600080fd5b50565b60008151905061184881611822565b92915050565b60006020828403121561186457611863610fe4565b5b600061187284828501611839565b91505092915050565b60008151905061188a8161156c565b92915050565b6000602082840312156118a6576118a5610fe4565b5b60006118b48482850161187b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6118f581611116565b82525050565b600060208201905061191060008301846118ec565b92915050565b61191f81611162565b811461192a57600080fd5b50565b60008151905061193c81611916565b92915050565b60006020828403121561195857611957610fe4565b5b60006119668482850161192d565b91505092915050565b7f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f414360008201527f5449564154454400000000000000000000000000000000000000000000000000602082015250565b60006119cb6027836111c6565b91506119d68261196f565b604082019050919050565b600060208201905081810360008301526119fa816119be565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a3b82611538565b9150611a4683611538565b9250828203905081811115611a5e57611a5d611a01565b5b92915050565b7f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160008201527f53494e4700000000000000000000000000000000000000000000000000000000602082015250565b6000611ac06024836111c6565b9150611acb82611a64565b604082019050919050565b60006020820190508181036000830152611aef81611ab3565b9050919050565b6000606082019050611b0b6000830186611138565b611b18602083018561150e565b611b25604083018461150e565b94935050505056fea26469706673582212203fb9d6865c3e3daaa25a9a5baa45a2f837c49adefa2f18e3759f6f8ab0174fab64736f6c63430008140033",
326
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80634d459c90116100a2578063946dfcfe11610071578063946dfcfe146102ae5780639555c4db146102cc578063a3f4df7e146102e8578063b88da75914610306578063cde749f4146103365761010b565b80634d459c90146102245780635ab1bd5314610254578063644c45e014610272578063893d20e8146102905761010b565b806317d7de7c116100de57806317d7de7c146101ac5780631aa3a008146101ca57806331b62a3b146101e85780633bc5de30146102065761010b565b806301ffc9a7146101105780630abd8434146101405780630d8e6e2c1461017057806315dae03e1461018e575b600080fd5b61012a60048036038101906101259190611041565b610354565b6040516101379190611089565b60405180910390f35b61015a600480360381019061015591906110df565b6103bb565b6040516101679190611089565b60405180910390f35b610178610476565b6040516101859190611147565b60405180910390f35b6101966104fb565b6040516101a391906111a0565b60405180910390f35b6101b461050a565b6040516101c1919061124b565b60405180910390f35b6101d2610547565b6040516101df91906112b6565b60405180910390f35b6101f061065f565b6040516101fd91906112b6565b60405180910390f35b61020e610687565b60405161021b9190611326565b60405180910390f35b61023e600480360381019061023991906110df565b61069e565b60405161024b9190611483565b60405180910390f35b61025c6107f3565b60405161026991906114f3565b60405180910390f35b61027a61081b565b60405161028791906112b6565b60405180910390f35b6102986108bc565b6040516102a5919061151d565b60405180910390f35b6102b6610a3b565b6040516102c39190611551565b60405180910390f35b6102e660048036038101906102e19190611598565b610a48565b005b6102f0610a56565b6040516102fd919061124b565b60405180910390f35b610320600480360381019061031b9190611604565b610a8f565b60405161032d9190611147565b60405180910390f35b61033e610ad1565b60405161034b9190611640565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600080600160008462ffffff1662ffffff16815260200190815260200160002060010160199054906101000a900463ffffffff1663ffffffff1673__$5f476116ae21c5294e0c0761c07efa7e1c$__636effeac490916040518263ffffffff1660e01b815260040161042d919061166a565b602060405180830381865af415801561044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046e919061169a565b119050919050565b600073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__632efe011360036000806040518463ffffffff1660e01b81526004016104b59392919061173d565b602060405180830381865af41580156104d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f69190611789565b905090565b6000610505610bc5565b905090565b60606040518060400160405280600b81526020017f5465737453657276696365000000000000000000000000000000000000000000815250905090565b60006105516108bc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590611802565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401610617919061151d565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061184e565b905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b606060405180602001604052806000815250905090565b6106a6610f77565b600160008362ffffff1662ffffff1681526020019081526020016000206040518060a00160405290816000820160009054906101000a900462ffffff1662ffffff1662ffffff1681526020016000820160039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900464ffffffffff1664ffffffffff1664ffffffffff1681526020016001820160199054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b8152600401610876919061151d565b602060405180830381865afa158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b7919061184e565b905090565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d272ac1e306040518263ffffffff1660e01b8152600401610918919061151d565b602060405180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610959919061184e565b905061096c81610967610bd6565b610bdb565b1561099a577f0000000000000000000000000000000000000000000000000000000000000000915050610a38565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663df33330b826040518263ffffffff1660e01b81526004016109f391906112b6565b602060405180830381865afa158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a349190611890565b9150505b90565b6000600280549050905090565b610a528282610c04565b5050565b6040518060400160405280600b81526020017f546573745365727669636500000000000000000000000000000000000000000081525081565b600060028281548110610aa557610aa46118bd565b5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b60003073ffffffffffffffffffffffffffffffffffffffff16630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b429190611789565b62ffffff1673__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63c9e66e2990916040518263ffffffff1660e01b8152600401610b7f91906118fb565b602060405180830381865af4158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190611942565b905090565b6000610bd16028610f22565b905090565b600090565b6000816bffffffffffffffffffffffff16836bffffffffffffffffffffffff1614905092915050565b6000610c0e610476565b9050610c19816103bb565b15610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c50906119e1565b60405180910390fd5b60006002805490501115610d0057600060026001600280549050610c7d9190611a30565b81548110610c8e57610c8d6118bd565b5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050610cbf8282610f2c565b610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf590611ad6565b60405180910390fd5b505b60028190806001815401808255809150506001900390600052602060002090600a91828204019190066003029091909190916101000a81548162ffffff021916908362ffffff1602179055506040518060a001604052808262ffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001610da2610f43565b64ffffffffff168152602001610db6610f53565b63ffffffff16815250600160008362ffffff1662ffffff16815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160196101000a81548163ffffffff021916908363ffffffff1602179055509050507f68e7327fca0057a787cde34ababb9ef9844ba8065ee03e8781d8122fc15d4419818484604051610f1593929190611af6565b60405180910390a1505050565b6000819050919050565b60008162ffffff168362ffffff1611905092915050565b6000610f4e42610f63565b905090565b6000610f5e43610f6d565b905090565b6000819050919050565b6000819050919050565b6040518060a00160405280600062ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600064ffffffffff168152602001600063ffffffff1681525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61101e81610fe9565b811461102957600080fd5b50565b60008135905061103b81611015565b92915050565b60006020828403121561105757611056610fe4565b5b60006110658482850161102c565b91505092915050565b60008115159050919050565b6110838161106e565b82525050565b600060208201905061109e600083018461107a565b92915050565b600062ffffff82169050919050565b6110bc816110a4565b81146110c757600080fd5b50565b6000813590506110d9816110b3565b92915050565b6000602082840312156110f5576110f4610fe4565b5b6000611103848285016110ca565b91505092915050565b6000819050919050565b600061113161112c611127846110a4565b61110c565b6110a4565b9050919050565b61114181611116565b82525050565b600060208201905061115c6000830184611138565b92915050565b600060ff82169050919050565b600061118a61118561118084611162565b61110c565b611162565b9050919050565b61119a8161116f565b82525050565b60006020820190506111b56000830184611191565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156111f55780820151818401526020810190506111da565b60008484015250505050565b6000601f19601f8301169050919050565b600061121d826111bb565b61122781856111c6565b93506112378185602086016111d7565b61124081611201565b840191505092915050565b600060208201905081810360008301526112658184611212565b905092915050565b60006bffffffffffffffffffffffff82169050919050565b60006112a061129b6112968461126d565b61110c565b61126d565b9050919050565b6112b081611285565b82525050565b60006020820190506112cb60008301846112a7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006112f8826112d1565b61130281856112dc565b93506113128185602086016111d7565b61131b81611201565b840191505092915050565b6000602082019050818103600083015261134081846112ed565b905092915050565b61135181611116565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061138282611357565b9050919050565b61139281611377565b82525050565b600064ffffffffff82169050919050565b60006113c46113bf6113ba84611398565b61110c565b611398565b9050919050565b6113d4816113a9565b82525050565b600063ffffffff82169050919050565b60006114056114006113fb846113da565b61110c565b6113da565b9050919050565b611415816113ea565b82525050565b60a0820160008201516114316000850182611348565b5060208201516114446020850182611389565b5060408201516114576040850182611389565b50606082015161146a60608501826113cb565b50608082015161147d608085018261140c565b50505050565b600060a082019050611498600083018461141b565b92915050565b60006114b96114b46114af84611357565b61110c565b611357565b9050919050565b60006114cb8261149e565b9050919050565b60006114dd826114c0565b9050919050565b6114ed816114d2565b82525050565b600060208201905061150860008301846114e4565b92915050565b61151781611377565b82525050565b6000602082019050611532600083018461150e565b92915050565b6000819050919050565b61154b81611538565b82525050565b60006020820190506115666000830184611542565b92915050565b61157581611377565b811461158057600080fd5b50565b6000813590506115928161156c565b92915050565b600080604083850312156115af576115ae610fe4565b5b60006115bd85828601611583565b92505060206115ce85828601611583565b9150509250929050565b6115e181611538565b81146115ec57600080fd5b50565b6000813590506115fe816115d8565b92915050565b60006020828403121561161a57611619610fe4565b5b6000611628848285016115ef565b91505092915050565b61163a8161116f565b82525050565b60006020820190506116556000830184611631565b92915050565b611664816113ea565b82525050565b600060208201905061167f600083018461165b565b92915050565b600081519050611694816115d8565b92915050565b6000602082840312156116b0576116af610fe4565b5b60006116be84828501611685565b91505092915050565b6000819050919050565b60006116ec6116e76116e2846116c7565b61110c565b611538565b9050919050565b6116fc816116d1565b82525050565b6000819050919050565b600061172761172261171d84611702565b61110c565b611538565b9050919050565b6117378161170c565b82525050565b600060608201905061175260008301866116f3565b61175f602083018561172e565b61176c604083018461172e565b949350505050565b600081519050611783816110b3565b92915050565b60006020828403121561179f5761179e610fe4565b5b60006117ad84828501611774565b91505092915050565b7f4552524f523a5247422d3030313a4e4f545f4f574e4552000000000000000000600082015250565b60006117ec6017836111c6565b91506117f7826117b6565b602082019050919050565b6000602082019050818103600083015261181b816117df565b9050919050565b61182b8161126d565b811461183657600080fd5b50565b60008151905061184881611822565b92915050565b60006020828403121561186457611863610fe4565b5b600061187284828501611839565b91505092915050565b60008151905061188a8161156c565b92915050565b6000602082840312156118a6576118a5610fe4565b5b60006118b48482850161187b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6118f581611116565b82525050565b600060208201905061191060008301846118ec565b92915050565b61191f81611162565b811461192a57600080fd5b50565b60008151905061193c81611916565b92915050565b60006020828403121561195857611957610fe4565b5b60006119668482850161192d565b91505092915050565b7f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f414360008201527f5449564154454400000000000000000000000000000000000000000000000000602082015250565b60006119cb6027836111c6565b91506119d68261196f565b604082019050919050565b600060208201905081810360008301526119fa816119be565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a3b82611538565b9150611a4683611538565b9250828203905081811115611a5e57611a5d611a01565b5b92915050565b7f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160008201527f53494e4700000000000000000000000000000000000000000000000000000000602082015250565b6000611ac06024836111c6565b9150611acb82611a64565b604082019050919050565b60006020820190508181036000830152611aef81611ab3565b9050919050565b6000606082019050611b0b6000830186611138565b611b18602083018561150e565b611b25604083018461150e565b94935050505056fea26469706673582212203fb9d6865c3e3daaa25a9a5baa45a2f837c49adefa2f18e3759f6f8ab0174fab64736f6c63430008140033",
327
+ "linkReferences": {
328
+ "contracts/types/Blocknumber.sol": {
329
+ "BlocknumberLib": [
330
+ {
331
+ "length": 20,
332
+ "start": 2067
333
+ },
334
+ {
335
+ "length": 20,
336
+ "start": 5437
337
+ }
338
+ ]
339
+ },
340
+ "contracts/types/Version.sol": {
341
+ "VersionLib": [
342
+ {
343
+ "length": 20,
344
+ "start": 1873
345
+ },
346
+ {
347
+ "length": 20,
348
+ "start": 5568
349
+ },
350
+ {
351
+ "length": 20,
352
+ "start": 7311
353
+ }
354
+ ]
355
+ }
356
+ },
357
+ "deployedLinkReferences": {
358
+ "contracts/types/Blocknumber.sol": {
359
+ "BlocknumberLib": [
360
+ {
361
+ "length": 20,
362
+ "start": 1015
363
+ }
364
+ ]
365
+ },
366
+ "contracts/types/Version.sol": {
367
+ "VersionLib": [
368
+ {
369
+ "length": 20,
370
+ "start": 1146
371
+ },
372
+ {
373
+ "length": 20,
374
+ "start": 2889
375
+ }
376
+ ]
377
+ }
378
+ }
379
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/746f2ad7b0d888e05db828a61f6d5e10.json"
4
+ }