@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7c17b4-297

Sign up to get free protection for your applications and to get access to all the features.
Files changed (456) hide show
  1. package/README.md +243 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +928 -175
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +153 -174
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +701 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +797 -76
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +567 -34
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +995 -260
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +710 -157
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1451 -1206
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → IInstanceService.sol/IInstanceService.json} +199 -182
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2088 -1373
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1391 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +192 -195
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +473 -168
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +30 -255
  89. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +41 -419
  91. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  93. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  95. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +227 -264
  97. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  99. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +233 -535
  101. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +236 -63
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +312 -178
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +210 -212
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +424 -255
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -122
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  122. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  132. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  134. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +51 -47
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  146. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  147. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +147 -154
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  151. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  153. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  155. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -215
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  169. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  170. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  171. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  185. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  186. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  188. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  190. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  192. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  194. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  196. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  198. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  200. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  202. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  204. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  205. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  208. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  210. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  212. package/contracts/components/Component.sol +221 -0
  213. package/contracts/components/Distribution.sol +214 -61
  214. package/contracts/components/IComponent.sol +68 -0
  215. package/contracts/components/IDistributionComponent.sol +59 -5
  216. package/contracts/components/IPoolComponent.sol +126 -39
  217. package/contracts/components/IProductComponent.sol +12 -9
  218. package/contracts/components/Pool.sol +290 -158
  219. package/contracts/components/Product.sol +134 -140
  220. package/contracts/instance/BundleManager.sol +125 -0
  221. package/contracts/instance/Cloneable.sol +46 -0
  222. package/contracts/instance/IInstance.sol +84 -46
  223. package/contracts/instance/IInstanceService.sol +59 -0
  224. package/contracts/instance/Instance.sol +273 -69
  225. package/contracts/instance/InstanceAccessManager.sol +297 -0
  226. package/contracts/instance/InstanceReader.sol +293 -0
  227. package/contracts/instance/InstanceService.sol +490 -0
  228. package/contracts/instance/InstanceServiceManager.sol +54 -0
  229. package/contracts/instance/ObjectManager.sol +84 -0
  230. package/contracts/instance/base/ComponentService.sol +134 -0
  231. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  232. package/contracts/instance/base/ILifecycle.sol +3 -3
  233. package/contracts/instance/base/KeyValueStore.sol +49 -38
  234. package/contracts/instance/base/Lifecycle.sol +1 -1
  235. package/contracts/instance/module/IAccess.sol +47 -0
  236. package/contracts/instance/module/IBundle.sol +21 -0
  237. package/contracts/instance/module/IDistribution.sol +39 -0
  238. package/contracts/instance/module/IPolicy.sol +48 -0
  239. package/contracts/instance/module/IRisk.sol +11 -0
  240. package/contracts/instance/module/ISetup.sol +48 -0
  241. package/contracts/instance/module/ITreasury.sol +23 -0
  242. package/contracts/instance/service/ApplicationService.sol +269 -0
  243. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  244. package/contracts/instance/service/BundleService.sol +299 -0
  245. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  246. package/contracts/instance/service/ClaimService.sol +151 -0
  247. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  248. package/contracts/instance/service/DistributionService.sol +244 -21
  249. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  250. package/contracts/instance/service/IApplicationService.sol +83 -0
  251. package/contracts/instance/service/IBundleService.sol +55 -0
  252. package/contracts/instance/service/IClaimService.sol +61 -0
  253. package/contracts/instance/service/IDistributionService.sol +54 -1
  254. package/contracts/instance/service/IPolicyService.sol +90 -0
  255. package/contracts/instance/service/IPoolService.sol +7 -24
  256. package/contracts/instance/service/IProductService.sol +9 -76
  257. package/contracts/instance/service/PolicyService.sol +476 -0
  258. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  259. package/contracts/instance/service/PoolService.sol +77 -117
  260. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  261. package/contracts/instance/service/ProductService.sol +156 -433
  262. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  263. package/contracts/registry/ChainNft.sol +41 -26
  264. package/contracts/registry/IRegistry.sol +51 -25
  265. package/contracts/registry/IRegistryService.sol +54 -16
  266. package/contracts/registry/Registry.sol +279 -306
  267. package/contracts/registry/RegistryAccessManager.sol +216 -0
  268. package/contracts/registry/RegistryService.sol +162 -247
  269. package/contracts/registry/RegistryServiceManager.sol +30 -11
  270. package/contracts/registry/ReleaseManager.sol +322 -0
  271. package/contracts/registry/TokenRegistry.sol +116 -0
  272. package/contracts/shared/ERC165.sol +15 -9
  273. package/contracts/shared/INftOwnable.sol +11 -10
  274. package/contracts/shared/IPolicyHolder.sol +26 -0
  275. package/contracts/shared/IRegisterable.sol +4 -6
  276. package/contracts/shared/IRegistryLinked.sol +12 -0
  277. package/contracts/shared/IService.sol +16 -0
  278. package/contracts/shared/IVersionable.sol +4 -47
  279. package/contracts/shared/NftOwnable.sol +67 -83
  280. package/contracts/shared/PolicyHolder.sol +81 -0
  281. package/contracts/shared/ProxyManager.sol +101 -26
  282. package/contracts/shared/Registerable.sol +17 -32
  283. package/contracts/shared/RegistryLinked.sol +48 -0
  284. package/contracts/shared/Service.sol +58 -0
  285. package/contracts/shared/TokenHandler.sol +27 -0
  286. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  287. package/contracts/shared/Versionable.sol +5 -93
  288. package/contracts/test/TestFee.sol +2 -2
  289. package/contracts/test/TestRegisterable.sol +1 -1
  290. package/contracts/test/TestRoleId.sol +1 -1
  291. package/contracts/test/TestService.sol +6 -7
  292. package/contracts/types/ClaimId.sol +52 -0
  293. package/contracts/types/DistributorType.sol +55 -0
  294. package/contracts/types/Fee.sol +3 -3
  295. package/contracts/types/Key32.sol +8 -3
  296. package/contracts/types/NftIdSet.sol +26 -24
  297. package/contracts/types/NumberId.sol +52 -0
  298. package/contracts/types/ObjectType.sol +39 -14
  299. package/contracts/types/PayoutId.sol +54 -0
  300. package/contracts/types/Referral.sol +85 -0
  301. package/contracts/types/RoleId.sol +66 -9
  302. package/contracts/types/Seconds.sol +54 -0
  303. package/contracts/types/StateId.sol +5 -1
  304. package/contracts/types/Timestamp.sol +16 -13
  305. package/contracts/types/UFixed.sol +128 -12
  306. package/contracts/types/Version.sol +4 -1
  307. package/package.json +6 -5
  308. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  309. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  310. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  313. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  315. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  317. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  319. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  321. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  323. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  327. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  330. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  332. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  336. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  338. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  340. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  342. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  343. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  345. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  346. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  347. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  348. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  350. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  351. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  354. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  356. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  358. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  359. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  360. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  363. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  365. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  367. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  370. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  373. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  376. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  378. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  380. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  382. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  384. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  387. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  389. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  392. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  394. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  396. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  398. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  399. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  401. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  402. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  403. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  404. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  405. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  406. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  407. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  408. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  409. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  410. package/contracts/components/BaseComponent.sol +0 -79
  411. package/contracts/components/IBaseComponent.sol +0 -19
  412. package/contracts/experiment/errors/Require.sol +0 -38
  413. package/contracts/experiment/errors/Revert.sol +0 -44
  414. package/contracts/experiment/inheritance/A.sol +0 -53
  415. package/contracts/experiment/inheritance/B.sol +0 -28
  416. package/contracts/experiment/inheritance/C.sol +0 -34
  417. package/contracts/experiment/inheritance/IA.sol +0 -13
  418. package/contracts/experiment/inheritance/IB.sol +0 -10
  419. package/contracts/experiment/inheritance/IC.sol +0 -12
  420. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  421. package/contracts/experiment/statemachine/ISM.sol +0 -25
  422. package/contracts/experiment/statemachine/SM.sol +0 -57
  423. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  424. package/contracts/experiment/types/TypeA.sol +0 -47
  425. package/contracts/experiment/types/TypeB.sol +0 -29
  426. package/contracts/instance/IInstanceLinked.sol +0 -8
  427. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  428. package/contracts/instance/base/IInstanceBase.sol +0 -23
  429. package/contracts/instance/base/IService.sol +0 -15
  430. package/contracts/instance/base/InstanceBase.sol +0 -89
  431. package/contracts/instance/base/ModuleBase.sol +0 -57
  432. package/contracts/instance/base/ServiceBase.sol +0 -44
  433. package/contracts/instance/module/access/Access.sol +0 -149
  434. package/contracts/instance/module/access/IAccess.sol +0 -53
  435. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  436. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  437. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  438. package/contracts/instance/module/component/IComponent.sol +0 -28
  439. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  440. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  441. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  442. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  443. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  444. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  445. package/contracts/instance/module/risk/IRisk.sol +0 -26
  446. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  447. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  448. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  449. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  450. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  451. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  452. package/contracts/registry/IChainNft.sol +0 -22
  453. package/contracts/test/TestDistribution.sol +0 -22
  454. package/contracts/test/TestPool.sol +0 -27
  455. package/contracts/test/TestProduct.sol +0 -74
  456. package/contracts/types/ReferralId.sol +0 -48
@@ -7,102 +7,124 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "address",
10
- "name": "registry",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "NftId",
15
- "name": "registryNftId",
16
- "type": "uint96"
17
- },
18
- {
19
- "internalType": "address",
20
- "name": "initialOwner",
10
+ "name": "authority",
21
11
  "type": "address"
22
12
  }
23
13
  ],
24
- "stateMutability": "nonpayable",
25
- "type": "constructor"
14
+ "name": "AccessManagedInvalidAuthority",
15
+ "type": "error"
26
16
  },
27
17
  {
28
18
  "inputs": [
29
19
  {
30
20
  "internalType": "address",
31
- "name": "registry",
21
+ "name": "caller",
32
22
  "type": "address"
33
23
  },
34
24
  {
35
- "internalType": "NftId",
36
- "name": "nftId",
37
- "type": "uint96"
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
38
28
  }
39
29
  ],
40
- "name": "ErrorAlreadyLinked",
30
+ "name": "AccessManagedRequiredDelay",
41
31
  "type": "error"
42
32
  },
43
33
  {
44
34
  "inputs": [
45
35
  {
46
36
  "internalType": "address",
47
- "name": "contractAddress",
37
+ "name": "caller",
48
38
  "type": "address"
49
39
  }
50
40
  ],
51
- "name": "ErrorContractNotRegistered",
41
+ "name": "AccessManagedUnauthorized",
52
42
  "type": "error"
53
43
  },
54
44
  {
55
45
  "inputs": [
56
46
  {
57
- "internalType": "address",
58
- "name": "account",
59
- "type": "address"
47
+ "internalType": "ObjectType",
48
+ "name": "objectType",
49
+ "type": "uint8"
50
+ },
51
+ {
52
+ "internalType": "StateId",
53
+ "name": "fromStateId",
54
+ "type": "uint8"
55
+ },
56
+ {
57
+ "internalType": "StateId",
58
+ "name": "toStateId",
59
+ "type": "uint8"
60
60
  }
61
61
  ],
62
- "name": "ErrorNotOwner",
62
+ "name": "ErrorInvalidStateTransition",
63
63
  "type": "error"
64
64
  },
65
65
  {
66
66
  "inputs": [
67
67
  {
68
- "internalType": "address",
69
- "name": "registryAddress",
70
- "type": "address"
68
+ "internalType": "NftId",
69
+ "name": "nftId",
70
+ "type": "uint96"
71
71
  }
72
72
  ],
73
- "name": "ErrorNotRegistry",
73
+ "name": "ErrorNftOwnableAlreadyLinked",
74
74
  "type": "error"
75
75
  },
76
76
  {
77
77
  "inputs": [
78
78
  {
79
79
  "internalType": "address",
80
- "name": "registryAddress",
80
+ "name": "contractAddress",
81
81
  "type": "address"
82
82
  }
83
83
  ],
84
- "name": "ErrorRegisterableNotRegistry",
84
+ "name": "ErrorNftOwnableContractNotRegistered",
85
85
  "type": "error"
86
86
  },
87
87
  {
88
88
  "inputs": [],
89
- "name": "ErrorRegistryAddressZero",
89
+ "name": "ErrorNftOwnableInitialOwnerZero",
90
90
  "type": "error"
91
91
  },
92
92
  {
93
93
  "inputs": [
94
94
  {
95
95
  "internalType": "address",
96
- "name": "registry",
96
+ "name": "account",
97
97
  "type": "address"
98
98
  }
99
99
  ],
100
- "name": "ErrorRegistryAlreadyInitialized",
100
+ "name": "ErrorNftOwnableNotOwner",
101
101
  "type": "error"
102
102
  },
103
103
  {
104
- "inputs": [],
105
- "name": "ErrorRegistryNotInitialized",
104
+ "inputs": [
105
+ {
106
+ "internalType": "NftId",
107
+ "name": "nftId",
108
+ "type": "uint96"
109
+ },
110
+ {
111
+ "internalType": "ObjectType",
112
+ "name": "objectType",
113
+ "type": "uint8"
114
+ }
115
+ ],
116
+ "name": "ErrorNoLifecycle",
117
+ "type": "error"
118
+ },
119
+ {
120
+ "inputs": [
121
+ {
122
+ "internalType": "address",
123
+ "name": "registryAddress",
124
+ "type": "address"
125
+ }
126
+ ],
127
+ "name": "ErrorNotRegistry",
106
128
  "type": "error"
107
129
  },
108
130
  {
@@ -120,12 +142,12 @@
120
142
  "inputs": [
121
143
  {
122
144
  "indexed": false,
123
- "internalType": "uint64",
124
- "name": "version",
125
- "type": "uint64"
145
+ "internalType": "address",
146
+ "name": "authority",
147
+ "type": "address"
126
148
  }
127
149
  ],
128
- "name": "Initialized",
150
+ "name": "AuthorityUpdated",
129
151
  "type": "event"
130
152
  },
131
153
  {
@@ -133,18 +155,12 @@
133
155
  "inputs": [
134
156
  {
135
157
  "indexed": false,
136
- "internalType": "RoleId",
137
- "name": "role",
138
- "type": "bytes8"
139
- },
140
- {
141
- "indexed": false,
142
- "internalType": "string",
143
- "name": "roleName",
144
- "type": "string"
158
+ "internalType": "uint64",
159
+ "name": "version",
160
+ "type": "uint64"
145
161
  }
146
162
  ],
147
- "name": "LogAccessRoleCreated",
163
+ "name": "Initialized",
148
164
  "type": "event"
149
165
  },
150
166
  {
@@ -152,24 +168,36 @@
152
168
  "inputs": [
153
169
  {
154
170
  "indexed": false,
155
- "internalType": "RoleId",
156
- "name": "role",
157
- "type": "bytes8"
171
+ "internalType": "ObjectType",
172
+ "name": "objectType",
173
+ "type": "uint8"
174
+ },
175
+ {
176
+ "indexed": false,
177
+ "internalType": "KeyId",
178
+ "name": "keyId",
179
+ "type": "bytes31"
180
+ },
181
+ {
182
+ "indexed": false,
183
+ "internalType": "StateId",
184
+ "name": "state",
185
+ "type": "uint8"
158
186
  },
159
187
  {
160
188
  "indexed": false,
161
189
  "internalType": "address",
162
- "name": "member",
190
+ "name": "createdBy",
163
191
  "type": "address"
164
192
  },
165
193
  {
166
194
  "indexed": false,
167
- "internalType": "bool",
168
- "name": "isMember",
169
- "type": "bool"
195
+ "internalType": "address",
196
+ "name": "txOrigin",
197
+ "type": "address"
170
198
  }
171
199
  ],
172
- "name": "LogAccessRoleGranted",
200
+ "name": "LogInfoCreated",
173
201
  "type": "event"
174
202
  },
175
203
  {
@@ -177,18 +205,42 @@
177
205
  "inputs": [
178
206
  {
179
207
  "indexed": false,
180
- "internalType": "RoleId",
181
- "name": "role",
182
- "type": "bytes8"
208
+ "internalType": "ObjectType",
209
+ "name": "objectType",
210
+ "type": "uint8"
183
211
  },
184
212
  {
185
213
  "indexed": false,
186
- "internalType": "bool",
187
- "name": "active",
188
- "type": "bool"
214
+ "internalType": "KeyId",
215
+ "name": "keyId",
216
+ "type": "bytes31"
217
+ },
218
+ {
219
+ "indexed": false,
220
+ "internalType": "StateId",
221
+ "name": "state",
222
+ "type": "uint8"
223
+ },
224
+ {
225
+ "indexed": false,
226
+ "internalType": "address",
227
+ "name": "updatedBy",
228
+ "type": "address"
229
+ },
230
+ {
231
+ "indexed": false,
232
+ "internalType": "address",
233
+ "name": "txOrigin",
234
+ "type": "address"
235
+ },
236
+ {
237
+ "indexed": false,
238
+ "internalType": "Blocknumber",
239
+ "name": "lastUpdatedIn",
240
+ "type": "uint32"
189
241
  }
190
242
  ],
191
- "name": "LogAccessRoleStateSet",
243
+ "name": "LogInfoUpdated",
192
244
  "type": "event"
193
245
  },
194
246
  {
@@ -196,295 +248,284 @@
196
248
  "inputs": [
197
249
  {
198
250
  "indexed": false,
199
- "internalType": "Version",
200
- "name": "version",
201
- "type": "uint24"
251
+ "internalType": "ObjectType",
252
+ "name": "objectType",
253
+ "type": "uint8"
254
+ },
255
+ {
256
+ "indexed": false,
257
+ "internalType": "KeyId",
258
+ "name": "keyId",
259
+ "type": "bytes31"
260
+ },
261
+ {
262
+ "indexed": false,
263
+ "internalType": "StateId",
264
+ "name": "stateOld",
265
+ "type": "uint8"
266
+ },
267
+ {
268
+ "indexed": false,
269
+ "internalType": "StateId",
270
+ "name": "stateNew",
271
+ "type": "uint8"
202
272
  },
203
273
  {
204
274
  "indexed": false,
205
275
  "internalType": "address",
206
- "name": "implementation",
276
+ "name": "updatedBy",
207
277
  "type": "address"
208
278
  },
209
279
  {
210
280
  "indexed": false,
211
281
  "internalType": "address",
212
- "name": "activatedBy",
282
+ "name": "txOrigin",
213
283
  "type": "address"
284
+ },
285
+ {
286
+ "indexed": false,
287
+ "internalType": "Blocknumber",
288
+ "name": "lastUpdatedIn",
289
+ "type": "uint32"
214
290
  }
215
291
  ],
216
- "name": "LogVersionableInitialized",
292
+ "name": "LogStateUpdated",
217
293
  "type": "event"
218
294
  },
219
295
  {
220
296
  "inputs": [],
221
- "name": "REGISTERABLE_LOCATION_V1",
297
+ "name": "ADMIN_ROLE",
222
298
  "outputs": [
223
299
  {
224
- "internalType": "bytes32",
300
+ "internalType": "uint64",
225
301
  "name": "",
226
- "type": "bytes32"
302
+ "type": "uint64"
227
303
  }
228
304
  ],
229
305
  "stateMutability": "view",
230
306
  "type": "function"
231
307
  },
232
308
  {
233
- "inputs": [
309
+ "inputs": [],
310
+ "name": "CUSTOM_ROLE_ID_MIN",
311
+ "outputs": [
234
312
  {
235
- "internalType": "NftId",
236
- "name": "bundleNftId",
237
- "type": "uint96"
238
- },
313
+ "internalType": "uint64",
314
+ "name": "",
315
+ "type": "uint64"
316
+ }
317
+ ],
318
+ "stateMutability": "view",
319
+ "type": "function"
320
+ },
321
+ {
322
+ "inputs": [],
323
+ "name": "EXECUTION_DELAY",
324
+ "outputs": [
239
325
  {
240
- "internalType": "NftId",
241
- "name": "poolNftId",
242
- "type": "uint96"
243
- },
326
+ "internalType": "uint32",
327
+ "name": "",
328
+ "type": "uint32"
329
+ }
330
+ ],
331
+ "stateMutability": "view",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [],
336
+ "name": "GIF_MAJOR_VERSION",
337
+ "outputs": [
244
338
  {
245
339
  "internalType": "uint256",
246
340
  "name": "",
247
341
  "type": "uint256"
248
342
  }
249
343
  ],
250
- "name": "addBundleToPool",
251
- "outputs": [],
252
- "stateMutability": "nonpayable",
344
+ "stateMutability": "view",
253
345
  "type": "function"
254
346
  },
255
347
  {
256
- "inputs": [
348
+ "inputs": [],
349
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
350
+ "outputs": [
257
351
  {
258
- "internalType": "uint256",
259
- "name": "amount",
260
- "type": "uint256"
261
- },
352
+ "internalType": "bytes32",
353
+ "name": "",
354
+ "type": "bytes32"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
360
+ {
361
+ "inputs": [],
362
+ "name": "PUBLIC_ROLE",
363
+ "outputs": [
262
364
  {
263
- "components": [
264
- {
265
- "internalType": "UFixed",
266
- "name": "fractionalFee",
267
- "type": "uint256"
268
- },
269
- {
270
- "internalType": "uint256",
271
- "name": "fixedFee",
272
- "type": "uint256"
273
- }
274
- ],
275
- "internalType": "struct Fee",
276
- "name": "fee",
277
- "type": "tuple"
365
+ "internalType": "uint64",
366
+ "name": "",
367
+ "type": "uint64"
278
368
  }
279
369
  ],
280
- "name": "calculateFeeAmount",
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
373
+ {
374
+ "inputs": [],
375
+ "name": "REGISTERABLE_LOCATION_V1",
281
376
  "outputs": [
282
377
  {
283
- "internalType": "uint256",
284
- "name": "feeAmount",
285
- "type": "uint256"
286
- },
378
+ "internalType": "bytes32",
379
+ "name": "",
380
+ "type": "bytes32"
381
+ }
382
+ ],
383
+ "stateMutability": "view",
384
+ "type": "function"
385
+ },
386
+ {
387
+ "inputs": [],
388
+ "name": "authority",
389
+ "outputs": [
287
390
  {
288
- "internalType": "uint256",
289
- "name": "netAmount",
290
- "type": "uint256"
391
+ "internalType": "address",
392
+ "name": "",
393
+ "type": "address"
291
394
  }
292
395
  ],
293
- "stateMutability": "pure",
396
+ "stateMutability": "view",
294
397
  "type": "function"
295
398
  },
296
399
  {
297
400
  "inputs": [
298
401
  {
299
- "internalType": "NftId",
300
- "name": "bundleNftId",
301
- "type": "uint96"
402
+ "internalType": "ObjectType",
403
+ "name": "objectType",
404
+ "type": "uint8"
302
405
  },
303
406
  {
304
- "internalType": "NftId",
305
- "name": "policyNftId",
306
- "type": "uint96"
407
+ "internalType": "StateId",
408
+ "name": "fromId",
409
+ "type": "uint8"
307
410
  },
308
411
  {
309
- "internalType": "uint256",
310
- "name": "collateralAmount",
311
- "type": "uint256"
412
+ "internalType": "StateId",
413
+ "name": "toId",
414
+ "type": "uint8"
312
415
  }
313
416
  ],
314
- "name": "collateralizePolicy",
417
+ "name": "checkTransition",
315
418
  "outputs": [],
316
- "stateMutability": "nonpayable",
419
+ "stateMutability": "view",
317
420
  "type": "function"
318
421
  },
319
422
  {
320
423
  "inputs": [
321
424
  {
322
425
  "internalType": "NftId",
323
- "name": "bundleNftId",
324
- "type": "uint96"
325
- },
326
- {
327
- "internalType": "NftId",
328
- "name": "poolNftId",
426
+ "name": "applicationNftId",
329
427
  "type": "uint96"
330
428
  },
331
429
  {
332
430
  "components": [
333
431
  {
334
- "internalType": "UFixed",
335
- "name": "fractionalFee",
336
- "type": "uint256"
432
+ "internalType": "NftId",
433
+ "name": "productNftId",
434
+ "type": "uint96"
337
435
  },
338
436
  {
339
- "internalType": "uint256",
340
- "name": "fixedFee",
341
- "type": "uint256"
342
- }
437
+ "internalType": "NftId",
438
+ "name": "bundleNftId",
439
+ "type": "uint96"
440
+ },
441
+ {
442
+ "internalType": "ReferralId",
443
+ "name": "referralId",
444
+ "type": "bytes8"
445
+ },
446
+ {
447
+ "internalType": "RiskId",
448
+ "name": "riskId",
449
+ "type": "bytes8"
450
+ },
451
+ {
452
+ "internalType": "uint256",
453
+ "name": "sumInsuredAmount",
454
+ "type": "uint256"
455
+ },
456
+ {
457
+ "internalType": "uint256",
458
+ "name": "premiumAmount",
459
+ "type": "uint256"
460
+ },
461
+ {
462
+ "internalType": "uint256",
463
+ "name": "premiumPaidAmount",
464
+ "type": "uint256"
465
+ },
466
+ {
467
+ "internalType": "Seconds",
468
+ "name": "lifetime",
469
+ "type": "uint40"
470
+ },
471
+ {
472
+ "internalType": "bytes",
473
+ "name": "applicationData",
474
+ "type": "bytes"
475
+ },
476
+ {
477
+ "internalType": "bytes",
478
+ "name": "policyData",
479
+ "type": "bytes"
480
+ },
481
+ {
482
+ "internalType": "uint16",
483
+ "name": "claimsCount",
484
+ "type": "uint16"
485
+ },
486
+ {
487
+ "internalType": "uint16",
488
+ "name": "openClaimsCount",
489
+ "type": "uint16"
490
+ },
491
+ {
492
+ "internalType": "uint256",
493
+ "name": "payoutAmount",
494
+ "type": "uint256"
495
+ },
496
+ {
497
+ "internalType": "Timestamp",
498
+ "name": "activatedAt",
499
+ "type": "uint40"
500
+ },
501
+ {
502
+ "internalType": "Timestamp",
503
+ "name": "expiredAt",
504
+ "type": "uint40"
505
+ },
506
+ {
507
+ "internalType": "Timestamp",
508
+ "name": "closedAt",
509
+ "type": "uint40"
510
+ }
343
511
  ],
344
- "internalType": "struct Fee",
345
- "name": "fee",
512
+ "internalType": "struct IPolicy.PolicyInfo",
513
+ "name": "policy",
346
514
  "type": "tuple"
347
- },
348
- {
349
- "internalType": "uint256",
350
- "name": "amount",
351
- "type": "uint256"
352
- },
353
- {
354
- "internalType": "uint256",
355
- "name": "lifetime",
356
- "type": "uint256"
357
- },
358
- {
359
- "internalType": "bytes",
360
- "name": "filter",
361
- "type": "bytes"
362
515
  }
363
516
  ],
364
- "name": "createBundleInfo",
517
+ "name": "createApplication",
365
518
  "outputs": [],
366
519
  "stateMutability": "nonpayable",
367
520
  "type": "function"
368
521
  },
369
522
  {
370
523
  "inputs": [
371
- {
372
- "internalType": "NftId",
373
- "name": "policyNftId",
374
- "type": "uint96"
375
- },
376
- {
377
- "internalType": "NftId",
378
- "name": "productNftId",
379
- "type": "uint96"
380
- },
381
- {
382
- "internalType": "ReferralId",
383
- "name": "referralId",
384
- "type": "bytes8"
385
- },
386
- {
387
- "internalType": "RiskId",
388
- "name": "riskId",
389
- "type": "bytes8"
390
- },
391
- {
392
- "internalType": "uint256",
393
- "name": "sumInsuredAmount",
394
- "type": "uint256"
395
- },
396
- {
397
- "internalType": "uint256",
398
- "name": "premiumAmount",
399
- "type": "uint256"
400
- },
401
- {
402
- "internalType": "uint256",
403
- "name": "lifetime",
404
- "type": "uint256"
405
- },
406
524
  {
407
525
  "internalType": "NftId",
408
526
  "name": "bundleNftId",
409
527
  "type": "uint96"
410
- }
411
- ],
412
- "name": "createPolicyInfo",
413
- "outputs": [],
414
- "stateMutability": "nonpayable",
415
- "type": "function"
416
- },
417
- {
418
- "inputs": [
419
- {
420
- "internalType": "RiskId",
421
- "name": "riskId",
422
- "type": "bytes8"
423
- },
424
- {
425
- "internalType": "NftId",
426
- "name": "productNftId",
427
- "type": "uint96"
428
528
  },
429
- {
430
- "internalType": "bytes",
431
- "name": "data",
432
- "type": "bytes"
433
- }
434
- ],
435
- "name": "createRisk",
436
- "outputs": [],
437
- "stateMutability": "nonpayable",
438
- "type": "function"
439
- },
440
- {
441
- "inputs": [
442
- {
443
- "internalType": "string",
444
- "name": "roleName",
445
- "type": "string"
446
- }
447
- ],
448
- "name": "createRole",
449
- "outputs": [
450
- {
451
- "internalType": "RoleId",
452
- "name": "role",
453
- "type": "bytes8"
454
- }
455
- ],
456
- "stateMutability": "nonpayable",
457
- "type": "function"
458
- },
459
- {
460
- "inputs": [
461
- {
462
- "internalType": "NftId",
463
- "name": "poolNftId",
464
- "type": "uint96"
465
- }
466
- ],
467
- "name": "getBundleCount",
468
- "outputs": [
469
- {
470
- "internalType": "uint256",
471
- "name": "bundleCount",
472
- "type": "uint256"
473
- }
474
- ],
475
- "stateMutability": "view",
476
- "type": "function"
477
- },
478
- {
479
- "inputs": [
480
- {
481
- "internalType": "NftId",
482
- "name": "bundleNftId",
483
- "type": "uint96"
484
- }
485
- ],
486
- "name": "getBundleInfo",
487
- "outputs": [
488
529
  {
489
530
  "components": [
490
531
  {
@@ -529,6 +570,11 @@
529
570
  "name": "balanceAmount",
530
571
  "type": "uint256"
531
572
  },
573
+ {
574
+ "internalType": "Seconds",
575
+ "name": "lifetime",
576
+ "type": "uint40"
577
+ },
532
578
  {
533
579
  "internalType": "Timestamp",
534
580
  "name": "expiredAt",
@@ -541,96 +587,624 @@
541
587
  }
542
588
  ],
543
589
  "internalType": "struct IBundle.BundleInfo",
544
- "name": "bundleInfo",
590
+ "name": "bundle",
545
591
  "type": "tuple"
546
592
  }
547
593
  ],
548
- "stateMutability": "view",
594
+ "name": "createBundle",
595
+ "outputs": [],
596
+ "stateMutability": "nonpayable",
549
597
  "type": "function"
550
598
  },
551
599
  {
552
600
  "inputs": [
553
601
  {
554
602
  "internalType": "NftId",
555
- "name": "poolNftId",
603
+ "name": "policyNftId",
556
604
  "type": "uint96"
557
605
  },
558
606
  {
559
- "internalType": "uint256",
560
- "name": "index",
561
- "type": "uint256"
562
- }
563
- ],
564
- "name": "getBundleNftId",
565
- "outputs": [
566
- {
567
- "internalType": "NftId",
568
- "name": "bundleNftId",
569
- "type": "uint96"
570
- }
571
- ],
572
- "stateMutability": "view",
573
- "type": "function"
574
- },
575
- {
576
- "inputs": [],
577
- "name": "getComponentCount",
578
- "outputs": [
607
+ "internalType": "ClaimId",
608
+ "name": "claimId",
609
+ "type": "uint16"
610
+ },
579
611
  {
580
- "internalType": "uint256",
581
- "name": "numberOfCompnents",
582
- "type": "uint256"
612
+ "components": [
613
+ {
614
+ "internalType": "uint256",
615
+ "name": "claimAmount",
616
+ "type": "uint256"
617
+ },
618
+ {
619
+ "internalType": "uint256",
620
+ "name": "paidAmount",
621
+ "type": "uint256"
622
+ },
623
+ {
624
+ "internalType": "bytes",
625
+ "name": "data",
626
+ "type": "bytes"
627
+ },
628
+ {
629
+ "internalType": "Timestamp",
630
+ "name": "closedAt",
631
+ "type": "uint40"
632
+ }
633
+ ],
634
+ "internalType": "struct IPolicy.ClaimInfo",
635
+ "name": "claim",
636
+ "type": "tuple"
583
637
  }
584
638
  ],
585
- "stateMutability": "view",
639
+ "name": "createClaim",
640
+ "outputs": [],
641
+ "stateMutability": "nonpayable",
586
642
  "type": "function"
587
643
  },
588
644
  {
589
645
  "inputs": [
590
- {
591
- "internalType": "uint256",
592
- "name": "idx",
593
- "type": "uint256"
594
- }
595
- ],
596
- "name": "getComponentId",
597
- "outputs": [
598
646
  {
599
647
  "internalType": "NftId",
600
- "name": "componentNftId",
648
+ "name": "distributionNftId",
601
649
  "type": "uint96"
602
- }
603
- ],
604
- "stateMutability": "view",
605
- "type": "function"
606
- },
607
- {
608
- "inputs": [],
609
- "name": "getComponentOwnerService",
610
- "outputs": [
611
- {
612
- "internalType": "contract IComponentOwnerService",
613
- "name": "service",
614
- "type": "address"
615
- }
616
- ],
617
- "stateMutability": "view",
618
- "type": "function"
619
- },
620
- {
621
- "inputs": [
650
+ },
622
651
  {
623
- "internalType": "NftId",
624
- "name": "nftId",
625
- "type": "uint96"
652
+ "components": [
653
+ {
654
+ "internalType": "NftId",
655
+ "name": "productNftId",
656
+ "type": "uint96"
657
+ },
658
+ {
659
+ "internalType": "contract TokenHandler",
660
+ "name": "tokenHandler",
661
+ "type": "address"
662
+ },
663
+ {
664
+ "components": [
665
+ {
666
+ "internalType": "UFixed",
667
+ "name": "fractionalFee",
668
+ "type": "uint256"
669
+ },
670
+ {
671
+ "internalType": "uint256",
672
+ "name": "fixedFee",
673
+ "type": "uint256"
674
+ }
675
+ ],
676
+ "internalType": "struct Fee",
677
+ "name": "distributionFee",
678
+ "type": "tuple"
679
+ },
680
+ {
681
+ "internalType": "address",
682
+ "name": "wallet",
683
+ "type": "address"
684
+ }
685
+ ],
686
+ "internalType": "struct ISetup.DistributionSetupInfo",
687
+ "name": "setup",
688
+ "type": "tuple"
689
+ }
690
+ ],
691
+ "name": "createDistributionSetup",
692
+ "outputs": [],
693
+ "stateMutability": "nonpayable",
694
+ "type": "function"
695
+ },
696
+ {
697
+ "inputs": [
698
+ {
699
+ "internalType": "NftId",
700
+ "name": "nftId",
701
+ "type": "uint96"
702
+ },
703
+ {
704
+ "components": [
705
+ {
706
+ "internalType": "DistributorType",
707
+ "name": "distributorType",
708
+ "type": "bytes8"
709
+ },
710
+ {
711
+ "internalType": "bool",
712
+ "name": "active",
713
+ "type": "bool"
714
+ },
715
+ {
716
+ "internalType": "bytes",
717
+ "name": "data",
718
+ "type": "bytes"
719
+ }
720
+ ],
721
+ "internalType": "struct IDistribution.DistributorInfo",
722
+ "name": "info",
723
+ "type": "tuple"
724
+ }
725
+ ],
726
+ "name": "createDistributor",
727
+ "outputs": [],
728
+ "stateMutability": "nonpayable",
729
+ "type": "function"
730
+ },
731
+ {
732
+ "inputs": [
733
+ {
734
+ "internalType": "Key32",
735
+ "name": "distributorKey",
736
+ "type": "bytes32"
737
+ },
738
+ {
739
+ "components": [
740
+ {
741
+ "internalType": "string",
742
+ "name": "name",
743
+ "type": "string"
744
+ },
745
+ {
746
+ "internalType": "UFixed",
747
+ "name": "minDiscountPercentage",
748
+ "type": "uint256"
749
+ },
750
+ {
751
+ "internalType": "UFixed",
752
+ "name": "maxDiscountPercentage",
753
+ "type": "uint256"
754
+ },
755
+ {
756
+ "internalType": "UFixed",
757
+ "name": "commissionPercentage",
758
+ "type": "uint256"
759
+ },
760
+ {
761
+ "internalType": "uint32",
762
+ "name": "maxReferralCount",
763
+ "type": "uint32"
764
+ },
765
+ {
766
+ "internalType": "uint32",
767
+ "name": "maxReferralLifetime",
768
+ "type": "uint32"
769
+ },
770
+ {
771
+ "internalType": "bool",
772
+ "name": "allowSelfReferrals",
773
+ "type": "bool"
774
+ },
775
+ {
776
+ "internalType": "bool",
777
+ "name": "allowRenewals",
778
+ "type": "bool"
779
+ },
780
+ {
781
+ "internalType": "bytes",
782
+ "name": "data",
783
+ "type": "bytes"
784
+ }
785
+ ],
786
+ "internalType": "struct IDistribution.DistributorTypeInfo",
787
+ "name": "info",
788
+ "type": "tuple"
789
+ }
790
+ ],
791
+ "name": "createDistributorType",
792
+ "outputs": [],
793
+ "stateMutability": "nonpayable",
794
+ "type": "function"
795
+ },
796
+ {
797
+ "inputs": [
798
+ {
799
+ "internalType": "NftId",
800
+ "name": "policyNftId",
801
+ "type": "uint96"
802
+ },
803
+ {
804
+ "internalType": "NumberId",
805
+ "name": "payoutId",
806
+ "type": "uint32"
807
+ },
808
+ {
809
+ "components": [
810
+ {
811
+ "internalType": "ClaimId",
812
+ "name": "claimId",
813
+ "type": "uint16"
814
+ },
815
+ {
816
+ "internalType": "uint256",
817
+ "name": "amount",
818
+ "type": "uint256"
819
+ },
820
+ {
821
+ "internalType": "bytes",
822
+ "name": "data",
823
+ "type": "bytes"
824
+ },
825
+ {
826
+ "internalType": "Timestamp",
827
+ "name": "paidAt",
828
+ "type": "uint40"
829
+ }
830
+ ],
831
+ "internalType": "struct IPolicy.PayoutInfo",
832
+ "name": "payout",
833
+ "type": "tuple"
834
+ }
835
+ ],
836
+ "name": "createPayout",
837
+ "outputs": [],
838
+ "stateMutability": "nonpayable",
839
+ "type": "function"
840
+ },
841
+ {
842
+ "inputs": [
843
+ {
844
+ "internalType": "NftId",
845
+ "name": "poolNftId",
846
+ "type": "uint96"
847
+ },
848
+ {
849
+ "components": [
850
+ {
851
+ "internalType": "NftId",
852
+ "name": "productNftId",
853
+ "type": "uint96"
854
+ },
855
+ {
856
+ "internalType": "contract TokenHandler",
857
+ "name": "tokenHandler",
858
+ "type": "address"
859
+ },
860
+ {
861
+ "internalType": "uint256",
862
+ "name": "maxCapitalAmount",
863
+ "type": "uint256"
864
+ },
865
+ {
866
+ "internalType": "bool",
867
+ "name": "isInterceptingBundleTransfers",
868
+ "type": "bool"
869
+ },
870
+ {
871
+ "internalType": "bool",
872
+ "name": "isExternallyManaged",
873
+ "type": "bool"
874
+ },
875
+ {
876
+ "internalType": "bool",
877
+ "name": "isVerifyingApplications",
878
+ "type": "bool"
879
+ },
880
+ {
881
+ "internalType": "UFixed",
882
+ "name": "collateralizationLevel",
883
+ "type": "uint256"
884
+ },
885
+ {
886
+ "internalType": "UFixed",
887
+ "name": "retentionLevel",
888
+ "type": "uint256"
889
+ },
890
+ {
891
+ "components": [
892
+ {
893
+ "internalType": "UFixed",
894
+ "name": "fractionalFee",
895
+ "type": "uint256"
896
+ },
897
+ {
898
+ "internalType": "uint256",
899
+ "name": "fixedFee",
900
+ "type": "uint256"
901
+ }
902
+ ],
903
+ "internalType": "struct Fee",
904
+ "name": "poolFee",
905
+ "type": "tuple"
906
+ },
907
+ {
908
+ "components": [
909
+ {
910
+ "internalType": "UFixed",
911
+ "name": "fractionalFee",
912
+ "type": "uint256"
913
+ },
914
+ {
915
+ "internalType": "uint256",
916
+ "name": "fixedFee",
917
+ "type": "uint256"
918
+ }
919
+ ],
920
+ "internalType": "struct Fee",
921
+ "name": "stakingFee",
922
+ "type": "tuple"
923
+ },
924
+ {
925
+ "components": [
926
+ {
927
+ "internalType": "UFixed",
928
+ "name": "fractionalFee",
929
+ "type": "uint256"
930
+ },
931
+ {
932
+ "internalType": "uint256",
933
+ "name": "fixedFee",
934
+ "type": "uint256"
935
+ }
936
+ ],
937
+ "internalType": "struct Fee",
938
+ "name": "performanceFee",
939
+ "type": "tuple"
940
+ },
941
+ {
942
+ "internalType": "address",
943
+ "name": "wallet",
944
+ "type": "address"
945
+ }
946
+ ],
947
+ "internalType": "struct ISetup.PoolSetupInfo",
948
+ "name": "setup",
949
+ "type": "tuple"
950
+ }
951
+ ],
952
+ "name": "createPoolSetup",
953
+ "outputs": [],
954
+ "stateMutability": "nonpayable",
955
+ "type": "function"
956
+ },
957
+ {
958
+ "inputs": [
959
+ {
960
+ "internalType": "NftId",
961
+ "name": "productNftId",
962
+ "type": "uint96"
963
+ },
964
+ {
965
+ "components": [
966
+ {
967
+ "internalType": "contract IERC20Metadata",
968
+ "name": "token",
969
+ "type": "address"
970
+ },
971
+ {
972
+ "internalType": "contract TokenHandler",
973
+ "name": "tokenHandler",
974
+ "type": "address"
975
+ },
976
+ {
977
+ "internalType": "NftId",
978
+ "name": "distributionNftId",
979
+ "type": "uint96"
980
+ },
981
+ {
982
+ "internalType": "NftId",
983
+ "name": "poolNftId",
984
+ "type": "uint96"
985
+ },
986
+ {
987
+ "components": [
988
+ {
989
+ "internalType": "UFixed",
990
+ "name": "fractionalFee",
991
+ "type": "uint256"
992
+ },
993
+ {
994
+ "internalType": "uint256",
995
+ "name": "fixedFee",
996
+ "type": "uint256"
997
+ }
998
+ ],
999
+ "internalType": "struct Fee",
1000
+ "name": "distributionFee",
1001
+ "type": "tuple"
1002
+ },
1003
+ {
1004
+ "components": [
1005
+ {
1006
+ "internalType": "UFixed",
1007
+ "name": "fractionalFee",
1008
+ "type": "uint256"
1009
+ },
1010
+ {
1011
+ "internalType": "uint256",
1012
+ "name": "fixedFee",
1013
+ "type": "uint256"
1014
+ }
1015
+ ],
1016
+ "internalType": "struct Fee",
1017
+ "name": "productFee",
1018
+ "type": "tuple"
1019
+ },
1020
+ {
1021
+ "components": [
1022
+ {
1023
+ "internalType": "UFixed",
1024
+ "name": "fractionalFee",
1025
+ "type": "uint256"
1026
+ },
1027
+ {
1028
+ "internalType": "uint256",
1029
+ "name": "fixedFee",
1030
+ "type": "uint256"
1031
+ }
1032
+ ],
1033
+ "internalType": "struct Fee",
1034
+ "name": "processingFee",
1035
+ "type": "tuple"
1036
+ },
1037
+ {
1038
+ "components": [
1039
+ {
1040
+ "internalType": "UFixed",
1041
+ "name": "fractionalFee",
1042
+ "type": "uint256"
1043
+ },
1044
+ {
1045
+ "internalType": "uint256",
1046
+ "name": "fixedFee",
1047
+ "type": "uint256"
1048
+ }
1049
+ ],
1050
+ "internalType": "struct Fee",
1051
+ "name": "poolFee",
1052
+ "type": "tuple"
1053
+ },
1054
+ {
1055
+ "components": [
1056
+ {
1057
+ "internalType": "UFixed",
1058
+ "name": "fractionalFee",
1059
+ "type": "uint256"
1060
+ },
1061
+ {
1062
+ "internalType": "uint256",
1063
+ "name": "fixedFee",
1064
+ "type": "uint256"
1065
+ }
1066
+ ],
1067
+ "internalType": "struct Fee",
1068
+ "name": "stakingFee",
1069
+ "type": "tuple"
1070
+ },
1071
+ {
1072
+ "components": [
1073
+ {
1074
+ "internalType": "UFixed",
1075
+ "name": "fractionalFee",
1076
+ "type": "uint256"
1077
+ },
1078
+ {
1079
+ "internalType": "uint256",
1080
+ "name": "fixedFee",
1081
+ "type": "uint256"
1082
+ }
1083
+ ],
1084
+ "internalType": "struct Fee",
1085
+ "name": "performanceFee",
1086
+ "type": "tuple"
1087
+ },
1088
+ {
1089
+ "internalType": "bool",
1090
+ "name": "isIntercepting",
1091
+ "type": "bool"
1092
+ },
1093
+ {
1094
+ "internalType": "address",
1095
+ "name": "wallet",
1096
+ "type": "address"
1097
+ }
1098
+ ],
1099
+ "internalType": "struct ISetup.ProductSetupInfo",
1100
+ "name": "setup",
1101
+ "type": "tuple"
1102
+ }
1103
+ ],
1104
+ "name": "createProductSetup",
1105
+ "outputs": [],
1106
+ "stateMutability": "nonpayable",
1107
+ "type": "function"
1108
+ },
1109
+ {
1110
+ "inputs": [
1111
+ {
1112
+ "internalType": "Key32",
1113
+ "name": "referralKey",
1114
+ "type": "bytes32"
1115
+ },
1116
+ {
1117
+ "components": [
1118
+ {
1119
+ "internalType": "NftId",
1120
+ "name": "distributorNftId",
1121
+ "type": "uint96"
1122
+ },
1123
+ {
1124
+ "internalType": "string",
1125
+ "name": "referralCode",
1126
+ "type": "string"
1127
+ },
1128
+ {
1129
+ "internalType": "UFixed",
1130
+ "name": "discountPercentage",
1131
+ "type": "uint256"
1132
+ },
1133
+ {
1134
+ "internalType": "uint32",
1135
+ "name": "maxReferrals",
1136
+ "type": "uint32"
1137
+ },
1138
+ {
1139
+ "internalType": "uint32",
1140
+ "name": "usedReferrals",
1141
+ "type": "uint32"
1142
+ },
1143
+ {
1144
+ "internalType": "Timestamp",
1145
+ "name": "expiryAt",
1146
+ "type": "uint40"
1147
+ },
1148
+ {
1149
+ "internalType": "bytes",
1150
+ "name": "data",
1151
+ "type": "bytes"
1152
+ }
1153
+ ],
1154
+ "internalType": "struct IDistribution.ReferralInfo",
1155
+ "name": "referralInfo",
1156
+ "type": "tuple"
1157
+ }
1158
+ ],
1159
+ "name": "createReferral",
1160
+ "outputs": [],
1161
+ "stateMutability": "nonpayable",
1162
+ "type": "function"
1163
+ },
1164
+ {
1165
+ "inputs": [
1166
+ {
1167
+ "internalType": "RiskId",
1168
+ "name": "riskId",
1169
+ "type": "bytes8"
1170
+ },
1171
+ {
1172
+ "components": [
1173
+ {
1174
+ "internalType": "NftId",
1175
+ "name": "productNftId",
1176
+ "type": "uint96"
1177
+ },
1178
+ {
1179
+ "internalType": "bytes",
1180
+ "name": "data",
1181
+ "type": "bytes"
1182
+ }
1183
+ ],
1184
+ "internalType": "struct IRisk.RiskInfo",
1185
+ "name": "risk",
1186
+ "type": "tuple"
1187
+ }
1188
+ ],
1189
+ "name": "createRisk",
1190
+ "outputs": [],
1191
+ "stateMutability": "nonpayable",
1192
+ "type": "function"
1193
+ },
1194
+ {
1195
+ "inputs": [
1196
+ {
1197
+ "internalType": "Key32",
1198
+ "name": "key32",
1199
+ "type": "bytes32"
626
1200
  }
627
1201
  ],
628
- "name": "getComponentToken",
1202
+ "name": "exists",
629
1203
  "outputs": [
630
1204
  {
631
- "internalType": "contract IERC20Metadata",
632
- "name": "token",
633
- "type": "address"
1205
+ "internalType": "bool",
1206
+ "name": "",
1207
+ "type": "bool"
634
1208
  }
635
1209
  ],
636
1210
  "stateMutability": "view",
@@ -639,16 +1213,68 @@
639
1213
  {
640
1214
  "inputs": [
641
1215
  {
642
- "internalType": "NftId",
643
- "name": "nftId",
644
- "type": "uint96"
1216
+ "internalType": "Key32",
1217
+ "name": "key32",
1218
+ "type": "bytes32"
645
1219
  }
646
1220
  ],
647
- "name": "getComponentWallet",
1221
+ "name": "get",
648
1222
  "outputs": [
649
1223
  {
650
- "internalType": "address",
651
- "name": "wallet",
1224
+ "components": [
1225
+ {
1226
+ "components": [
1227
+ {
1228
+ "internalType": "ObjectType",
1229
+ "name": "objectType",
1230
+ "type": "uint8"
1231
+ },
1232
+ {
1233
+ "internalType": "StateId",
1234
+ "name": "state",
1235
+ "type": "uint8"
1236
+ },
1237
+ {
1238
+ "internalType": "address",
1239
+ "name": "updatedBy",
1240
+ "type": "address"
1241
+ },
1242
+ {
1243
+ "internalType": "Blocknumber",
1244
+ "name": "updatedIn",
1245
+ "type": "uint32"
1246
+ },
1247
+ {
1248
+ "internalType": "Blocknumber",
1249
+ "name": "createdIn",
1250
+ "type": "uint32"
1251
+ }
1252
+ ],
1253
+ "internalType": "struct IKeyValueStore.Metadata",
1254
+ "name": "metadata",
1255
+ "type": "tuple"
1256
+ },
1257
+ {
1258
+ "internalType": "bytes",
1259
+ "name": "data",
1260
+ "type": "bytes"
1261
+ }
1262
+ ],
1263
+ "internalType": "struct IKeyValueStore.Value",
1264
+ "name": "value",
1265
+ "type": "tuple"
1266
+ }
1267
+ ],
1268
+ "stateMutability": "view",
1269
+ "type": "function"
1270
+ },
1271
+ {
1272
+ "inputs": [],
1273
+ "name": "getBundleManager",
1274
+ "outputs": [
1275
+ {
1276
+ "internalType": "contract BundleManager",
1277
+ "name": "",
652
1278
  "type": "address"
653
1279
  }
654
1280
  ],
@@ -657,11 +1283,11 @@
657
1283
  },
658
1284
  {
659
1285
  "inputs": [],
660
- "name": "getDistributionService",
1286
+ "name": "getBundleService",
661
1287
  "outputs": [
662
1288
  {
663
- "internalType": "contract IDistributionService",
664
- "name": "service",
1289
+ "internalType": "contract IBundleService",
1290
+ "name": "",
665
1291
  "type": "address"
666
1292
  }
667
1293
  ],
@@ -671,37 +1297,33 @@
671
1297
  {
672
1298
  "inputs": [
673
1299
  {
674
- "internalType": "UFixed",
675
- "name": "fractionalFee",
676
- "type": "uint256"
677
- },
1300
+ "internalType": "Key32",
1301
+ "name": "key32",
1302
+ "type": "bytes32"
1303
+ }
1304
+ ],
1305
+ "name": "getData",
1306
+ "outputs": [
678
1307
  {
679
- "internalType": "uint256",
680
- "name": "fixedFee",
681
- "type": "uint256"
1308
+ "internalType": "bytes",
1309
+ "name": "data",
1310
+ "type": "bytes"
682
1311
  }
683
1312
  ],
684
- "name": "getFee",
1313
+ "stateMutability": "view",
1314
+ "type": "function"
1315
+ },
1316
+ {
1317
+ "inputs": [],
1318
+ "name": "getDistributionService",
685
1319
  "outputs": [
686
1320
  {
687
- "components": [
688
- {
689
- "internalType": "UFixed",
690
- "name": "fractionalFee",
691
- "type": "uint256"
692
- },
693
- {
694
- "internalType": "uint256",
695
- "name": "fixedFee",
696
- "type": "uint256"
697
- }
698
- ],
699
- "internalType": "struct Fee",
700
- "name": "fee",
701
- "type": "tuple"
1321
+ "internalType": "contract IDistributionService",
1322
+ "name": "",
1323
+ "type": "address"
702
1324
  }
703
1325
  ],
704
- "stateMutability": "pure",
1326
+ "stateMutability": "view",
705
1327
  "type": "function"
706
1328
  },
707
1329
  {
@@ -732,28 +1354,114 @@
732
1354
  },
733
1355
  {
734
1356
  "internalType": "address",
735
- "name": "objectAddress",
1357
+ "name": "objectAddress",
1358
+ "type": "address"
1359
+ },
1360
+ {
1361
+ "internalType": "address",
1362
+ "name": "initialOwner",
1363
+ "type": "address"
1364
+ },
1365
+ {
1366
+ "internalType": "bytes",
1367
+ "name": "data",
1368
+ "type": "bytes"
1369
+ }
1370
+ ],
1371
+ "internalType": "struct IRegistry.ObjectInfo",
1372
+ "name": "info",
1373
+ "type": "tuple"
1374
+ }
1375
+ ],
1376
+ "stateMutability": "view",
1377
+ "type": "function"
1378
+ },
1379
+ {
1380
+ "inputs": [
1381
+ {
1382
+ "internalType": "ObjectType",
1383
+ "name": "objectType",
1384
+ "type": "uint8"
1385
+ }
1386
+ ],
1387
+ "name": "getInitialState",
1388
+ "outputs": [
1389
+ {
1390
+ "internalType": "StateId",
1391
+ "name": "",
1392
+ "type": "uint8"
1393
+ }
1394
+ ],
1395
+ "stateMutability": "view",
1396
+ "type": "function"
1397
+ },
1398
+ {
1399
+ "inputs": [],
1400
+ "name": "getInstanceReader",
1401
+ "outputs": [
1402
+ {
1403
+ "internalType": "contract InstanceReader",
1404
+ "name": "",
1405
+ "type": "address"
1406
+ }
1407
+ ],
1408
+ "stateMutability": "view",
1409
+ "type": "function"
1410
+ },
1411
+ {
1412
+ "inputs": [],
1413
+ "name": "getMajorVersion",
1414
+ "outputs": [
1415
+ {
1416
+ "internalType": "VersionPart",
1417
+ "name": "majorVersion",
1418
+ "type": "uint8"
1419
+ }
1420
+ ],
1421
+ "stateMutability": "pure",
1422
+ "type": "function"
1423
+ },
1424
+ {
1425
+ "inputs": [
1426
+ {
1427
+ "internalType": "Key32",
1428
+ "name": "key32",
1429
+ "type": "bytes32"
1430
+ }
1431
+ ],
1432
+ "name": "getMetadata",
1433
+ "outputs": [
1434
+ {
1435
+ "components": [
1436
+ {
1437
+ "internalType": "ObjectType",
1438
+ "name": "objectType",
1439
+ "type": "uint8"
1440
+ },
1441
+ {
1442
+ "internalType": "StateId",
1443
+ "name": "state",
1444
+ "type": "uint8"
1445
+ },
1446
+ {
1447
+ "internalType": "address",
1448
+ "name": "updatedBy",
736
1449
  "type": "address"
737
1450
  },
738
1451
  {
739
- "internalType": "address",
740
- "name": "initialOwner",
741
- "type": "address"
1452
+ "internalType": "Blocknumber",
1453
+ "name": "updatedIn",
1454
+ "type": "uint32"
742
1455
  },
743
1456
  {
744
- "internalType": "bytes",
745
- "name": "data",
746
- "type": "bytes"
1457
+ "internalType": "Blocknumber",
1458
+ "name": "createdIn",
1459
+ "type": "uint32"
747
1460
  }
748
1461
  ],
749
- "internalType": "struct IRegistry.ObjectInfo",
750
- "name": "",
1462
+ "internalType": "struct IKeyValueStore.Metadata",
1463
+ "name": "metadata",
751
1464
  "type": "tuple"
752
- },
753
- {
754
- "internalType": "bytes",
755
- "name": "data",
756
- "type": "bytes"
757
1465
  }
758
1466
  ],
759
1467
  "stateMutability": "view",
@@ -761,12 +1469,12 @@
761
1469
  },
762
1470
  {
763
1471
  "inputs": [],
764
- "name": "getInitializedVersion",
1472
+ "name": "getNftId",
765
1473
  "outputs": [
766
1474
  {
767
- "internalType": "uint64",
1475
+ "internalType": "NftId",
768
1476
  "name": "",
769
- "type": "uint64"
1477
+ "type": "uint96"
770
1478
  }
771
1479
  ],
772
1480
  "stateMutability": "view",
@@ -774,11 +1482,11 @@
774
1482
  },
775
1483
  {
776
1484
  "inputs": [],
777
- "name": "getKeyValueStore",
1485
+ "name": "getOwner",
778
1486
  "outputs": [
779
1487
  {
780
- "internalType": "contract IKeyValueStore",
781
- "name": "keyValueStore",
1488
+ "internalType": "address",
1489
+ "name": "",
782
1490
  "type": "address"
783
1491
  }
784
1492
  ],
@@ -787,12 +1495,12 @@
787
1495
  },
788
1496
  {
789
1497
  "inputs": [],
790
- "name": "getNftId",
1498
+ "name": "getPolicyService",
791
1499
  "outputs": [
792
1500
  {
793
- "internalType": "NftId",
1501
+ "internalType": "contract IPolicyService",
794
1502
  "name": "",
795
- "type": "uint96"
1503
+ "type": "address"
796
1504
  }
797
1505
  ],
798
1506
  "stateMutability": "view",
@@ -800,11 +1508,11 @@
800
1508
  },
801
1509
  {
802
1510
  "inputs": [],
803
- "name": "getOwner",
1511
+ "name": "getPoolService",
804
1512
  "outputs": [
805
1513
  {
806
- "internalType": "address",
807
- "name": "owner",
1514
+ "internalType": "contract IPoolService",
1515
+ "name": "",
808
1516
  "type": "address"
809
1517
  }
810
1518
  ],
@@ -812,122 +1520,26 @@
812
1520
  "type": "function"
813
1521
  },
814
1522
  {
815
- "inputs": [
816
- {
817
- "internalType": "NftId",
818
- "name": "nftId",
819
- "type": "uint96"
820
- }
821
- ],
822
- "name": "getPolicyInfo",
1523
+ "inputs": [],
1524
+ "name": "getProductService",
823
1525
  "outputs": [
824
1526
  {
825
- "components": [
826
- {
827
- "internalType": "NftId",
828
- "name": "productNftId",
829
- "type": "uint96"
830
- },
831
- {
832
- "internalType": "NftId",
833
- "name": "bundleNftId",
834
- "type": "uint96"
835
- },
836
- {
837
- "internalType": "ReferralId",
838
- "name": "referralId",
839
- "type": "bytes8"
840
- },
841
- {
842
- "internalType": "address",
843
- "name": "beneficiary",
844
- "type": "address"
845
- },
846
- {
847
- "internalType": "RiskId",
848
- "name": "riskId",
849
- "type": "bytes8"
850
- },
851
- {
852
- "internalType": "uint256",
853
- "name": "sumInsuredAmount",
854
- "type": "uint256"
855
- },
856
- {
857
- "internalType": "uint256",
858
- "name": "premiumAmount",
859
- "type": "uint256"
860
- },
861
- {
862
- "internalType": "uint256",
863
- "name": "premiumPaidAmount",
864
- "type": "uint256"
865
- },
866
- {
867
- "internalType": "uint256",
868
- "name": "lifetime",
869
- "type": "uint256"
870
- },
871
- {
872
- "internalType": "bytes",
873
- "name": "applicationData",
874
- "type": "bytes"
875
- },
876
- {
877
- "internalType": "bytes",
878
- "name": "policyData",
879
- "type": "bytes"
880
- },
881
- {
882
- "internalType": "Timestamp",
883
- "name": "activatedAt",
884
- "type": "uint40"
885
- },
886
- {
887
- "internalType": "Timestamp",
888
- "name": "expiredAt",
889
- "type": "uint40"
890
- },
891
- {
892
- "internalType": "Timestamp",
893
- "name": "closedAt",
894
- "type": "uint40"
895
- }
896
- ],
897
- "internalType": "struct IPolicy.PolicyInfo",
898
- "name": "info",
899
- "type": "tuple"
1527
+ "internalType": "contract IProductService",
1528
+ "name": "",
1529
+ "type": "address"
900
1530
  }
901
1531
  ],
902
1532
  "stateMutability": "view",
903
1533
  "type": "function"
904
1534
  },
905
1535
  {
906
- "inputs": [
907
- {
908
- "internalType": "NftId",
909
- "name": "nftId",
910
- "type": "uint96"
911
- }
912
- ],
913
- "name": "getPoolInfo",
1536
+ "inputs": [],
1537
+ "name": "getRegistry",
914
1538
  "outputs": [
915
1539
  {
916
- "components": [
917
- {
918
- "internalType": "bool",
919
- "name": "isVerifying",
920
- "type": "bool"
921
- },
922
- {
923
- "internalType": "UFixed",
924
- "name": "collateralizationLevel",
925
- "type": "uint256"
926
- }
927
- ],
928
- "internalType": "struct IPool.PoolInfo",
929
- "name": "info",
930
- "type": "tuple"
1540
+ "internalType": "contract IRegistry",
1541
+ "name": "",
1542
+ "type": "address"
931
1543
  }
932
1544
  ],
933
1545
  "stateMutability": "view",
@@ -935,11 +1547,11 @@
935
1547
  },
936
1548
  {
937
1549
  "inputs": [],
938
- "name": "getPoolService",
1550
+ "name": "getRegistryAddress",
939
1551
  "outputs": [
940
1552
  {
941
- "internalType": "contract IPoolService",
942
- "name": "service",
1553
+ "internalType": "address",
1554
+ "name": "",
943
1555
  "type": "address"
944
1556
  }
945
1557
  ],
@@ -949,106 +1561,153 @@
949
1561
  {
950
1562
  "inputs": [
951
1563
  {
952
- "internalType": "NftId",
953
- "name": "componentNftId",
954
- "type": "uint96"
1564
+ "internalType": "Key32",
1565
+ "name": "key32",
1566
+ "type": "bytes32"
955
1567
  }
956
1568
  ],
957
- "name": "getProductNftId",
1569
+ "name": "getState",
958
1570
  "outputs": [
959
1571
  {
960
- "internalType": "NftId",
961
- "name": "productNftId",
962
- "type": "uint96"
1572
+ "internalType": "StateId",
1573
+ "name": "state",
1574
+ "type": "uint8"
963
1575
  }
964
1576
  ],
965
1577
  "stateMutability": "view",
966
1578
  "type": "function"
967
1579
  },
968
1580
  {
969
- "inputs": [],
970
- "name": "getProductService",
1581
+ "inputs": [
1582
+ {
1583
+ "internalType": "ObjectType",
1584
+ "name": "objectType",
1585
+ "type": "uint8"
1586
+ }
1587
+ ],
1588
+ "name": "hasLifecycle",
971
1589
  "outputs": [
972
1590
  {
973
- "internalType": "contract IProductService",
974
- "name": "service",
975
- "type": "address"
1591
+ "internalType": "bool",
1592
+ "name": "",
1593
+ "type": "bool"
976
1594
  }
977
1595
  ],
978
1596
  "stateMutability": "view",
979
1597
  "type": "function"
980
1598
  },
981
1599
  {
982
- "inputs": [],
983
- "name": "getRegistry",
984
- "outputs": [
1600
+ "inputs": [
985
1601
  {
986
- "internalType": "contract IRegistry",
987
- "name": "registry",
1602
+ "internalType": "address",
1603
+ "name": "accessManagerAddress",
1604
+ "type": "address"
1605
+ },
1606
+ {
1607
+ "internalType": "address",
1608
+ "name": "registryAddress",
1609
+ "type": "address"
1610
+ },
1611
+ {
1612
+ "internalType": "NftId",
1613
+ "name": "registryNftId",
1614
+ "type": "uint96"
1615
+ },
1616
+ {
1617
+ "internalType": "address",
1618
+ "name": "initialOwner",
988
1619
  "type": "address"
989
1620
  }
990
1621
  ],
991
- "stateMutability": "view",
1622
+ "name": "initialize",
1623
+ "outputs": [],
1624
+ "stateMutability": "nonpayable",
1625
+ "type": "function"
1626
+ },
1627
+ {
1628
+ "inputs": [],
1629
+ "name": "initializeERC165",
1630
+ "outputs": [],
1631
+ "stateMutability": "nonpayable",
992
1632
  "type": "function"
993
1633
  },
994
1634
  {
995
1635
  "inputs": [
996
1636
  {
997
- "internalType": "RiskId",
998
- "name": "riskId",
999
- "type": "bytes8"
1637
+ "internalType": "address",
1638
+ "name": "initialOwner",
1639
+ "type": "address"
1640
+ },
1641
+ {
1642
+ "internalType": "address",
1643
+ "name": "registryAddress",
1644
+ "type": "address"
1000
1645
  }
1001
1646
  ],
1002
- "name": "getRiskInfo",
1003
- "outputs": [
1647
+ "name": "initializeNftOwnable",
1648
+ "outputs": [],
1649
+ "stateMutability": "nonpayable",
1650
+ "type": "function"
1651
+ },
1652
+ {
1653
+ "inputs": [
1004
1654
  {
1005
- "components": [
1006
- {
1007
- "internalType": "NftId",
1008
- "name": "productNftId",
1009
- "type": "uint96"
1010
- },
1011
- {
1012
- "internalType": "bytes",
1013
- "name": "data",
1014
- "type": "bytes"
1015
- }
1016
- ],
1017
- "internalType": "struct IRisk.RiskInfo",
1018
- "name": "info",
1019
- "type": "tuple"
1655
+ "internalType": "address",
1656
+ "name": "registryAddress",
1657
+ "type": "address"
1658
+ },
1659
+ {
1660
+ "internalType": "NftId",
1661
+ "name": "parentNftId",
1662
+ "type": "uint96"
1663
+ },
1664
+ {
1665
+ "internalType": "ObjectType",
1666
+ "name": "objectType",
1667
+ "type": "uint8"
1668
+ },
1669
+ {
1670
+ "internalType": "bool",
1671
+ "name": "isInterceptor",
1672
+ "type": "bool"
1673
+ },
1674
+ {
1675
+ "internalType": "address",
1676
+ "name": "initialOwner",
1677
+ "type": "address"
1678
+ },
1679
+ {
1680
+ "internalType": "bytes",
1681
+ "name": "registryData",
1682
+ "type": "bytes"
1020
1683
  }
1021
1684
  ],
1022
- "stateMutability": "view",
1685
+ "name": "initializeRegisterable",
1686
+ "outputs": [],
1687
+ "stateMutability": "nonpayable",
1023
1688
  "type": "function"
1024
1689
  },
1025
1690
  {
1026
1691
  "inputs": [
1027
1692
  {
1028
- "internalType": "uint256",
1029
- "name": "idx",
1030
- "type": "uint256"
1031
- }
1032
- ],
1033
- "name": "getRole",
1034
- "outputs": [
1035
- {
1036
- "internalType": "RoleId",
1037
- "name": "role",
1038
- "type": "bytes8"
1693
+ "internalType": "address",
1694
+ "name": "registryAddress",
1695
+ "type": "address"
1039
1696
  }
1040
1697
  ],
1041
- "stateMutability": "view",
1698
+ "name": "initializeRegistryLinked",
1699
+ "outputs": [],
1700
+ "stateMutability": "nonpayable",
1042
1701
  "type": "function"
1043
1702
  },
1044
1703
  {
1045
1704
  "inputs": [],
1046
- "name": "getRoleCount",
1705
+ "name": "isConsumingScheduledOp",
1047
1706
  "outputs": [
1048
1707
  {
1049
- "internalType": "uint256",
1050
- "name": "roles",
1051
- "type": "uint256"
1708
+ "internalType": "bytes4",
1709
+ "name": "",
1710
+ "type": "bytes4"
1052
1711
  }
1053
1712
  ],
1054
1713
  "stateMutability": "view",
@@ -1057,134 +1716,105 @@
1057
1716
  {
1058
1717
  "inputs": [
1059
1718
  {
1060
- "internalType": "string",
1061
- "name": "roleName",
1062
- "type": "string"
1719
+ "internalType": "ObjectType",
1720
+ "name": "objectType",
1721
+ "type": "uint8"
1722
+ },
1723
+ {
1724
+ "internalType": "StateId",
1725
+ "name": "fromId",
1726
+ "type": "uint8"
1727
+ },
1728
+ {
1729
+ "internalType": "StateId",
1730
+ "name": "toId",
1731
+ "type": "uint8"
1063
1732
  }
1064
1733
  ],
1065
- "name": "getRoleId",
1734
+ "name": "isValidTransition",
1066
1735
  "outputs": [
1067
1736
  {
1068
- "internalType": "RoleId",
1069
- "name": "role",
1070
- "type": "bytes8"
1737
+ "internalType": "bool",
1738
+ "name": "",
1739
+ "type": "bool"
1071
1740
  }
1072
1741
  ],
1073
- "stateMutability": "pure",
1742
+ "stateMutability": "view",
1743
+ "type": "function"
1744
+ },
1745
+ {
1746
+ "inputs": [],
1747
+ "name": "linkToRegisteredNftId",
1748
+ "outputs": [],
1749
+ "stateMutability": "nonpayable",
1074
1750
  "type": "function"
1075
1751
  },
1076
1752
  {
1077
1753
  "inputs": [
1078
1754
  {
1079
- "internalType": "RoleId",
1080
- "name": "role",
1081
- "type": "bytes8"
1082
- }
1083
- ],
1084
- "name": "getRoleInfo",
1085
- "outputs": [
1086
- {
1087
- "components": [
1088
- {
1089
- "internalType": "RoleId",
1090
- "name": "id",
1091
- "type": "bytes8"
1092
- },
1093
- {
1094
- "internalType": "string",
1095
- "name": "name",
1096
- "type": "string"
1097
- },
1098
- {
1099
- "internalType": "bool",
1100
- "name": "isActive",
1101
- "type": "bool"
1102
- }
1103
- ],
1104
- "internalType": "struct IAccess.RoleInfo",
1105
- "name": "info",
1106
- "type": "tuple"
1755
+ "internalType": "bytes4",
1756
+ "name": "interfaceId",
1757
+ "type": "bytes4"
1107
1758
  }
1108
1759
  ],
1109
- "stateMutability": "view",
1760
+ "name": "registerInterface",
1761
+ "outputs": [],
1762
+ "stateMutability": "nonpayable",
1110
1763
  "type": "function"
1111
1764
  },
1112
1765
  {
1113
1766
  "inputs": [
1114
- {
1115
- "internalType": "RoleId",
1116
- "name": "role",
1117
- "type": "bytes8"
1118
- },
1119
- {
1120
- "internalType": "uint256",
1121
- "name": "idx",
1122
- "type": "uint256"
1123
- }
1124
- ],
1125
- "name": "getRoleMember",
1126
- "outputs": [
1127
1767
  {
1128
1768
  "internalType": "address",
1129
- "name": "roleMembers",
1769
+ "name": "newAuthority",
1130
1770
  "type": "address"
1131
1771
  }
1132
1772
  ],
1133
- "stateMutability": "view",
1773
+ "name": "setAuthority",
1774
+ "outputs": [],
1775
+ "stateMutability": "nonpayable",
1134
1776
  "type": "function"
1135
1777
  },
1136
1778
  {
1137
1779
  "inputs": [
1138
1780
  {
1139
- "internalType": "RoleId",
1140
- "name": "role",
1141
- "type": "bytes8"
1142
- }
1143
- ],
1144
- "name": "getRoleMemberCount",
1145
- "outputs": [
1146
- {
1147
- "internalType": "uint256",
1148
- "name": "roleMembers",
1149
- "type": "uint256"
1781
+ "internalType": "contract BundleManager",
1782
+ "name": "bundleManager",
1783
+ "type": "address"
1150
1784
  }
1151
1785
  ],
1152
- "stateMutability": "view",
1786
+ "name": "setBundleManager",
1787
+ "outputs": [],
1788
+ "stateMutability": "nonpayable",
1153
1789
  "type": "function"
1154
1790
  },
1155
1791
  {
1156
1792
  "inputs": [
1157
1793
  {
1158
- "internalType": "Key32",
1159
- "name": "key",
1160
- "type": "bytes32"
1161
- }
1162
- ],
1163
- "name": "getState",
1164
- "outputs": [
1165
- {
1166
- "internalType": "StateId",
1167
- "name": "state",
1168
- "type": "uint8"
1794
+ "internalType": "contract InstanceReader",
1795
+ "name": "instanceReader",
1796
+ "type": "address"
1169
1797
  }
1170
1798
  ],
1171
- "stateMutability": "view",
1799
+ "name": "setInstanceReader",
1800
+ "outputs": [],
1801
+ "stateMutability": "nonpayable",
1172
1802
  "type": "function"
1173
1803
  },
1174
1804
  {
1175
1805
  "inputs": [
1176
1806
  {
1177
- "internalType": "NftId",
1178
- "name": "componentNftId",
1179
- "type": "uint96"
1807
+ "internalType": "bytes4",
1808
+ "name": "interfaceId",
1809
+ "type": "bytes4"
1180
1810
  }
1181
1811
  ],
1182
- "name": "getTokenHandler",
1812
+ "name": "supportsInterface",
1183
1813
  "outputs": [
1184
1814
  {
1185
- "internalType": "contract TokenHandler",
1186
- "name": "tokenHandler",
1187
- "type": "address"
1815
+ "internalType": "bool",
1816
+ "name": "",
1817
+ "type": "bool"
1188
1818
  }
1189
1819
  ],
1190
1820
  "stateMutability": "view",
@@ -1194,159 +1824,35 @@
1194
1824
  "inputs": [
1195
1825
  {
1196
1826
  "internalType": "NftId",
1197
- "name": "productNftId",
1827
+ "name": "bundleNftId",
1198
1828
  "type": "uint96"
1199
1829
  }
1200
1830
  ],
1201
- "name": "getTreasuryInfo",
1831
+ "name": "toBundleKey32",
1202
1832
  "outputs": [
1203
1833
  {
1204
- "components": [
1205
- {
1206
- "internalType": "NftId",
1207
- "name": "poolNftId",
1208
- "type": "uint96"
1209
- },
1210
- {
1211
- "internalType": "NftId",
1212
- "name": "distributionNftId",
1213
- "type": "uint96"
1214
- },
1215
- {
1216
- "internalType": "contract IERC20Metadata",
1217
- "name": "token",
1218
- "type": "address"
1219
- },
1220
- {
1221
- "components": [
1222
- {
1223
- "internalType": "UFixed",
1224
- "name": "fractionalFee",
1225
- "type": "uint256"
1226
- },
1227
- {
1228
- "internalType": "uint256",
1229
- "name": "fixedFee",
1230
- "type": "uint256"
1231
- }
1232
- ],
1233
- "internalType": "struct Fee",
1234
- "name": "productFee",
1235
- "type": "tuple"
1236
- },
1237
- {
1238
- "components": [
1239
- {
1240
- "internalType": "UFixed",
1241
- "name": "fractionalFee",
1242
- "type": "uint256"
1243
- },
1244
- {
1245
- "internalType": "uint256",
1246
- "name": "fixedFee",
1247
- "type": "uint256"
1248
- }
1249
- ],
1250
- "internalType": "struct Fee",
1251
- "name": "processingFee",
1252
- "type": "tuple"
1253
- },
1254
- {
1255
- "components": [
1256
- {
1257
- "internalType": "UFixed",
1258
- "name": "fractionalFee",
1259
- "type": "uint256"
1260
- },
1261
- {
1262
- "internalType": "uint256",
1263
- "name": "fixedFee",
1264
- "type": "uint256"
1265
- }
1266
- ],
1267
- "internalType": "struct Fee",
1268
- "name": "poolFee",
1269
- "type": "tuple"
1270
- },
1271
- {
1272
- "components": [
1273
- {
1274
- "internalType": "UFixed",
1275
- "name": "fractionalFee",
1276
- "type": "uint256"
1277
- },
1278
- {
1279
- "internalType": "uint256",
1280
- "name": "fixedFee",
1281
- "type": "uint256"
1282
- }
1283
- ],
1284
- "internalType": "struct Fee",
1285
- "name": "stakingFee",
1286
- "type": "tuple"
1287
- },
1288
- {
1289
- "components": [
1290
- {
1291
- "internalType": "UFixed",
1292
- "name": "fractionalFee",
1293
- "type": "uint256"
1294
- },
1295
- {
1296
- "internalType": "uint256",
1297
- "name": "fixedFee",
1298
- "type": "uint256"
1299
- }
1300
- ],
1301
- "internalType": "struct Fee",
1302
- "name": "performanceFee",
1303
- "type": "tuple"
1304
- },
1305
- {
1306
- "components": [
1307
- {
1308
- "internalType": "UFixed",
1309
- "name": "fractionalFee",
1310
- "type": "uint256"
1311
- },
1312
- {
1313
- "internalType": "uint256",
1314
- "name": "fixedFee",
1315
- "type": "uint256"
1316
- }
1317
- ],
1318
- "internalType": "struct Fee",
1319
- "name": "distributionFee",
1320
- "type": "tuple"
1321
- }
1322
- ],
1323
- "internalType": "struct ITreasury.TreasuryInfo",
1324
- "name": "info",
1325
- "type": "tuple"
1834
+ "internalType": "Key32",
1835
+ "name": "",
1836
+ "type": "bytes32"
1326
1837
  }
1327
1838
  ],
1328
- "stateMutability": "view",
1839
+ "stateMutability": "pure",
1329
1840
  "type": "function"
1330
1841
  },
1331
1842
  {
1332
1843
  "inputs": [
1333
1844
  {
1334
- "internalType": "uint256",
1335
- "name": "a",
1336
- "type": "uint256"
1337
- },
1338
- {
1339
- "internalType": "int8",
1340
- "name": "exp",
1341
- "type": "int8"
1845
+ "internalType": "NftId",
1846
+ "name": "distNftId",
1847
+ "type": "uint96"
1342
1848
  }
1343
1849
  ],
1344
- "name": "getUFixed",
1850
+ "name": "toDistributionKey32",
1345
1851
  "outputs": [
1346
1852
  {
1347
- "internalType": "UFixed",
1853
+ "internalType": "Key32",
1348
1854
  "name": "",
1349
- "type": "uint256"
1855
+ "type": "bytes32"
1350
1856
  }
1351
1857
  ],
1352
1858
  "stateMutability": "pure",
@@ -1355,30 +1861,36 @@
1355
1861
  {
1356
1862
  "inputs": [
1357
1863
  {
1358
- "internalType": "uint256",
1359
- "name": "a",
1360
- "type": "uint256"
1864
+ "internalType": "NftId",
1865
+ "name": "distNftId",
1866
+ "type": "uint96"
1361
1867
  }
1362
1868
  ],
1363
- "name": "getUFixed",
1869
+ "name": "toDistributorKey32",
1364
1870
  "outputs": [
1365
1871
  {
1366
- "internalType": "UFixed",
1872
+ "internalType": "Key32",
1367
1873
  "name": "",
1368
- "type": "uint256"
1874
+ "type": "bytes32"
1369
1875
  }
1370
1876
  ],
1371
1877
  "stateMutability": "pure",
1372
1878
  "type": "function"
1373
1879
  },
1374
1880
  {
1375
- "inputs": [],
1376
- "name": "getVersion",
1881
+ "inputs": [
1882
+ {
1883
+ "internalType": "NftId",
1884
+ "name": "distNftId",
1885
+ "type": "uint96"
1886
+ }
1887
+ ],
1888
+ "name": "toDistributorTypeKey32",
1377
1889
  "outputs": [
1378
1890
  {
1379
- "internalType": "Version",
1891
+ "internalType": "Key32",
1380
1892
  "name": "",
1381
- "type": "uint24"
1893
+ "type": "bytes32"
1382
1894
  }
1383
1895
  ],
1384
1896
  "stateMutability": "pure",
@@ -1387,186 +1899,165 @@
1387
1899
  {
1388
1900
  "inputs": [
1389
1901
  {
1390
- "internalType": "uint256",
1391
- "name": "idx",
1392
- "type": "uint256"
1902
+ "internalType": "ObjectType",
1903
+ "name": "objectType",
1904
+ "type": "uint8"
1905
+ },
1906
+ {
1907
+ "internalType": "KeyId",
1908
+ "name": "id",
1909
+ "type": "bytes31"
1393
1910
  }
1394
1911
  ],
1395
- "name": "getVersion",
1912
+ "name": "toKey32",
1396
1913
  "outputs": [
1397
1914
  {
1398
- "internalType": "Version",
1915
+ "internalType": "Key32",
1399
1916
  "name": "",
1400
- "type": "uint24"
1917
+ "type": "bytes32"
1401
1918
  }
1402
1919
  ],
1403
- "stateMutability": "view",
1920
+ "stateMutability": "pure",
1404
1921
  "type": "function"
1405
1922
  },
1406
1923
  {
1407
- "inputs": [],
1408
- "name": "getVersionCount",
1924
+ "inputs": [
1925
+ {
1926
+ "internalType": "NftId",
1927
+ "name": "policyNftId",
1928
+ "type": "uint96"
1929
+ }
1930
+ ],
1931
+ "name": "toPolicyKey32",
1409
1932
  "outputs": [
1410
1933
  {
1411
- "internalType": "uint256",
1934
+ "internalType": "Key32",
1412
1935
  "name": "",
1413
- "type": "uint256"
1936
+ "type": "bytes32"
1414
1937
  }
1415
1938
  ],
1416
- "stateMutability": "view",
1939
+ "stateMutability": "pure",
1417
1940
  "type": "function"
1418
1941
  },
1419
1942
  {
1420
1943
  "inputs": [
1421
1944
  {
1422
- "internalType": "Version",
1423
- "name": "_version",
1424
- "type": "uint24"
1425
- }
1426
- ],
1427
- "name": "getVersionInfo",
1428
- "outputs": [
1945
+ "internalType": "NftId",
1946
+ "name": "applicationNftId",
1947
+ "type": "uint96"
1948
+ },
1429
1949
  {
1430
1950
  "components": [
1431
1951
  {
1432
- "internalType": "Version",
1433
- "name": "version",
1434
- "type": "uint24"
1952
+ "internalType": "NftId",
1953
+ "name": "productNftId",
1954
+ "type": "uint96"
1435
1955
  },
1436
1956
  {
1437
- "internalType": "address",
1438
- "name": "implementation",
1439
- "type": "address"
1957
+ "internalType": "NftId",
1958
+ "name": "bundleNftId",
1959
+ "type": "uint96"
1440
1960
  },
1441
1961
  {
1442
- "internalType": "address",
1443
- "name": "activatedBy",
1444
- "type": "address"
1962
+ "internalType": "ReferralId",
1963
+ "name": "referralId",
1964
+ "type": "bytes8"
1445
1965
  },
1446
1966
  {
1447
- "internalType": "Timestamp",
1448
- "name": "activatedAt",
1449
- "type": "uint40"
1967
+ "internalType": "RiskId",
1968
+ "name": "riskId",
1969
+ "type": "bytes8"
1450
1970
  },
1451
1971
  {
1452
- "internalType": "Blocknumber",
1453
- "name": "activatedIn",
1454
- "type": "uint32"
1455
- }
1456
- ],
1457
- "internalType": "struct IVersionable.VersionInfo",
1458
- "name": "",
1459
- "type": "tuple"
1460
- }
1461
- ],
1462
- "stateMutability": "view",
1463
- "type": "function"
1464
- },
1465
- {
1466
- "inputs": [],
1467
- "name": "getZeroFee",
1468
- "outputs": [
1469
- {
1470
- "components": [
1972
+ "internalType": "uint256",
1973
+ "name": "sumInsuredAmount",
1974
+ "type": "uint256"
1975
+ },
1471
1976
  {
1472
- "internalType": "UFixed",
1473
- "name": "fractionalFee",
1977
+ "internalType": "uint256",
1978
+ "name": "premiumAmount",
1979
+ "type": "uint256"
1980
+ },
1981
+ {
1982
+ "internalType": "uint256",
1983
+ "name": "premiumPaidAmount",
1474
1984
  "type": "uint256"
1475
1985
  },
1986
+ {
1987
+ "internalType": "Seconds",
1988
+ "name": "lifetime",
1989
+ "type": "uint40"
1990
+ },
1991
+ {
1992
+ "internalType": "bytes",
1993
+ "name": "applicationData",
1994
+ "type": "bytes"
1995
+ },
1996
+ {
1997
+ "internalType": "bytes",
1998
+ "name": "policyData",
1999
+ "type": "bytes"
2000
+ },
2001
+ {
2002
+ "internalType": "uint16",
2003
+ "name": "claimsCount",
2004
+ "type": "uint16"
2005
+ },
2006
+ {
2007
+ "internalType": "uint16",
2008
+ "name": "openClaimsCount",
2009
+ "type": "uint16"
2010
+ },
1476
2011
  {
1477
2012
  "internalType": "uint256",
1478
- "name": "fixedFee",
2013
+ "name": "payoutAmount",
1479
2014
  "type": "uint256"
2015
+ },
2016
+ {
2017
+ "internalType": "Timestamp",
2018
+ "name": "activatedAt",
2019
+ "type": "uint40"
2020
+ },
2021
+ {
2022
+ "internalType": "Timestamp",
2023
+ "name": "expiredAt",
2024
+ "type": "uint40"
2025
+ },
2026
+ {
2027
+ "internalType": "Timestamp",
2028
+ "name": "closedAt",
2029
+ "type": "uint40"
1480
2030
  }
1481
2031
  ],
1482
- "internalType": "struct Fee",
1483
- "name": "fee",
2032
+ "internalType": "struct IPolicy.PolicyInfo",
2033
+ "name": "policy",
1484
2034
  "type": "tuple"
1485
- }
1486
- ],
1487
- "stateMutability": "view",
1488
- "type": "function"
1489
- },
1490
- {
1491
- "inputs": [
1492
- {
1493
- "internalType": "RoleId",
1494
- "name": "role",
1495
- "type": "bytes8"
1496
2035
  },
1497
2036
  {
1498
- "internalType": "address",
1499
- "name": "member",
1500
- "type": "address"
2037
+ "internalType": "StateId",
2038
+ "name": "newState",
2039
+ "type": "uint8"
1501
2040
  }
1502
2041
  ],
1503
- "name": "grantRole",
2042
+ "name": "updateApplication",
1504
2043
  "outputs": [],
1505
2044
  "stateMutability": "nonpayable",
1506
2045
  "type": "function"
1507
2046
  },
1508
- {
1509
- "inputs": [
1510
- {
1511
- "internalType": "RoleId",
1512
- "name": "role",
1513
- "type": "bytes8"
1514
- },
1515
- {
1516
- "internalType": "address",
1517
- "name": "member",
1518
- "type": "address"
1519
- }
1520
- ],
1521
- "name": "hasRole",
1522
- "outputs": [
1523
- {
1524
- "internalType": "bool",
1525
- "name": "",
1526
- "type": "bool"
1527
- }
1528
- ],
1529
- "stateMutability": "view",
1530
- "type": "function"
1531
- },
1532
2047
  {
1533
2048
  "inputs": [
1534
2049
  {
1535
2050
  "internalType": "NftId",
1536
- "name": "productNftId",
2051
+ "name": "applicationNftId",
1537
2052
  "type": "uint96"
1538
- }
1539
- ],
1540
- "name": "hasTreasuryInfo",
1541
- "outputs": [
1542
- {
1543
- "internalType": "bool",
1544
- "name": "hasInfo",
1545
- "type": "bool"
1546
- }
1547
- ],
1548
- "stateMutability": "view",
1549
- "type": "function"
1550
- },
1551
- {
1552
- "inputs": [
1553
- {
1554
- "internalType": "address",
1555
- "name": "implementation",
1556
- "type": "address"
1557
- },
1558
- {
1559
- "internalType": "address",
1560
- "name": "activatedBy",
1561
- "type": "address"
1562
2053
  },
1563
2054
  {
1564
- "internalType": "bytes",
1565
- "name": "data",
1566
- "type": "bytes"
2055
+ "internalType": "StateId",
2056
+ "name": "newState",
2057
+ "type": "uint8"
1567
2058
  }
1568
2059
  ],
1569
- "name": "initialize",
2060
+ "name": "updateApplicationState",
1570
2061
  "outputs": [],
1571
2062
  "stateMutability": "nonpayable",
1572
2063
  "type": "function"
@@ -1574,25 +2065,81 @@
1574
2065
  {
1575
2066
  "inputs": [
1576
2067
  {
1577
- "internalType": "Version",
1578
- "name": "_version",
1579
- "type": "uint24"
1580
- }
1581
- ],
1582
- "name": "isInitialized",
1583
- "outputs": [
2068
+ "internalType": "NftId",
2069
+ "name": "bundleNftId",
2070
+ "type": "uint96"
2071
+ },
2072
+ {
2073
+ "components": [
2074
+ {
2075
+ "internalType": "NftId",
2076
+ "name": "poolNftId",
2077
+ "type": "uint96"
2078
+ },
2079
+ {
2080
+ "components": [
2081
+ {
2082
+ "internalType": "UFixed",
2083
+ "name": "fractionalFee",
2084
+ "type": "uint256"
2085
+ },
2086
+ {
2087
+ "internalType": "uint256",
2088
+ "name": "fixedFee",
2089
+ "type": "uint256"
2090
+ }
2091
+ ],
2092
+ "internalType": "struct Fee",
2093
+ "name": "fee",
2094
+ "type": "tuple"
2095
+ },
2096
+ {
2097
+ "internalType": "bytes",
2098
+ "name": "filter",
2099
+ "type": "bytes"
2100
+ },
2101
+ {
2102
+ "internalType": "uint256",
2103
+ "name": "capitalAmount",
2104
+ "type": "uint256"
2105
+ },
2106
+ {
2107
+ "internalType": "uint256",
2108
+ "name": "lockedAmount",
2109
+ "type": "uint256"
2110
+ },
2111
+ {
2112
+ "internalType": "uint256",
2113
+ "name": "balanceAmount",
2114
+ "type": "uint256"
2115
+ },
2116
+ {
2117
+ "internalType": "Seconds",
2118
+ "name": "lifetime",
2119
+ "type": "uint40"
2120
+ },
2121
+ {
2122
+ "internalType": "Timestamp",
2123
+ "name": "expiredAt",
2124
+ "type": "uint40"
2125
+ },
2126
+ {
2127
+ "internalType": "Timestamp",
2128
+ "name": "closedAt",
2129
+ "type": "uint40"
2130
+ }
2131
+ ],
2132
+ "internalType": "struct IBundle.BundleInfo",
2133
+ "name": "bundle",
2134
+ "type": "tuple"
2135
+ },
1584
2136
  {
1585
- "internalType": "bool",
1586
- "name": "",
1587
- "type": "bool"
2137
+ "internalType": "StateId",
2138
+ "name": "newState",
2139
+ "type": "uint8"
1588
2140
  }
1589
2141
  ],
1590
- "stateMutability": "view",
1591
- "type": "function"
1592
- },
1593
- {
1594
- "inputs": [],
1595
- "name": "linkToRegisteredNftId",
2142
+ "name": "updateBundle",
1596
2143
  "outputs": [],
1597
2144
  "stateMutability": "nonpayable",
1598
2145
  "type": "function"
@@ -1601,21 +2148,16 @@
1601
2148
  "inputs": [
1602
2149
  {
1603
2150
  "internalType": "NftId",
1604
- "name": "nftId",
2151
+ "name": "bundleNftId",
1605
2152
  "type": "uint96"
1606
2153
  },
1607
2154
  {
1608
- "internalType": "contract IERC20Metadata",
1609
- "name": "token",
1610
- "type": "address"
1611
- },
1612
- {
1613
- "internalType": "address",
1614
- "name": "wallet",
1615
- "type": "address"
2155
+ "internalType": "StateId",
2156
+ "name": "newState",
2157
+ "type": "uint8"
1616
2158
  }
1617
2159
  ],
1618
- "name": "registerComponent",
2160
+ "name": "updateBundleState",
1619
2161
  "outputs": [],
1620
2162
  "stateMutability": "nonpayable",
1621
2163
  "type": "function"
@@ -1624,28 +2166,48 @@
1624
2166
  "inputs": [
1625
2167
  {
1626
2168
  "internalType": "NftId",
1627
- "name": "nftId",
2169
+ "name": "policyNftId",
1628
2170
  "type": "uint96"
1629
2171
  },
2172
+ {
2173
+ "internalType": "ClaimId",
2174
+ "name": "claimId",
2175
+ "type": "uint16"
2176
+ },
1630
2177
  {
1631
2178
  "components": [
1632
2179
  {
1633
- "internalType": "bool",
1634
- "name": "isVerifying",
1635
- "type": "bool"
2180
+ "internalType": "uint256",
2181
+ "name": "claimAmount",
2182
+ "type": "uint256"
1636
2183
  },
1637
2184
  {
1638
- "internalType": "UFixed",
1639
- "name": "collateralizationLevel",
2185
+ "internalType": "uint256",
2186
+ "name": "paidAmount",
1640
2187
  "type": "uint256"
2188
+ },
2189
+ {
2190
+ "internalType": "bytes",
2191
+ "name": "data",
2192
+ "type": "bytes"
2193
+ },
2194
+ {
2195
+ "internalType": "Timestamp",
2196
+ "name": "closedAt",
2197
+ "type": "uint40"
1641
2198
  }
1642
2199
  ],
1643
- "internalType": "struct IPool.PoolInfo",
1644
- "name": "info",
2200
+ "internalType": "struct IPolicy.ClaimInfo",
2201
+ "name": "claim",
1645
2202
  "type": "tuple"
2203
+ },
2204
+ {
2205
+ "internalType": "StateId",
2206
+ "name": "newState",
2207
+ "type": "uint8"
1646
2208
  }
1647
2209
  ],
1648
- "name": "registerPool",
2210
+ "name": "updateClaim",
1649
2211
  "outputs": [],
1650
2212
  "stateMutability": "nonpayable",
1651
2213
  "type": "function"
@@ -1654,24 +2216,42 @@
1654
2216
  "inputs": [
1655
2217
  {
1656
2218
  "internalType": "NftId",
1657
- "name": "productNftId",
2219
+ "name": "policyNftId",
2220
+ "type": "uint96"
2221
+ },
2222
+ {
2223
+ "internalType": "ClaimId",
2224
+ "name": "claimId",
2225
+ "type": "uint16"
2226
+ },
2227
+ {
2228
+ "internalType": "StateId",
2229
+ "name": "newState",
2230
+ "type": "uint8"
2231
+ }
2232
+ ],
2233
+ "name": "updateClaimState",
2234
+ "outputs": [],
2235
+ "stateMutability": "nonpayable",
2236
+ "type": "function"
2237
+ },
2238
+ {
2239
+ "inputs": [
2240
+ {
2241
+ "internalType": "NftId",
2242
+ "name": "distributionNftId",
1658
2243
  "type": "uint96"
1659
2244
  },
1660
2245
  {
1661
2246
  "components": [
1662
2247
  {
1663
2248
  "internalType": "NftId",
1664
- "name": "poolNftId",
1665
- "type": "uint96"
1666
- },
1667
- {
1668
- "internalType": "NftId",
1669
- "name": "distributionNftId",
2249
+ "name": "productNftId",
1670
2250
  "type": "uint96"
1671
2251
  },
1672
2252
  {
1673
- "internalType": "contract IERC20Metadata",
1674
- "name": "token",
2253
+ "internalType": "contract TokenHandler",
2254
+ "name": "tokenHandler",
1675
2255
  "type": "address"
1676
2256
  },
1677
2257
  {
@@ -1688,101 +2268,84 @@
1688
2268
  }
1689
2269
  ],
1690
2270
  "internalType": "struct Fee",
1691
- "name": "productFee",
1692
- "type": "tuple"
1693
- },
1694
- {
1695
- "components": [
1696
- {
1697
- "internalType": "UFixed",
1698
- "name": "fractionalFee",
1699
- "type": "uint256"
1700
- },
1701
- {
1702
- "internalType": "uint256",
1703
- "name": "fixedFee",
1704
- "type": "uint256"
1705
- }
1706
- ],
1707
- "internalType": "struct Fee",
1708
- "name": "processingFee",
2271
+ "name": "distributionFee",
1709
2272
  "type": "tuple"
1710
2273
  },
1711
2274
  {
1712
- "components": [
1713
- {
1714
- "internalType": "UFixed",
1715
- "name": "fractionalFee",
1716
- "type": "uint256"
1717
- },
1718
- {
1719
- "internalType": "uint256",
1720
- "name": "fixedFee",
1721
- "type": "uint256"
1722
- }
1723
- ],
1724
- "internalType": "struct Fee",
1725
- "name": "poolFee",
1726
- "type": "tuple"
1727
- },
2275
+ "internalType": "address",
2276
+ "name": "wallet",
2277
+ "type": "address"
2278
+ }
2279
+ ],
2280
+ "internalType": "struct ISetup.DistributionSetupInfo",
2281
+ "name": "setup",
2282
+ "type": "tuple"
2283
+ },
2284
+ {
2285
+ "internalType": "StateId",
2286
+ "name": "newState",
2287
+ "type": "uint8"
2288
+ }
2289
+ ],
2290
+ "name": "updateDistributionSetup",
2291
+ "outputs": [],
2292
+ "stateMutability": "nonpayable",
2293
+ "type": "function"
2294
+ },
2295
+ {
2296
+ "inputs": [
2297
+ {
2298
+ "internalType": "NftId",
2299
+ "name": "distributionNftId",
2300
+ "type": "uint96"
2301
+ },
2302
+ {
2303
+ "internalType": "StateId",
2304
+ "name": "newState",
2305
+ "type": "uint8"
2306
+ }
2307
+ ],
2308
+ "name": "updateDistributionSetupState",
2309
+ "outputs": [],
2310
+ "stateMutability": "nonpayable",
2311
+ "type": "function"
2312
+ },
2313
+ {
2314
+ "inputs": [
2315
+ {
2316
+ "internalType": "NftId",
2317
+ "name": "nftId",
2318
+ "type": "uint96"
2319
+ },
2320
+ {
2321
+ "components": [
1728
2322
  {
1729
- "components": [
1730
- {
1731
- "internalType": "UFixed",
1732
- "name": "fractionalFee",
1733
- "type": "uint256"
1734
- },
1735
- {
1736
- "internalType": "uint256",
1737
- "name": "fixedFee",
1738
- "type": "uint256"
1739
- }
1740
- ],
1741
- "internalType": "struct Fee",
1742
- "name": "stakingFee",
1743
- "type": "tuple"
2323
+ "internalType": "DistributorType",
2324
+ "name": "distributorType",
2325
+ "type": "bytes8"
1744
2326
  },
1745
2327
  {
1746
- "components": [
1747
- {
1748
- "internalType": "UFixed",
1749
- "name": "fractionalFee",
1750
- "type": "uint256"
1751
- },
1752
- {
1753
- "internalType": "uint256",
1754
- "name": "fixedFee",
1755
- "type": "uint256"
1756
- }
1757
- ],
1758
- "internalType": "struct Fee",
1759
- "name": "performanceFee",
1760
- "type": "tuple"
2328
+ "internalType": "bool",
2329
+ "name": "active",
2330
+ "type": "bool"
1761
2331
  },
1762
2332
  {
1763
- "components": [
1764
- {
1765
- "internalType": "UFixed",
1766
- "name": "fractionalFee",
1767
- "type": "uint256"
1768
- },
1769
- {
1770
- "internalType": "uint256",
1771
- "name": "fixedFee",
1772
- "type": "uint256"
1773
- }
1774
- ],
1775
- "internalType": "struct Fee",
1776
- "name": "distributionFee",
1777
- "type": "tuple"
2333
+ "internalType": "bytes",
2334
+ "name": "data",
2335
+ "type": "bytes"
1778
2336
  }
1779
2337
  ],
1780
- "internalType": "struct ITreasury.TreasuryInfo",
1781
- "name": "setup",
2338
+ "internalType": "struct IDistribution.DistributorInfo",
2339
+ "name": "info",
1782
2340
  "type": "tuple"
2341
+ },
2342
+ {
2343
+ "internalType": "StateId",
2344
+ "name": "newState",
2345
+ "type": "uint8"
1783
2346
  }
1784
2347
  ],
1785
- "name": "registerProductSetup",
2348
+ "name": "updateDistributor",
1786
2349
  "outputs": [],
1787
2350
  "stateMutability": "nonpayable",
1788
2351
  "type": "function"
@@ -1791,131 +2354,172 @@
1791
2354
  "inputs": [
1792
2355
  {
1793
2356
  "internalType": "NftId",
1794
- "name": "bundleNftId",
2357
+ "name": "nftId",
1795
2358
  "type": "uint96"
1796
2359
  },
1797
2360
  {
1798
- "internalType": "NftId",
1799
- "name": "policyNftId",
1800
- "type": "uint96"
1801
- }
1802
- ],
1803
- "name": "releasePolicy",
1804
- "outputs": [
1805
- {
1806
- "internalType": "uint256",
1807
- "name": "collateralAmount",
1808
- "type": "uint256"
2361
+ "internalType": "StateId",
2362
+ "name": "newState",
2363
+ "type": "uint8"
2364
+ }
2365
+ ],
2366
+ "name": "updateDistributorState",
2367
+ "outputs": [],
2368
+ "stateMutability": "nonpayable",
2369
+ "type": "function"
2370
+ },
2371
+ {
2372
+ "inputs": [
2373
+ {
2374
+ "internalType": "Key32",
2375
+ "name": "distributorKey",
2376
+ "type": "bytes32"
2377
+ },
2378
+ {
2379
+ "components": [
2380
+ {
2381
+ "internalType": "string",
2382
+ "name": "name",
2383
+ "type": "string"
2384
+ },
2385
+ {
2386
+ "internalType": "UFixed",
2387
+ "name": "minDiscountPercentage",
2388
+ "type": "uint256"
2389
+ },
2390
+ {
2391
+ "internalType": "UFixed",
2392
+ "name": "maxDiscountPercentage",
2393
+ "type": "uint256"
2394
+ },
2395
+ {
2396
+ "internalType": "UFixed",
2397
+ "name": "commissionPercentage",
2398
+ "type": "uint256"
2399
+ },
2400
+ {
2401
+ "internalType": "uint32",
2402
+ "name": "maxReferralCount",
2403
+ "type": "uint32"
2404
+ },
2405
+ {
2406
+ "internalType": "uint32",
2407
+ "name": "maxReferralLifetime",
2408
+ "type": "uint32"
2409
+ },
2410
+ {
2411
+ "internalType": "bool",
2412
+ "name": "allowSelfReferrals",
2413
+ "type": "bool"
2414
+ },
2415
+ {
2416
+ "internalType": "bool",
2417
+ "name": "allowRenewals",
2418
+ "type": "bool"
2419
+ },
2420
+ {
2421
+ "internalType": "bytes",
2422
+ "name": "data",
2423
+ "type": "bytes"
2424
+ }
2425
+ ],
2426
+ "internalType": "struct IDistribution.DistributorTypeInfo",
2427
+ "name": "info",
2428
+ "type": "tuple"
2429
+ },
2430
+ {
2431
+ "internalType": "StateId",
2432
+ "name": "newState",
2433
+ "type": "uint8"
1809
2434
  }
1810
2435
  ],
2436
+ "name": "updateDistributorType",
2437
+ "outputs": [],
1811
2438
  "stateMutability": "nonpayable",
1812
2439
  "type": "function"
1813
2440
  },
1814
2441
  {
1815
2442
  "inputs": [
1816
2443
  {
1817
- "internalType": "RoleId",
1818
- "name": "role",
1819
- "type": "bytes8"
2444
+ "internalType": "Key32",
2445
+ "name": "distributorKey",
2446
+ "type": "bytes32"
1820
2447
  },
1821
2448
  {
1822
- "internalType": "address",
1823
- "name": "member",
1824
- "type": "address"
2449
+ "internalType": "StateId",
2450
+ "name": "newState",
2451
+ "type": "uint8"
1825
2452
  }
1826
2453
  ],
1827
- "name": "revokeRole",
2454
+ "name": "updateDistributorTypeState",
1828
2455
  "outputs": [],
1829
2456
  "stateMutability": "nonpayable",
1830
2457
  "type": "function"
1831
2458
  },
1832
- {
1833
- "inputs": [
1834
- {
1835
- "internalType": "RoleId",
1836
- "name": "role",
1837
- "type": "bytes8"
1838
- }
1839
- ],
1840
- "name": "roleExists",
1841
- "outputs": [
1842
- {
1843
- "internalType": "bool",
1844
- "name": "",
1845
- "type": "bool"
1846
- }
1847
- ],
1848
- "stateMutability": "view",
1849
- "type": "function"
1850
- },
1851
2459
  {
1852
2460
  "inputs": [
1853
2461
  {
1854
2462
  "internalType": "NftId",
1855
- "name": "bundleNftId",
2463
+ "name": "policyNftId",
1856
2464
  "type": "uint96"
1857
2465
  },
2466
+ {
2467
+ "internalType": "NumberId",
2468
+ "name": "payoutId",
2469
+ "type": "uint32"
2470
+ },
1858
2471
  {
1859
2472
  "components": [
1860
2473
  {
1861
- "internalType": "NftId",
1862
- "name": "poolNftId",
1863
- "type": "uint96"
1864
- },
1865
- {
1866
- "components": [
1867
- {
1868
- "internalType": "UFixed",
1869
- "name": "fractionalFee",
1870
- "type": "uint256"
1871
- },
1872
- {
1873
- "internalType": "uint256",
1874
- "name": "fixedFee",
1875
- "type": "uint256"
1876
- }
1877
- ],
1878
- "internalType": "struct Fee",
1879
- "name": "fee",
1880
- "type": "tuple"
1881
- },
1882
- {
1883
- "internalType": "bytes",
1884
- "name": "filter",
1885
- "type": "bytes"
1886
- },
1887
- {
1888
- "internalType": "uint256",
1889
- "name": "capitalAmount",
1890
- "type": "uint256"
1891
- },
1892
- {
1893
- "internalType": "uint256",
1894
- "name": "lockedAmount",
1895
- "type": "uint256"
2474
+ "internalType": "ClaimId",
2475
+ "name": "claimId",
2476
+ "type": "uint16"
1896
2477
  },
1897
2478
  {
1898
2479
  "internalType": "uint256",
1899
- "name": "balanceAmount",
2480
+ "name": "amount",
1900
2481
  "type": "uint256"
1901
2482
  },
1902
2483
  {
1903
- "internalType": "Timestamp",
1904
- "name": "expiredAt",
1905
- "type": "uint40"
2484
+ "internalType": "bytes",
2485
+ "name": "data",
2486
+ "type": "bytes"
1906
2487
  },
1907
2488
  {
1908
2489
  "internalType": "Timestamp",
1909
- "name": "closedAt",
2490
+ "name": "paidAt",
1910
2491
  "type": "uint40"
1911
2492
  }
1912
2493
  ],
1913
- "internalType": "struct IBundle.BundleInfo",
1914
- "name": "info",
2494
+ "internalType": "struct IPolicy.PayoutInfo",
2495
+ "name": "payout",
1915
2496
  "type": "tuple"
2497
+ },
2498
+ {
2499
+ "internalType": "StateId",
2500
+ "name": "newState",
2501
+ "type": "uint8"
2502
+ }
2503
+ ],
2504
+ "name": "updatePayout",
2505
+ "outputs": [],
2506
+ "stateMutability": "nonpayable",
2507
+ "type": "function"
2508
+ },
2509
+ {
2510
+ "inputs": [
2511
+ {
2512
+ "internalType": "NftId",
2513
+ "name": "policyNftId",
2514
+ "type": "uint96"
2515
+ },
2516
+ {
2517
+ "internalType": "StateId",
2518
+ "name": "newState",
2519
+ "type": "uint8"
1916
2520
  }
1917
2521
  ],
1918
- "name": "setBundleInfo",
2522
+ "name": "updatePayoutState",
1919
2523
  "outputs": [],
1920
2524
  "stateMutability": "nonpayable",
1921
2525
  "type": "function"
@@ -1944,11 +2548,6 @@
1944
2548
  "name": "referralId",
1945
2549
  "type": "bytes8"
1946
2550
  },
1947
- {
1948
- "internalType": "address",
1949
- "name": "beneficiary",
1950
- "type": "address"
1951
- },
1952
2551
  {
1953
2552
  "internalType": "RiskId",
1954
2553
  "name": "riskId",
@@ -1970,9 +2569,9 @@
1970
2569
  "type": "uint256"
1971
2570
  },
1972
2571
  {
1973
- "internalType": "uint256",
2572
+ "internalType": "Seconds",
1974
2573
  "name": "lifetime",
1975
- "type": "uint256"
2574
+ "type": "uint40"
1976
2575
  },
1977
2576
  {
1978
2577
  "internalType": "bytes",
@@ -1984,6 +2583,21 @@
1984
2583
  "name": "policyData",
1985
2584
  "type": "bytes"
1986
2585
  },
2586
+ {
2587
+ "internalType": "uint16",
2588
+ "name": "claimsCount",
2589
+ "type": "uint16"
2590
+ },
2591
+ {
2592
+ "internalType": "uint16",
2593
+ "name": "openClaimsCount",
2594
+ "type": "uint16"
2595
+ },
2596
+ {
2597
+ "internalType": "uint256",
2598
+ "name": "payoutAmount",
2599
+ "type": "uint256"
2600
+ },
1987
2601
  {
1988
2602
  "internalType": "Timestamp",
1989
2603
  "name": "activatedAt",
@@ -2001,11 +2615,16 @@
2001
2615
  }
2002
2616
  ],
2003
2617
  "internalType": "struct IPolicy.PolicyInfo",
2004
- "name": "info",
2618
+ "name": "policy",
2005
2619
  "type": "tuple"
2620
+ },
2621
+ {
2622
+ "internalType": "StateId",
2623
+ "name": "newState",
2624
+ "type": "uint8"
2006
2625
  }
2007
2626
  ],
2008
- "name": "setPolicyInfo",
2627
+ "name": "updatePolicy",
2009
2628
  "outputs": [],
2010
2629
  "stateMutability": "nonpayable",
2011
2630
  "type": "function"
@@ -2013,9 +2632,27 @@
2013
2632
  {
2014
2633
  "inputs": [
2015
2634
  {
2016
- "internalType": "RiskId",
2017
- "name": "riskId",
2018
- "type": "bytes8"
2635
+ "internalType": "NftId",
2636
+ "name": "policyNftId",
2637
+ "type": "uint96"
2638
+ },
2639
+ {
2640
+ "internalType": "StateId",
2641
+ "name": "newState",
2642
+ "type": "uint8"
2643
+ }
2644
+ ],
2645
+ "name": "updatePolicyState",
2646
+ "outputs": [],
2647
+ "stateMutability": "nonpayable",
2648
+ "type": "function"
2649
+ },
2650
+ {
2651
+ "inputs": [
2652
+ {
2653
+ "internalType": "NftId",
2654
+ "name": "poolNftId",
2655
+ "type": "uint96"
2019
2656
  },
2020
2657
  {
2021
2658
  "components": [
@@ -2025,17 +2662,108 @@
2025
2662
  "type": "uint96"
2026
2663
  },
2027
2664
  {
2028
- "internalType": "bytes",
2029
- "name": "data",
2030
- "type": "bytes"
2665
+ "internalType": "contract TokenHandler",
2666
+ "name": "tokenHandler",
2667
+ "type": "address"
2668
+ },
2669
+ {
2670
+ "internalType": "uint256",
2671
+ "name": "maxCapitalAmount",
2672
+ "type": "uint256"
2673
+ },
2674
+ {
2675
+ "internalType": "bool",
2676
+ "name": "isInterceptingBundleTransfers",
2677
+ "type": "bool"
2678
+ },
2679
+ {
2680
+ "internalType": "bool",
2681
+ "name": "isExternallyManaged",
2682
+ "type": "bool"
2683
+ },
2684
+ {
2685
+ "internalType": "bool",
2686
+ "name": "isVerifyingApplications",
2687
+ "type": "bool"
2688
+ },
2689
+ {
2690
+ "internalType": "UFixed",
2691
+ "name": "collateralizationLevel",
2692
+ "type": "uint256"
2693
+ },
2694
+ {
2695
+ "internalType": "UFixed",
2696
+ "name": "retentionLevel",
2697
+ "type": "uint256"
2698
+ },
2699
+ {
2700
+ "components": [
2701
+ {
2702
+ "internalType": "UFixed",
2703
+ "name": "fractionalFee",
2704
+ "type": "uint256"
2705
+ },
2706
+ {
2707
+ "internalType": "uint256",
2708
+ "name": "fixedFee",
2709
+ "type": "uint256"
2710
+ }
2711
+ ],
2712
+ "internalType": "struct Fee",
2713
+ "name": "poolFee",
2714
+ "type": "tuple"
2715
+ },
2716
+ {
2717
+ "components": [
2718
+ {
2719
+ "internalType": "UFixed",
2720
+ "name": "fractionalFee",
2721
+ "type": "uint256"
2722
+ },
2723
+ {
2724
+ "internalType": "uint256",
2725
+ "name": "fixedFee",
2726
+ "type": "uint256"
2727
+ }
2728
+ ],
2729
+ "internalType": "struct Fee",
2730
+ "name": "stakingFee",
2731
+ "type": "tuple"
2732
+ },
2733
+ {
2734
+ "components": [
2735
+ {
2736
+ "internalType": "UFixed",
2737
+ "name": "fractionalFee",
2738
+ "type": "uint256"
2739
+ },
2740
+ {
2741
+ "internalType": "uint256",
2742
+ "name": "fixedFee",
2743
+ "type": "uint256"
2744
+ }
2745
+ ],
2746
+ "internalType": "struct Fee",
2747
+ "name": "performanceFee",
2748
+ "type": "tuple"
2749
+ },
2750
+ {
2751
+ "internalType": "address",
2752
+ "name": "wallet",
2753
+ "type": "address"
2031
2754
  }
2032
2755
  ],
2033
- "internalType": "struct IRisk.RiskInfo",
2034
- "name": "info",
2756
+ "internalType": "struct ISetup.PoolSetupInfo",
2757
+ "name": "setup",
2035
2758
  "type": "tuple"
2759
+ },
2760
+ {
2761
+ "internalType": "StateId",
2762
+ "name": "newState",
2763
+ "type": "uint8"
2036
2764
  }
2037
2765
  ],
2038
- "name": "setRiskInfo",
2766
+ "name": "updatePoolSetup",
2039
2767
  "outputs": [],
2040
2768
  "stateMutability": "nonpayable",
2041
2769
  "type": "function"
@@ -2043,17 +2771,17 @@
2043
2771
  {
2044
2772
  "inputs": [
2045
2773
  {
2046
- "internalType": "RoleId",
2047
- "name": "role",
2048
- "type": "bytes8"
2774
+ "internalType": "NftId",
2775
+ "name": "poolNftId",
2776
+ "type": "uint96"
2049
2777
  },
2050
- {
2051
- "internalType": "bool",
2052
- "name": "active",
2053
- "type": "bool"
2778
+ {
2779
+ "internalType": "StateId",
2780
+ "name": "newState",
2781
+ "type": "uint8"
2054
2782
  }
2055
2783
  ],
2056
- "name": "setRoleState",
2784
+ "name": "updatePoolSetupState",
2057
2785
  "outputs": [],
2058
2786
  "stateMutability": "nonpayable",
2059
2787
  "type": "function"
@@ -2068,9 +2796,14 @@
2068
2796
  {
2069
2797
  "components": [
2070
2798
  {
2071
- "internalType": "NftId",
2072
- "name": "poolNftId",
2073
- "type": "uint96"
2799
+ "internalType": "contract IERC20Metadata",
2800
+ "name": "token",
2801
+ "type": "address"
2802
+ },
2803
+ {
2804
+ "internalType": "contract TokenHandler",
2805
+ "name": "tokenHandler",
2806
+ "type": "address"
2074
2807
  },
2075
2808
  {
2076
2809
  "internalType": "NftId",
@@ -2078,9 +2811,9 @@
2078
2811
  "type": "uint96"
2079
2812
  },
2080
2813
  {
2081
- "internalType": "contract IERC20Metadata",
2082
- "name": "token",
2083
- "type": "address"
2814
+ "internalType": "NftId",
2815
+ "name": "poolNftId",
2816
+ "type": "uint96"
2084
2817
  },
2085
2818
  {
2086
2819
  "components": [
@@ -2096,7 +2829,7 @@
2096
2829
  }
2097
2830
  ],
2098
2831
  "internalType": "struct Fee",
2099
- "name": "productFee",
2832
+ "name": "distributionFee",
2100
2833
  "type": "tuple"
2101
2834
  },
2102
2835
  {
@@ -2113,7 +2846,7 @@
2113
2846
  }
2114
2847
  ],
2115
2848
  "internalType": "struct Fee",
2116
- "name": "processingFee",
2849
+ "name": "productFee",
2117
2850
  "type": "tuple"
2118
2851
  },
2119
2852
  {
@@ -2130,7 +2863,7 @@
2130
2863
  }
2131
2864
  ],
2132
2865
  "internalType": "struct Fee",
2133
- "name": "poolFee",
2866
+ "name": "processingFee",
2134
2867
  "type": "tuple"
2135
2868
  },
2136
2869
  {
@@ -2147,7 +2880,7 @@
2147
2880
  }
2148
2881
  ],
2149
2882
  "internalType": "struct Fee",
2150
- "name": "stakingFee",
2883
+ "name": "poolFee",
2151
2884
  "type": "tuple"
2152
2885
  },
2153
2886
  {
@@ -2164,7 +2897,7 @@
2164
2897
  }
2165
2898
  ],
2166
2899
  "internalType": "struct Fee",
2167
- "name": "performanceFee",
2900
+ "name": "stakingFee",
2168
2901
  "type": "tuple"
2169
2902
  },
2170
2903
  {
@@ -2181,53 +2914,49 @@
2181
2914
  }
2182
2915
  ],
2183
2916
  "internalType": "struct Fee",
2184
- "name": "distributionFee",
2917
+ "name": "performanceFee",
2185
2918
  "type": "tuple"
2919
+ },
2920
+ {
2921
+ "internalType": "bool",
2922
+ "name": "isIntercepting",
2923
+ "type": "bool"
2924
+ },
2925
+ {
2926
+ "internalType": "address",
2927
+ "name": "wallet",
2928
+ "type": "address"
2186
2929
  }
2187
2930
  ],
2188
- "internalType": "struct ITreasury.TreasuryInfo",
2189
- "name": "info",
2931
+ "internalType": "struct ISetup.ProductSetupInfo",
2932
+ "name": "setup",
2190
2933
  "type": "tuple"
2934
+ },
2935
+ {
2936
+ "internalType": "StateId",
2937
+ "name": "newState",
2938
+ "type": "uint8"
2191
2939
  }
2192
2940
  ],
2193
- "name": "setTreasuryInfo",
2941
+ "name": "updateProductSetup",
2194
2942
  "outputs": [],
2195
2943
  "stateMutability": "nonpayable",
2196
2944
  "type": "function"
2197
2945
  },
2198
- {
2199
- "inputs": [
2200
- {
2201
- "internalType": "bytes4",
2202
- "name": "interfaceId",
2203
- "type": "bytes4"
2204
- }
2205
- ],
2206
- "name": "supportsInterface",
2207
- "outputs": [
2208
- {
2209
- "internalType": "bool",
2210
- "name": "",
2211
- "type": "bool"
2212
- }
2213
- ],
2214
- "stateMutability": "view",
2215
- "type": "function"
2216
- },
2217
2946
  {
2218
2947
  "inputs": [
2219
2948
  {
2220
2949
  "internalType": "NftId",
2221
- "name": "bundleNftId",
2950
+ "name": "productNftId",
2222
2951
  "type": "uint96"
2223
2952
  },
2224
2953
  {
2225
2954
  "internalType": "StateId",
2226
- "name": "state",
2955
+ "name": "newState",
2227
2956
  "type": "uint8"
2228
2957
  }
2229
2958
  ],
2230
- "name": "updateBundleState",
2959
+ "name": "updateProductSetupState",
2231
2960
  "outputs": [],
2232
2961
  "stateMutability": "nonpayable",
2233
2962
  "type": "function"
@@ -2235,17 +2964,59 @@
2235
2964
  {
2236
2965
  "inputs": [
2237
2966
  {
2238
- "internalType": "NftId",
2239
- "name": "bundleNftId",
2240
- "type": "uint96"
2967
+ "internalType": "Key32",
2968
+ "name": "referralKey",
2969
+ "type": "bytes32"
2970
+ },
2971
+ {
2972
+ "components": [
2973
+ {
2974
+ "internalType": "NftId",
2975
+ "name": "distributorNftId",
2976
+ "type": "uint96"
2977
+ },
2978
+ {
2979
+ "internalType": "string",
2980
+ "name": "referralCode",
2981
+ "type": "string"
2982
+ },
2983
+ {
2984
+ "internalType": "UFixed",
2985
+ "name": "discountPercentage",
2986
+ "type": "uint256"
2987
+ },
2988
+ {
2989
+ "internalType": "uint32",
2990
+ "name": "maxReferrals",
2991
+ "type": "uint32"
2992
+ },
2993
+ {
2994
+ "internalType": "uint32",
2995
+ "name": "usedReferrals",
2996
+ "type": "uint32"
2997
+ },
2998
+ {
2999
+ "internalType": "Timestamp",
3000
+ "name": "expiryAt",
3001
+ "type": "uint40"
3002
+ },
3003
+ {
3004
+ "internalType": "bytes",
3005
+ "name": "data",
3006
+ "type": "bytes"
3007
+ }
3008
+ ],
3009
+ "internalType": "struct IDistribution.ReferralInfo",
3010
+ "name": "referralInfo",
3011
+ "type": "tuple"
2241
3012
  },
2242
3013
  {
2243
3014
  "internalType": "StateId",
2244
- "name": "state",
3015
+ "name": "newState",
2245
3016
  "type": "uint8"
2246
3017
  }
2247
3018
  ],
2248
- "name": "updatePolicyState",
3019
+ "name": "updateReferral",
2249
3020
  "outputs": [],
2250
3021
  "stateMutability": "nonpayable",
2251
3022
  "type": "function"
@@ -2253,17 +3024,17 @@
2253
3024
  {
2254
3025
  "inputs": [
2255
3026
  {
2256
- "internalType": "RiskId",
2257
- "name": "riskId",
2258
- "type": "bytes8"
3027
+ "internalType": "Key32",
3028
+ "name": "referralKey",
3029
+ "type": "bytes32"
2259
3030
  },
2260
3031
  {
2261
3032
  "internalType": "StateId",
2262
- "name": "state",
3033
+ "name": "newState",
2263
3034
  "type": "uint8"
2264
3035
  }
2265
3036
  ],
2266
- "name": "updateRiskState",
3037
+ "name": "updateReferralState",
2267
3038
  "outputs": [],
2268
3039
  "stateMutability": "nonpayable",
2269
3040
  "type": "function"
@@ -2271,17 +3042,34 @@
2271
3042
  {
2272
3043
  "inputs": [
2273
3044
  {
2274
- "internalType": "Key32",
2275
- "name": "key",
2276
- "type": "bytes32"
3045
+ "internalType": "RiskId",
3046
+ "name": "riskId",
3047
+ "type": "bytes8"
3048
+ },
3049
+ {
3050
+ "components": [
3051
+ {
3052
+ "internalType": "NftId",
3053
+ "name": "productNftId",
3054
+ "type": "uint96"
3055
+ },
3056
+ {
3057
+ "internalType": "bytes",
3058
+ "name": "data",
3059
+ "type": "bytes"
3060
+ }
3061
+ ],
3062
+ "internalType": "struct IRisk.RiskInfo",
3063
+ "name": "risk",
3064
+ "type": "tuple"
2277
3065
  },
2278
3066
  {
2279
3067
  "internalType": "StateId",
2280
- "name": "state",
3068
+ "name": "newState",
2281
3069
  "type": "uint8"
2282
3070
  }
2283
3071
  ],
2284
- "name": "updateState",
3072
+ "name": "updateRisk",
2285
3073
  "outputs": [],
2286
3074
  "stateMutability": "nonpayable",
2287
3075
  "type": "function"
@@ -2289,127 +3077,102 @@
2289
3077
  {
2290
3078
  "inputs": [
2291
3079
  {
2292
- "internalType": "address",
2293
- "name": "implementation",
2294
- "type": "address"
2295
- },
2296
- {
2297
- "internalType": "address",
2298
- "name": "activatedBy",
2299
- "type": "address"
3080
+ "internalType": "RiskId",
3081
+ "name": "riskId",
3082
+ "type": "bytes8"
2300
3083
  },
2301
3084
  {
2302
- "internalType": "bytes",
2303
- "name": "data",
2304
- "type": "bytes"
3085
+ "internalType": "StateId",
3086
+ "name": "newState",
3087
+ "type": "uint8"
2305
3088
  }
2306
3089
  ],
2307
- "name": "upgrade",
3090
+ "name": "updateRiskState",
2308
3091
  "outputs": [],
2309
3092
  "stateMutability": "nonpayable",
2310
3093
  "type": "function"
2311
3094
  }
2312
3095
  ],
2313
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162008ff838038062008ff8833981016040819052620000349162000c64565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff191660011790558282826200007d62000273565b600280546001600160a01b03191633179055604080516020810190915260008152620000b78484620000ad603290565b600186866200032c565b604051620000c59062000c39565b604051809103906000f080158015620000e2573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392909216919091179055630de7806f60e41b60009081526020527f6a2871a87efe986e5081c6997e4facaad2d5b985b7721e8c5662aa9554947837805460ff1916600117905562000149620003fd565b505050506200019b62000161620005f060201b60201c565b60408051808201909152601581527f446973747269627574696f6e4f776e6572526f6c650000000000000000000000602082015262000698565b620001d5620001a96200070a565b60408051808201909152600f81526e4f7261636c654f776e6572526f6c6560881b602082015262000698565b6200020d620001e362000765565b60408051808201909152600d81526c506f6f6c4f776e6572526f6c6560981b602082015262000698565b620002486200021b620007be565b60408051808201909152601081526f50726f647563744f776e6572526f6c6560801b602082015262000698565b5050600354600c80546001600160a01b0319166001600160a01b039092169190911790555062000f8c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620002c45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620003245780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b905090565b6200033882876200081a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166001600160681b0319909116176c0100000000000000000000000060ff8816021760ff60681b19166d010000000000000000000000000086151502178155905060018101620003b7838262000d61565b506303fb044760e21b60009081526020527fb43e4f3791bfcdefa3a0fbe2a5555f8d6490b90e01de0ff40c66f18b49b562c5805460ff1916600117905550505050505050565b60006200040962000844565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156200045f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000485919062000e2d565b9050620004ce6040518060400160405280601581526020017f436f6d706f6e656e744f776e657253657276696365000000000000000000000081525082620008cc60201b60201c565b600480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601381527f446973747269627574696f6e536572766963650000000000000000000000000060208201526200052e9082620008cc565b600580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d50726f647563745365727669636560901b60208201526200057f9082620008cc565b600680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a506f6f6c5365727669636560a81b6020820152620005cd9082620008cc565b600780546001600160a01b0319166001600160a01b039290921691909117905550565b60405163e14787cb60e01b815260206004820152601560248201527f446973747269627574696f6e4f776e6572526f6c650000000000000000000000604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb906064015b602060405180830381865af415801562000672573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000327919062000e59565b604080516060810182526001600160c01b03198416815260208101839052600191810191909152620006ca81620009af565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c64858383604051620006fd92919062000ecd565b60405180910390a1505050565b60405163e14787cb60e01b815260206004820152600f60248201526e4f7261636c654f776e6572526f6c6560881b604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9060640162000654565b60405163e14787cb60e01b815260206004820152600d60248201526c506f6f6c4f776e6572526f6c6560981b604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9060640162000654565b60405163e14787cb60e01b815260206004820152601060248201526f50726f647563744f776e6572526f6c6560801b604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9060640162000654565b600280546001600160a01b0319166001600160a01b038416179055620008408162000a8c565b5050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015620008a6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000327919062000efc565b6000620008d862000bf9565b6001600160a01b031663a3bcd81d84846040518363ffffffff1660e01b81526004016200090792919062000f23565b602060405180830381865afa15801562000925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200094b919062000f4a565b90506001600160a01b038116620009a95760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a494e532d3030313a4e4f545f524547495354455245440000000060448201526064015b60405180910390fd5b92915050565b80516001600160c01b031981166000908152600860209081526040909120835181546001600160401b03191660c09190911c178155908301518391906001820190620009fc908262000d61565b50604091909101516002909101805460ff191691151591909117905562000a238162000c0e565b6200084057600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b6001546001600160a01b03161562000ac75760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401620009a0565b6001600160a01b03811662000aef5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b60000362000b275760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620009a0565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632c1c764b60e11b60048201526301ffc9a790602401602060405180830381865afa92505050801562000ba4575060408051601f3d908101601f1916820190925262000ba19181019062000f68565b60015b62000bce5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620009a0565b80620008405760405163fdeac91f60e01b81526001600160a01b0383166004820152602401620009a0565b6000620003276001546001600160a01b031690565b6001600160c01b0319818116600081815260086020526040812054909260c09190911b1614620009a9565b611f94806200706483390190565b80516001600160a01b038116811462000c5f57600080fd5b919050565b60008060006060848603121562000c7a57600080fd5b62000c858462000c47565b60208501519093506001600160601b038116811462000ca357600080fd5b915062000cb36040850162000c47565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000ce757607f821691505b60208210810362000d0857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000d5c57600081815260208120601f850160051c8101602086101562000d375750805b601f850160051c820191505b8181101562000d585782815560010162000d43565b5050505b505050565b81516001600160401b0381111562000d7d5762000d7d62000cbc565b62000d958162000d8e845462000cd2565b8462000d0e565b602080601f83116001811462000dcd576000841562000db45750858301515b600019600386901b1c1916600185901b17855562000d58565b600085815260208120601f198616915b8281101562000dfe5788860151825594840194600190910190840162000ddd565b508582101562000e1d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000e4057600080fd5b815160ff8116811462000e5257600080fd5b9392505050565b60006020828403121562000e6c57600080fd5b81516001600160c01b03198116811462000e5257600080fd5b6000815180845260005b8181101562000ead5760208185018101518683018201520162000e8f565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160c01b03198316815260406020820181905260009062000ef49083018462000e85565b949350505050565b60006020828403121562000f0f57600080fd5b815162ffffff8116811462000e5257600080fd5b60408152600062000f38604083018562000e85565b905060ff831660208301529392505050565b60006020828403121562000f5d57600080fd5b62000e528262000c47565b60006020828403121562000f7b57600080fd5b8151801515811462000e5257600080fd5b6160c88062000f9c6000396000f3fe60806040523480156200001157600080fd5b50600436106200045d5760003560e01c8063887b1fa9116200024d578063b8c510671162000149578063db70354c11620000c7578063ee0fdf711162000092578063ee0fdf711462000c86578063f274e87d1462000c9d578063f2b246c31462000cca578063fd143c761462000cf0578063fe1f18d61462000d0757600080fd5b8063db70354c1462000c2a578063e1f64d771462000c41578063e79597401462000c58578063ea5fa54b1462000c6f57600080fd5b8063ca600b1c1162000114578063ca600b1c1462000bad578063cf5ccedb1462000bbf578063cf7a1d771462000be5578063d250185c1462000bfc578063dad73bed1462000c1357600080fd5b8063b8c510671462000b42578063b9f36dde1462000b59578063bd7d9d851462000b70578063c2bf7d261462000b9657600080fd5b8063a238accd11620001d7578063a90be90711620001a2578063a90be9071462000ac3578063af17d38a1462000ada578063b3c650151462000af1578063b88da7591462000b14578063b89010821462000b2b57600080fd5b8063a238accd1462000a49578063a310e2a31462000a60578063a5a4fbbc1462000a95578063a745e3df1462000aac57600080fd5b80639675513d11620002185780639675513d14620009a45780639845743714620009bb57806399fd467714620009d25780639ae31ff51462000a1a57600080fd5b8063887b1fa91462000922578063893d20e8146200095b5780638d5d536e1462000965578063946dfcfe146200097c57600080fd5b80634d459c90116200035d57806369a44a1b11620002e75780637cef484211620002b25780637cef484214620008af5780637fec8b3114620008c05780638125ea9214620008d757806383d3331914620008e157806387c5658614620008ea57600080fd5b806369a44a1b146200085d5780636b9bf08b14620008745780636fa29853146200088657806373617bf1146200089857600080fd5b80635ab1bd5311620003285780635ab1bd5314620007f85780635d4345cc1462000802578063644c45e01462000819578063674d0ccf146200084657600080fd5b80634d459c90146200065d5780634f421333146200077b5780635312fdc2146200079257806357f80bbf14620007c357600080fd5b8063138461e011620003eb578063349195f911620003b6578063349195f914620005f0578063423eb9fa14620005f95780634288121d146200060e57806342c74ed014620006205780634793b4ab146200063757600080fd5b8063138461e014620005775780631a91887614620005815780631eff4b2214620005b1578063278b381b14620005d957600080fd5b80630d0ccc5b116200042c5780630d0ccc5b14620005015780630d8e6e2c14620005275780630d9b998d14620005465780630fec111c146200055d57600080fd5b806301ffc9a7146200046257806306a5298b14620004a757806307af0dc014620004c057806309648a9d14620004d7575b600080fd5b62000492620004733660046200435f565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b620004be620004b8366004620044ed565b62000d1e565b005b620004be620004d1366004620046c3565b62000d4d565b620004ee620004e836600462004845565b62000e0a565b60405160ff90911681526020016200049e565b62000518620005123660046200485f565b62000e81565b6040519081526020016200049e565b6200053162000f0a565b60405162ffffff90911681526020016200049e565b620004be6200055736600462004897565b62000f97565b620005676200113a565b6040516200049e92919062004984565b620004be620012b5565b620005986200059236600462004a30565b620014e0565b6040516001600160a01b0390911681526020016200049e565b620005187f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b62000492620005ea36600462004a30565b62001511565b600f5462000518565b620004be6200060a36600462004a50565b5050565b6006546001600160a01b031662000598565b620004be62000631366004620044ed565b62001520565b6200064e6200064836600462004a30565b6200190e565b6040516200049e919062004af0565b6200071d6200066e36600462004bab565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206200607383398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016200049e565b620004926200078c36600462004bab565b6200193b565b620007a9620007a336600462004845565b620019f2565b6040516001600160c01b031990911681526020016200049e565b620007da620007d436600462004a30565b62001a34565b6040805182511515815260209283015192810192909252016200049e565b6200059862001a69565b620004be6200081336600462004bdb565b62001a7e565b600154600160a01b90046001600160601b03165b6040516001600160601b0390911681526020016200049e565b620005186200085736600462004c0e565b62001b27565b620005186200086e36600462004a30565b62001b4b565b6007546001600160a01b031662000598565b6004546001600160a01b031662000598565b620004be620008a936600462004c3d565b62001bdc565b620004be6200060a36600462004ca4565b6200082d620008d136600462004845565b62001ca1565b6200059862001ce9565b60095462000518565b604080518082018252600080825260209182015281518083019092526013548252601454908201525b6040516200049e919062004cc5565b6200094c6200093336600462004c0e565b5060408051808201909152600081526060602082015290565b6040516200049e919062004cdd565b6200059862001d03565b620004be6200097636600462004d15565b62001d0f565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed9015462000518565b62000518620009b536600462004ddc565b62001f0c565b620004be620009cc36600462004e0f565b62002076565b62000492620009e336600462004e55565b6001600160c01b031982166000908152600a602090815260408083206001600160a01b038516845290915290205460ff1692915050565b6200082d62000a2b36600462004a30565b6001600160601b039081166000908152601160205260409020541690565b620004be62000a5a36600462004e88565b620021f6565b6200059862000a7136600462004a30565b6001600160601b03166000908152601260205260409020546001600160a01b031690565b6200059862000aa636600462004a30565b62002263565b620004be62000abd36600462004eb0565b6200228f565b6200051862000ad436600462004845565b620023f5565b620007a962000aeb36600462004f19565b62002431565b62000afb620025ba565b6040516001600160401b0390911681526020016200049e565b6200053162000b2536600462004845565b620025dd565b620004be62000b3c36600462004f66565b62002632565b620007a962000b5336600462004f19565b620026fd565b620004be62000b6a36600462004e55565b6200277d565b62000b8762000b8136600462004a30565b620028e6565b6040516200049e919062004f9b565b620004be62000ba736600462004e55565b62002977565b6005546001600160a01b031662000598565b62000bd662000bd036600462004c0e565b62002b77565b6040516200049e9190620050da565b620004be62000bf636600462004eb0565b62002c75565b6200091362000c0d36600462005123565b62002d88565b620004be62000c2436600462005146565b62002e17565b6200082d62000c3b36600462005179565b62003035565b620004be62000c5236600462004e0f565b620030cc565b6200059862000c69366004620051a8565b6200321a565b620004be62000c80366004620051c9565b6200323f565b6200049262000c9736600462004c0e565b62003390565b62000cb462000cae3660046200521b565b620033bb565b604080519283526020830191909152016200049e565b62000ce162000cdb36600462004a30565b62003452565b6040516200049e91906200524b565b620004be62000d0136600462005334565b62003516565b620004be62000d1836600462004bdb565b6200368e565b6200060a6065838360405160200162000d3891906200524b565b60405160208183030381529060405262003763565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db491906200542c565b6001600160a01b0316336001600160a01b03161462000df05760405162461bcd60e51b815260040162000de7906200544c565b60405180910390fd5b6200060a60d2838360405160200162000d38919062004f9b565b6003546040516309648a9d60e01b8152600481018390526000916001600160a01b0316906309648a9d90602401602060405180830381865afa15801562000e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7b91906200548d565b92915050565b604051631488c84560e01b815260048101839052600082810b60248301529073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__90631488c84590604401602060405180830381865af415801562000edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f039190620054ad565b9392505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801562000f6c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f929190620054c7565b905090565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000fd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ffe91906200542c565b6001600160a01b0316336001600160a01b031614620010315760405162461bcd60e51b815260040162000de7906200544c565b6000604051806101c00160405280896001600160601b03168152602001836001600160601b03168152602001886001600160c01b031916815260200160006001600160a01b03168152602001876001600160c01b031916815260200186815260200185815260200160008152602001848152602001604051806020016040528060008152508152602001604051806020016040528060008152508152602001620010d9600090565b64ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff16905290506200112f60d28a836040516020016200111a919062004f9b565b60405160208183030381529060405262003859565b505050505050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280620011ac600090565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001620011f662001d03565b6001600160a01b031681526020018260010180546200121590620054e7565b80601f01602080910402602001604051908101604052809291908181526020018280546200124390620054e7565b8015620012945780601f10620012685761010080835404028352916020019162001294565b820191906000526020600020905b8154815290600101906020018083116200127657829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562001318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133e919062005523565b1562001382576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b0316602482015260440162000de7565b6001546001600160a01b0316620013ac5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015620013f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141c919062005523565b62001446576040516372657a5160e01b81526001600160a01b038216600482015260240162000de7565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa15801562001491573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b7919062005550565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b600080620014f160645b8462003918565b8060200190518101906200150691906200557d565b602001519392505050565b600062000e7b60658362003a1d565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200155f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200158591906200542c565b6001600160a01b0316336001600160a01b031614620015b85760405162461bcd60e51b815260040162000de790620055c5565b80516020808301516001600160601b038516600090815260129092526040909120546001600160a01b031615620016495760405162461bcd60e51b815260206004820152602e60248201527f4552524f523a5452532d3031323a544f4b454e5f48414e444c45525f414c524560448201526d10511657d49151d254d51154915160921b606482015260840162000de7565b6001600160601b0382811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015620016b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016db919062005523565b620017335760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5452532d3031333a504f4f4c5f414c52454144595f4c494e4b456044820152601160fa1b606482015260840162000de7565b6001600160601b0381811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af41580156200179f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017c5919062005523565b620018255760405162461bcd60e51b815260206004820152602960248201527f4552524f523a5452532d3031343a434f4d50454e534154494f4e5f414c524541604482015268111657d3125392d15160ba1b606482015260840162000de7565b8383604001516040516200183990620042d9565b6001600160601b0390921682526001600160a01b03166020820152604001604051809103906000f08015801562001874573d6000803e3d6000fd5b506001600160601b03858116600081815260126020908152604080832080546001600160a01b0319166001600160a01b03979097169690961790955585841682526011905283812080546bffffffffffffffffffffffff1990811684179091559286168152929092208054909116909117905562001908620018f4606590565b85856040516020016200111a91906200524b565b50505050565b62001918620042e7565b6200192660dc5b8362003918565b80602001905181019062000e7b919062005693565b6000806000805160206200607383398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015620019c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019eb9190620054ad565b1192915050565b60006009828154811062001a0a5762001a0a62005774565b90600052602060002090600491828204019190066008029054906101000a900460c01b9050919050565b604080518082019091526000808252602082015262001a54608c6200191f565b80602001905181019062000e7b91906200578a565b600062000f926001546001600160a01b031690565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001abf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ae591906200542c565b6001600160a01b0316336001600160a01b03161462001b185760405162461bcd60e51b815260040162000de7906200544c565b6200060a60d25b838362003b1e565b6001600160c01b031981166000908152600b6020526040812062000e7b9062003be9565b6001600160601b038116600090815260106020526040808220905163697d0f1b60e11b8152600481019190915273__$0dc988b1672de335b826773df9015af2da$__9063d2fa1e36906024015b602060405180830381865af415801562001bb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7b9190620054ad565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c4191906200542c565b6001600160a01b0316336001600160a01b03161462001c745760405162461bcd60e51b815260040162000de790620055c5565b6200060a608c83836040516020016200111a91908151151581526020918201519181019190915260400190565b6000600f828154811062001cb95762001cb962005774565b9060005260206000209060029182820401919006600c029054906101000a90046001600160601b03169050919050565b600062000f926003546001600160a01b031690565b919050565b600062000f9262003bf4565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001d50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d7691906200542c565b6001600160a01b0316336001600160a01b03161462001dd85760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000de7565b6000604051806101000160405280886001600160601b0316815260200187815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820188905260408201526060810187905260800142604051631ded81af60e31b815264ffffffffff90911660048201526024810187905273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af415801562001ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecf9190620057c9565b64ffffffffff168152602001600064ffffffffff169052905062001f0260dc89836040516020016200111a919062004af0565b5050505050505050565b6000306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001f4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f7591906200542c565b6001600160a01b0316336001600160a01b03161462001fa85760405162461bcd60e51b815260040162000de790620057e9565b506001600160601b038083166000818152600e602090815260408083209486168352938152838220805490839055928252600d9052829020915163539eabab60e11b8152909173__$0dc988b1672de335b826773df9015af2da$__9163a73d5756916200202b9186906004019182526001600160601b0316602082015260400190565b602060405180830381865af415801562002049573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206f919062005523565b5092915050565b6001600160601b03828116600090815260106020526040908190209051632bfdd6b960e01b81526004810182905291851660248301529073__$0dc988b1672de335b826773df9015af2da$__90632bfdd6b990604401602060405180830381865af4158015620020ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002110919062005523565b15620021695760405162461bcd60e51b815260206004820152602160248201527f4552524f523a504c2d3032303a42554e444c455f414c52454144595f414444456044820152601160fa1b606482015260840162000de7565b604051631461054360e31b8152600481018290526001600160601b038516602482015273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af4158015620021c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021ef919062005523565b5050505050565b60035460405163a238accd60e01b81526004810184905260ff831660248201526001600160a01b039091169063a238accd90604401600060405180830381600087803b1580156200224657600080fd5b505af11580156200225b573d6000803e3d6000fd5b505050505050565b600080620022726064620014ea565b8060200190518101906200228791906200557d565b519392505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c620022b362000f0a565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015620022f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200231a91906200582a565b600080516020620060538339815191528054600160401b900460ff16806200234f575080546001600160401b03808416911610155b156200236e5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556200239b858562003d14565b620023a68362003f5c565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b6040516322f5db0f60e11b81526004810182905260009073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906345ebb61e9060240162001b98565b6000306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200249891906200542c565b6001600160a01b0316336001600160a01b031614620024cb5760405162461bcd60e51b815260040162000de79062005855565b60405163e14787cb60e01b815273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb90620025049085906004016200588c565b602060405180830381865af415801562002522573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025489190620058ae565b9050620025558162003390565b15620025ae5760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4143532d3031303a524f4c455f414c52454144595f45584953546044820152605360f81b606482015260840162000de7565b62001cfe818362003f66565b600062000f9260008051602062006053833981519152546001600160401b031690565b600060008051602062006073833981519152600101828154811062002606576200260662005774565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b604080518082019091526001600160601b0383168152602081018290526200190860c86040516355ee627560e01b81526001600160c01b03198716600482015273__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015620026af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026d59190620054ad565b83604051602001620026e8919062004cdd565b60405160208183030381529060405262003fcb565b60405163e14787cb60e01b815260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb90620027399085906004016200588c565b602060405180830381865af415801562002757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7b9190620058ae565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620027c15760405162461bcd60e51b815260040162000de790620058ce565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200282691906200542c565b6001600160a01b0316336001600160a01b031614620028595760405162461bcd60e51b815260040162000de79062005855565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19169055928252600b905220620028a2908362004001565b507fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d1698754539668483836000604051620028d99392919062005905565b60405180910390a1505050565b604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201819052610140820152610160810182905261018081018290526101a08101919091526200296260d26200191f565b80602001905181019062000e7b919062005932565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620029bb5760405162461bcd60e51b815260040162000de790620058ce565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620029fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a2091906200542c565b6001600160a01b0316336001600160a01b03161462002a535760405162461bcd60e51b815260040162000de79062005855565b6001600160c01b0319831660009081526008602052604090206002015460ff1662002ac15760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4143532d3034303a524f4c455f4e4f545f414354495645000000604482015260640162000de7565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19166001179055928252600b90522062002b0d908362004018565b506001600160c01b031983166000908152600a602090815260408083206001600160a01b0386168452909152908190205490517fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d1698754539668491620028d9918691869160ff9091169062005905565b6040805160608082018352600080835260208084018390528385018290526001600160c01b0319868116835260088252918590208551938401909552845460c01b9091168252600184018054939492939184019162002bd690620054e7565b80601f016020809104026020016040519081016040528092919081815260200182805462002c0490620054e7565b801562002c555780601f1062002c295761010080835404028352916020019162002c55565b820191906000526020600020905b81548152906001019060200180831162002c3757829003601f168201915b50505091835250506002919091015460ff16151560209091015292915050565b600080516020620060538339815191528054600160401b810460ff1615906001600160401b031660008115801562002caa5750825b90506000826001600160401b0316600114801562002cc75750303b155b90508115801562002cd6575080155b1562002cf55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831562002d2057845460ff60401b1916600160401b1785555b62002d2c888862003d14565b62002d38878762003f5c565b831562001f0257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050505050565b60408051808201825260008082526020820152905163638086fd60e11b8152600481018490526024810183905273__$a23651848365a6a5ca15f07b4331037f48$__9063c7010dfa906044016040805180830381865af415801562002df1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062005a9f565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b161462002e5b5760405162461bcd60e51b815260040162000de790620058ce565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002e9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ec091906200542c565b6001600160a01b0316336001600160a01b03161462002ef35760405162461bcd60e51b815260040162000de79062005855565b6001600160c01b03198084166000908152600860209081526040808320815160608101909252805460c01b909416815260018401805493949193919284019162002f3d90620054e7565b80601f016020809104026020016040519081016040528092919081815260200182805462002f6b90620054e7565b801562002fbc5780601f1062002f905761010080835404028352916020019162002fbc565b820191906000526020600020905b81548152906001019060200180831162002f9e57829003601f168201915b50505091835250506002919091015460ff1615156020909101528315156040820152905062002feb816200402f565b604080516001600160c01b03198616815284151560208201527feaffaec948991ecc6e201ba4f67ba865fbf66aace3d2f2823dc5483cc9813fda910160405180910390a150505050565b6001600160601b038216600090815260106020526040808220905163e797d89960e01b815260048101919091526024810183905273__$0dc988b1672de335b826773df9015af2da$__9063e797d89990604401602060405180830381865af4158015620030a6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062005550565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200310d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200313391906200542c565b6001600160a01b0316336001600160a01b031614620031665760405162461bcd60e51b815260040162000de790620057e9565b6001600160601b038381166000818152600e60209081526040808320948716808452948252808320869055928252600d90528190209051631461054360e31b81526004810191909152602481019190915273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af4158015620031f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001908919062005523565b6001600160c01b031982166000908152600b6020526040812062000f0390836200410d565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200327e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a491906200542c565b6001600160a01b0316336001600160a01b031614620032d75760405162461bcd60e51b815260040162000de790620055c5565b604080518082019091526001600160a01b03838116825282166020820152600f8054600180820183556000929092527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8026002820401805492909116600c026101000a6001600160601b038181021990931692871602919091179055620019086200335f606490565b85836040516020016200111a919081516001600160a01b039081168252602092830151169181019190915260400190565b6001600160c01b0319818116600081815260086020526040812054909260c09190911b161462000e7b565b60405163012ebd8360e21b8152815160048201526020820151602482015260448101839052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af415801562003421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003447919062005abe565b915091509250929050565b620034f56040805161012081018252600080825260208083018290528284018290528351808501855282815280820183905260608401528351808501855282815280820183905260808401528351808501855282815280820183905260a08401528351808501855282815280820183905260c08401528351808501855282815280820183905260e084015283518085019094528184528301529061010082015290565b6200350160656200191f565b80602001905181019062000e7b919062005ae3565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003557573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200357d91906200542c565b6001600160a01b0316336001600160a01b03161480620036145750306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620035d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035ff91906200542c565b6001600160a01b0316336001600160a01b0316145b620036745760405162461bcd60e51b815260206004820152602960248201527f4552524f523a42444c2d3030333a4e4f545f504f4f4c5f4f525f50524f445543604482015268545f5345525649434560b81b606482015260840162000de7565b6200060a60dc838360405160200162000d38919062004af0565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620036cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f591906200542c565b6001600160a01b0316336001600160a01b031614620037575760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000de7565b6200060a60dc62001b1f565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690636ec3d9409073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620037da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038009190620054ad565b836040518363ffffffff1660e01b81526004016200382092919062005bb7565b600060405180830381600087803b1580156200383b57600080fd5b505af115801562003850573d6000803e3d6000fd5b50505050505050565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690635dee47889073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620038d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038f69190620054ad565b85846040518463ffffffff1660e01b8152600401620038209392919062005bd2565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526060916001600160a01b0316906354f6127f9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003990573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039b69190620054ad565b6040518263ffffffff1660e01b8152600401620039d591815260200190565b600060405180830381865afa158015620039f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f03919081019062005bf6565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526000916001600160a01b0316906338a699a49073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003a95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003abb9190620054ad565b6040518263ffffffff1660e01b815260040162003ada91815260200190565b602060405180830381865afa15801562003af8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062005523565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b039091169063a238accd9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003b95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bbb9190620054ad565b6040516001600160e01b031960e084901b168152600481019190915260ff8416602482015260440162003820565b600062000e7b825490565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562003c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c80919062005523565b1562003d0457600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa15801562003cde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f9291906200542c565b506002546001600160a01b031690565b62003d1e6200411b565b60008051602062006073833981519152600062003d5160008051602062006053833981519152546001600160401b031690565b9050600062003d5f62000f0a565b9050816001600160401b031660010362003d8e5760028301805462ffffff191662ffffff831617905562003dde565b600283015462ffffff9081169082161162003dde5760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640162000de7565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b0380891692840192909252908616908201526060810162003e534290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890620023e69083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6200045d6200411b565b604080516060810182526001600160c01b0319841681526020810183905260019181019190915262003f98816200402f565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c64858383604051620028d992919062005c2e565b600c54604051630bbdc8f160e31b81526001600160a01b0390911690635dee478890620038209085908790869060040162005bd2565b600062000f03836001600160a01b03841662004156565b600062000f03836001600160a01b0384166200425a565b80516001600160c01b0319811660009081526008602090815260409091208351815467ffffffffffffffff191660c09190911c1781559083015183919060018201906200407d908262005ca4565b50604091909101516002909101805460ff1916911515919091179055620040a48162003390565b6200060a57600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b600062000f038383620042ac565b6000805160206200605383398151915254600160401b900460ff166200415457604051631afcd79f60e31b815260040160405180910390fd5b565b600081815260018301602052604081205480156200424f5760006200417d60018362005d70565b8554909150600090620041939060019062005d70565b9050818114620041ff576000866000018281548110620041b757620041b762005774565b9060005260206000200154905080876000018481548110620041dd57620041dd62005774565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062004213576200421362005d92565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000e7b565b600091505062000e7b565b6000818152600183016020526040812054620042a35750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000e7b565b50600062000e7b565b6000826000018281548110620042c657620042c662005774565b9060005260206000200154905092915050565b6102aa8062005da983390190565b60405180610100016040528060006001600160601b0316815260200162004321604051806040016040528060008152602001600081525090565b815260200160608152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6000602082840312156200437257600080fd5b81356001600160e01b03198116811462000f0357600080fd5b6001600160601b0381168114620043a157600080fd5b50565b803562001cfe816200438b565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620043ec57620043ec620043b1565b60405290565b60405161012081016001600160401b0381118282101715620043ec57620043ec620043b1565b6040516101c081016001600160401b0381118282101715620043ec57620043ec620043b1565b60405161010081016001600160401b0381118282101715620043ec57620043ec620043b1565b604051601f8201601f191681016001600160401b03811182821017156200448f576200448f620043b1565b604052919050565b6001600160a01b0381168114620043a157600080fd5b803562001cfe8162004497565b600060408284031215620044cd57600080fd5b620044d7620043c7565b9050813581526020820135602082015292915050565b6000808284036102008112156200450357600080fd5b833562004510816200438b565b92506101e0601f19820112156200452657600080fd5b5062004531620043f2565b6200453f60208501620043a4565b81526200454f60408501620043a4565b60208201526200456260608501620044ad565b6040820152620045768560808601620044ba565b60608201526200458a8560c08601620044ba565b6080820152610100620045a086828701620044ba565b60a0830152620045b5866101408701620044ba565b60c0830152620045ca866101808701620044ba565b60e0830152620045df866101c08701620044ba565b90820152919491935090915050565b6001600160c01b031981168114620043a157600080fd5b803562001cfe81620045ee565b60006001600160401b038211156200462e576200462e620043b1565b50601f01601f191660200190565b6000620046536200464d8462004612565b62004464565b90508281528383830111156200466857600080fd5b828260208301376000602084830101529392505050565b600082601f8301126200469157600080fd5b62000f03838335602085016200463c565b64ffffffffff81168114620043a157600080fd5b803562001cfe81620046a2565b60008060408385031215620046d757600080fd5b8235620046e4816200438b565b915060208301356001600160401b03808211156200470157600080fd5b908401906101c082870312156200471757600080fd5b6200472162004418565b6200472c83620043a4565b81526200473c60208401620043a4565b60208201526200474f6040840162004605565b60408201526200476260608401620044ad565b6060820152620047756080840162004605565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013583811115620047b957600080fd5b620047c7898287016200467f565b8284015250506101408084013583811115620047e257600080fd5b620047f0898287016200467f565b828401525050610160915062004808828401620046b6565b8282015261018091506200481e828401620046b6565b828201526101a0915062004834828401620046b6565b828201528093505050509250929050565b6000602082840312156200485857600080fd5b5035919050565b600080604083850312156200487357600080fd5b8235915060208301358060000b81146200488c57600080fd5b809150509250929050565b600080600080600080600080610100898b031215620048b557600080fd5b8835620048c2816200438b565b97506020890135620048d4816200438b565b96506040890135620048e681620045ee565b95506060890135620048f881620045ee565b94506080890135935060a0890135925060c0890135915060e08901356200491f816200438b565b809150509295985092959890939650565b60005b838110156200494d57818101518382015260200162004933565b50506000910152565b600081518084526200497081602086016020860162004930565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff60408501511660808301526060840151620049c960a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015262004a1161012084018262004956565b9050828103602084015262004a27818562004956565b95945050505050565b60006020828403121562004a4357600080fd5b813562000f03816200438b565b6000806040838503121562004a6457600080fd5b823562004a7181620045ee565b915060208301356001600160401b038082111562004a8e57600080fd5b908401906040828703121562004aa357600080fd5b62004aad620043c7565b823562004aba816200438b565b815260208301358281111562004acf57600080fd5b62004add888286016200467f565b6020830152508093505050509250929050565b602081526001600160601b0382511660208201526000602083015162004b23604084018280518252602090810151910152565b50604083015161012080608085015262004b4261014085018362004956565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015162004b7c61010086018264ffffffffff169052565b5060e085015164ffffffffff8116858301525b5090949350505050565b62ffffff81168114620043a157600080fd5b60006020828403121562004bbe57600080fd5b813562000f038162004b99565b60ff81168114620043a157600080fd5b6000806040838503121562004bef57600080fd5b823562004bfc816200438b565b915060208301356200488c8162004bcb565b60006020828403121562004c2157600080fd5b813562000f0381620045ee565b8015158114620043a157600080fd5b600080828403606081121562004c5257600080fd5b833562004c5f816200438b565b92506040601f198201121562004c7457600080fd5b5062004c7f620043c7565b602084013562004c8f8162004c2e565b81526040939093013560208401525092909150565b6000806040838503121562004cb857600080fd5b823562004bfc81620045ee565b81518152602080830151908201526040810162000e7b565b602081526001600160601b0382511660208201526000602083015160408084015262004d0d606084018262004956565b949350505050565b600080600080600080600060e0888a03121562004d3157600080fd5b873562004d3e816200438b565b9650602088013562004d50816200438b565b955062004d618960408a01620044ba565b94506080880135935060a0880135925060c08801356001600160401b038082111562004d8c57600080fd5b818a0191508a601f83011262004da157600080fd5b81358181111562004db157600080fd5b8b602082850101111562004dc457600080fd5b60208301945080935050505092959891949750929550565b6000806040838503121562004df057600080fd5b823562004dfd816200438b565b915060208301356200488c816200438b565b60008060006060848603121562004e2557600080fd5b833562004e32816200438b565b9250602084013562004e44816200438b565b929592945050506040919091013590565b6000806040838503121562004e6957600080fd5b823562004e7681620045ee565b915060208301356200488c8162004497565b6000806040838503121562004e9c57600080fd5b8235915060208301356200488c8162004bcb565b60008060006060848603121562004ec657600080fd5b833562004ed38162004497565b9250602084013562004ee58162004497565b915060408401356001600160401b0381111562004f0157600080fd5b62004f0f868287016200467f565b9150509250925092565b60006020828403121562004f2c57600080fd5b81356001600160401b0381111562004f4357600080fd5b8201601f8101841362004f5557600080fd5b62004d0d848235602084016200463c565b60008060006060848603121562004f7c57600080fd5b833562004f8981620045ee565b9250602084013562004ee5816200438b565b6020815262004fb66020820183516001600160601b03169052565b6000602083015162004fd360408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160a01b03811660808401525060808301516001600160c01b0319811660a08401525060a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101c06101408181860152620050676101e086018462004956565b9250808601519050610160601f19868503018187015262005089848362004956565b935080870151915050610180620050a88187018364ffffffffff169052565b86015190506101a0620050c38682018364ffffffffff169052565b86015164ffffffffff811683870152905062004b8f565b602080825282516001600160c01b03191682820152820151606060408301526000906200510b608084018262004956565b90506040840151151560608401528091505092915050565b600080604083850312156200513757600080fd5b50508035926020909101359150565b600080604083850312156200515a57600080fd5b82356200516781620045ee565b915060208301356200488c8162004c2e565b600080604083850312156200518d57600080fd5b82356200519a816200438b565b946020939093013593505050565b60008060408385031215620051bc57600080fd5b82356200519a81620045ee565b600080600060608486031215620051df57600080fd5b8335620051ec816200438b565b92506020840135620051fe8162004497565b91506040840135620052108162004497565b809150509250925092565b600080606083850312156200522f57600080fd5b82359150620052428460208501620044ba565b90509250929050565b81516001600160601b031681526020808301516101e083019162005279908401826001600160601b03169052565b5060408301516200529560408401826001600160a01b03169052565b506060830151620052b3606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c0830151805161012084015260208101516101408401525060e0830151805161016084015260208101516101808401525061010083015180516101a084015260208101516101c08401526200206f565b600080604083850312156200534857600080fd5b823562005355816200438b565b915060208301356001600160401b03808211156200537257600080fd5b9084019061012082870312156200538857600080fd5b620053926200443e565b6200539d83620043a4565b8152620053ae8760208501620044ba565b6020820152606083013582811115620053c657600080fd5b620053d4888286016200467f565b6040830152506080830135606082015260a0830135608082015260c083013560a08201526200540660e08401620046b6565b60c08201526200541a6101008401620046b6565b60e08201528093505050509250929050565b6000602082840312156200543f57600080fd5b815162000f038162004497565b60208082526021908201527f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b600060208284031215620054a057600080fd5b815162000f038162004bcb565b600060208284031215620054c057600080fd5b5051919050565b600060208284031215620054da57600080fd5b815162000f038162004b99565b600181811c90821680620054fc57607f821691505b6020821081036200551d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200553657600080fd5b815162000f038162004c2e565b805162001cfe816200438b565b6000602082840312156200556357600080fd5b815162000f03816200438b565b805162001cfe8162004497565b6000604082840312156200559057600080fd5b6200559a620043c7565b8251620055a78162004497565b81526020830151620055b98162004497565b60208201529392505050565b60208082526022908201527f4552524f523a434d502d3030313a4e4f545f52454749535452595f5345525649604082015261434560f01b606082015260800190565b6000604082840312156200561a57600080fd5b62005624620043c7565b9050815181526020820151602082015292915050565b600082601f8301126200564c57600080fd5b81516200565d6200464d8262004612565b8181528460208386010111156200567357600080fd5b62004d0d82602083016020870162004930565b805162001cfe81620046a2565b600060208284031215620056a657600080fd5b81516001600160401b0380821115620056be57600080fd5b908301906101208286031215620056d457600080fd5b620056de6200443e565b620056e98362005543565b8152620056fa866020850162005607565b60208201526060830151828111156200571257600080fd5b62005720878286016200563a565b6040830152506080830151606082015260a0830151608082015260c083015160a08201526200575260e0840162005686565b60c082015262005766610100840162005686565b60e082015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6000604082840312156200579d57600080fd5b620057a7620043c7565b8251620057b48162004c2e565b81526020928301519281019290925250919050565b600060208284031215620057dc57600080fd5b815162000f0381620046a2565b60208082526021908201527f4552524f523a42444c2d3030323a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b6000602082840312156200583d57600080fd5b81516001600160401b038116811462000f0357600080fd5b60208082526017908201527f4552524f523a4143532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b60208152600062000f03602083018462004956565b805162001cfe81620045ee565b600060208284031215620058c157600080fd5b815162000f0381620045ee565b6020808252601f908201527f4552524f523a4143532d3030323a524f4c455f4e4f545f4558495354494e4700604082015260600190565b6001600160c01b03199390931683526001600160a01b039190911660208301521515604082015260600190565b6000602082840312156200594557600080fd5b81516001600160401b03808211156200595d57600080fd5b908301906101c082860312156200597357600080fd5b6200597d62004418565b620059888362005543565b8152620059986020840162005543565b6020820152620059ab60408401620058a1565b6040820152620059be6060840162005570565b6060820152620059d160808401620058a1565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120808401518381111562005a1557600080fd5b62005a23888287016200563a565b828401525050610140808401518381111562005a3e57600080fd5b62005a4c888287016200563a565b828401525050610160915062005a6482840162005686565b82820152610180915062005a7a82840162005686565b828201526101a0915062005a9082840162005686565b91810191909152949350505050565b60006040828403121562005ab257600080fd5b62000f03838362005607565b6000806040838503121562005ad257600080fd5b505080516020909101519092909150565b60006101e0828403121562005af757600080fd5b62005b01620043f2565b62005b0c8362005543565b815262005b1c6020840162005543565b602082015262005b2f6040840162005570565b604082015262005b43846060850162005607565b606082015262005b578460a0850162005607565b608082015262005b6b8460e0850162005607565b60a082015262005b8084610120850162005607565b60c082015262005b9584610160850162005607565b60e082015262005baa846101a0850162005607565b6101008201529392505050565b82815260406020820152600062004d0d604083018462004956565b83815260ff8316602082015260606040820152600062004a27606083018462004956565b60006020828403121562005c0957600080fd5b81516001600160401b0381111562005c2057600080fd5b62004d0d848285016200563a565b6001600160401b0360c01b8316815260406020820152600062004d0d604083018462004956565b601f82111562005c9f57600081815260208120601f850160051c8101602086101562005c7e5750805b601f850160051c820191505b818110156200225b5782815560010162005c8a565b505050565b81516001600160401b0381111562005cc05762005cc0620043b1565b62005cd88162005cd18454620054e7565b8462005c55565b602080601f83116001811462005d10576000841562005cf75750858301515b600019600386901b1c1916600185901b1785556200225b565b600085815260208120601f198616915b8281101562005d415788860151825594840194600190910190840162005d20565b508582101562005d605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111562000e7b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b506040516102aa3803806102aa83398101604081905261002f9161005b565b6001600160a01b03166c01000000000000000000000000026001600160601b03909116176000556100ad565b6000806040838503121561006e57600080fd5b82516001600160601b038116811461008557600080fd5b60208401519092506001600160a01b03811681146100a257600080fd5b809150509250929050565b6101ee806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c806251884a1461004557806321df0da71461006a578063beabacc814610095575b600080fd5b6000546040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b600054600160601b90046001600160a01b03166040516001600160a01b039091168152602001610061565b6100a86100a3366004610153565b6100aa565b005b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052600160601b909204909116906323b872dd906064016020604051808303816000875af115801561010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610131919061018f565b50505050565b80356001600160a01b038116811461014e57600080fd5b919050565b60008060006060848603121561016857600080fd5b61017184610137565b925061017f60208501610137565b9150604084013590509250925092565b6000602082840312156101a157600080fd5b815180151581146101b157600080fd5b939250505056fea2646970667358221220455e331420069b52ddb557c4094a8236a9cb76b6fb2388562bb6d2f594dbd6b064736f6c63430008140033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a264697066735822122093bb9b67a08862f3ed5c9a7035b32c346db4e7fbd4ef45434855ef9d289bc78864736f6c6343000814003360806040523480156200001157600080fd5b506200001c62000052565b6200002662000206565b620000306200033f565b6200003a620005a7565b600380546001600160a01b031916331790556200071d565b60dc600090815260208190527f5bd290414b404036f9d63146803dd83b59a8e1905062a5bfed8b0154d20a390d805460ff1916606417905560019081906200009860dc90565b60ff1660ff1681526020019081526020016000206000620000be620006eb60201b60201c565b60ff1660ff1681526020019081526020016000206000620000e4620006f560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200011760dc90565b60ff1660ff16815260200190815260200160002060006200013d620006f560201b60201c565b60ff1660ff168152602001908152602001600020600062000163620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200019660dc90565b60ff1660ff1681526020019081526020016000206000620001bc620006f560201b60201c565b60ff1660ff1681526020019081526020016000206000620001e2620006fa60201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f9db7038e59677010ca8f72fa448bad1b4f3c53346b666689163ccac31db467728054606460ff1991821681179092557f1a3062e9a24818c8281fcfb58ec4f3083a2f9a1314ac63f80d8d646661fdc5098054909116600190811790915560009182526020819052907f1bd07f61ef326b4de236f5b68f225f46ff76ee2c375ae31a06da201c49c70c12906200029a606e90565b60ff1660ff1681526020019081526020016000206000620002c0620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001908190620002f3606490565b60ff1660ff168152602001908152602001600020600062000319620006f560201b60201c565b60ff1660ff1681526020019081526020016000206000620001e2620006ff60201b60201c565b60d2600090815260208190527fc0d27dadfcf8ee0186a0f6fe9b5805a51e99869050491e4a3040efec012a214f805460ff1916600a17905560019081906200038560d290565b60ff1660ff1681526020019081526020016000206000620003ab6200070460201b60201c565b60ff1660ff1681526020019081526020016000206000620003d16200070960201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200040460d290565b60ff1660ff16815260200190815260200160002060006200042a6200070460201b60201c565b60ff1660ff1681526020019081526020016000206000620004506200070e60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200048360d290565b60ff1660ff1681526020019081526020016000206000620004a96200070460201b60201c565b60ff1660ff1681526020019081526020016000206000620004cf6200071360201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200050260d290565b60ff1660ff1681526020019081526020016000206000620005286200071360201b60201c565b60ff1660ff16815260200190815260200160002060006200054e620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200058160d290565b60ff1660ff1681526020019081526020016000206000620001bc620006eb60201b60201c565b60c8600090815260208190527fc5f2c791ab4e0b1a0b6c600884b07e98575b00ebd7c3166c4272a53bebf71403805460ff191660641790556001908190620005ed60c890565b60ff1660ff168152602001908152602001600020600062000613620006eb60201b60201c565b60ff1660ff168152602001908152602001600020600062000639620006f560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200066c60c890565b60ff1660ff168152602001908152602001600020600062000692620006f560201b60201c565b60ff1660ff1681526020019081526020016000206000620006b8620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001908190620002f360c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b60006028620006f0565b611867806200072d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a238accd11610097578063b24133ec11610066578063b24133ec146102e1578063bf1db3f9146102f4578063e9e96c7014610307578063f48016ce1461034557600080fd5b8063a238accd146101ea578063a4dc7d86146101fd578063a5961b4c1461021d578063a8989675146102ce57600080fd5b806354f6127f116100d357806354f6127f146101825780635dee4788146101a25780636ec3d940146101b75780638eaa6ac0146101ca57600080fd5b806309648a9d146100fa5780630d3581811461013957806338a699a41461015f575b600080fd5b610122610108366004611234565b600090815260026020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61012261014736600461125f565b60ff9081166000908152602081905260409020541690565b61017261016d366004611234565b610366565b6040519015158152602001610130565b610195610190366004611234565b6103f7565b60405161013091906112c2565b6101b56101b0366004611378565b61049c565b005b6101b56101c53660046113d1565b610771565b6101dd6101d8366004611234565b610927565b6040516101309190611462565b6101b56101f8366004611496565b610a68565b61021061020b366004611234565b610cda565b60405161013091906114dc565b6102c161022b366004611234565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260026020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b60405161013091906114ea565b6101b56102dc3660046114f8565b610d88565b6101b56102ef366004611378565b610e7e565b61017261030236600461125f565b61115d565b6101726103153660046114f8565b60ff9283166000908152600160209081526040808320948616835293815283822092851682529190915220541690565b610358610353366004611553565b6111aa565b604051908152602001610130565b60008181526002602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af41580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190611581565b92915050565b6000818152600260205260409020600101805460609190610417906115a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610443906115a3565b80156104905780601f1061046557610100808354040283529160200191610490565b820191906000526020600020905b81548152906001019060200180831161047357829003601f168201915b50505050509050919050565b6003546001600160a01b031633146104cf5760405162461bcd60e51b81526004016104c6906115dd565b60405180910390fd5b60405163b2466acf60e01b815260ff8316600482015273__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015610521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105459190611581565b6105915760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e45440000000060448201526064016104c6565b600083815260026020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af41580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190611581565b61066a5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f4352454154454400000060448201526064016104c6565b334360006106778661115d565b610682576064610698565b60ff808716600090815260208190526040902054165b845460ff88811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526002602052604090209091506001016107228682611662565b507f0ccdf5d7cd4da66a6894cfa246e02d19253a3f7c4cb3b0daee0bc2bf1a7dd4ff61074d88610cda565b8285326040516107609493929190611722565b60405180910390a150505050505050565b6003546001600160a01b0316331461079b5760405162461bcd60e51b81526004016104c6906115dd565b600082815260026020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b9190611581565b6108775760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3033303a4e4f545f4558495354494e4700000000000060448201526064016104c6565b60008481526002602052604090206001016108928482611662565b508154620100003390810262010000600160b01b031983161784559063ffffffff600160b01b909104166108c34390565b845463ffffffff91909116600160b01b0263ffffffff60b01b1990911617845560006108ee87610cda565b90507f228147c3bb5d3f2e24432bc0abaa1541c1f3f4208a9ab759bf26567e983fbdb78185853286604051610760959493929190611758565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260026020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c082015292835260018101805491928401916109df906115a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0b906115a3565b8015610a585780601f10610a2d57610100808354040283529160200191610a58565b820191906000526020600020905b815481529060010190602001808311610a3b57829003601f168201915b5050505050815250509050919050565b6003546001600160a01b03163314610a925760405162461bcd60e51b81526004016104c6906115dd565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190611581565b610b545760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e454400000060448201526064016104c6565b600082815260026020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be49190611581565b610c305760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e4700000000000060448201526064016104c6565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b90910416610c744390565b845463ffffffff91909116600160b01b0263ffffffff60b01b199091161784556000610c9f87610cda565b90507feb640fdc9d45826fb47cd85fac116714d3d638f1409790b2b7c0ac824db13b728187868632876040516107609695949392919061179d565b604080518082019091526000808252602082015260405163526e3ec360e11b815260048101839052600090819073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063a4dc7d86906024016040805180830381865af4158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906117e9565b6040805180820190915260ff909216825260ff19166020820152949350505050565b60ff8381166000908152602081905260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190611581565b15610e1b57505050565b60ff808416600090815260016020908152604080832086851684528252808320858516845290915290205416610e7957604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016104c6565b505050565b6003546001600160a01b03163314610ea85760405162461bcd60e51b81526004016104c6906115dd565b60405163b2466acf60e01b815260ff8316600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e9190611581565b610f6a5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e454400000060448201526064016104c6565b600083815260026020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa9190611581565b6110465760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e4700000000000060448201526064016104c6565b60008581526002602052604090206001016110618482611662565b508154620100003390810262010000600160b01b031960ff88166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166110a64390565b845463ffffffff91909116600160b01b0263ffffffff60b01b1990911617845560006110d188610cda565b90507feb640fdc9d45826fb47cd85fac116714d3d638f1409790b2b7c0ac824db13b7281888686328760405161110c9695949392919061179d565b60405180910390a17f228147c3bb5d3f2e24432bc0abaa1541c1f3f4208a9ab759bf26567e983fbdb7818885328660405161114b959493929190611758565b60405180910390a15050505050505050565b60ff81811660009081526020819052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024016103b0565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce90604401602060405180830381865af4158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190611818565b9392505050565b60006020828403121561124657600080fd5b5035919050565b60ff8116811461125c57600080fd5b50565b60006020828403121561127157600080fd5b813561122d8161124d565b6000815180845260005b818110156112a257602081850181015186830182015201611286565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061122d602083018461127c565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126112fc57600080fd5b813567ffffffffffffffff80821115611317576113176112d5565b604051601f8301601f19908116603f0116810190828211818310171561133f5761133f6112d5565b8160405283815286602085880101111561135857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561138d57600080fd5b83359250602084013561139f8161124d565b9150604084013567ffffffffffffffff8111156113bb57600080fd5b6113c7868287016112eb565b9150509250925092565b600080604083850312156113e457600080fd5b82359150602083013567ffffffffffffffff81111561140257600080fd5b61140e858286016112eb565b9150509250929050565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152611474602082018351611418565b6000602083015160c08084015261148e60e084018261127c565b949350505050565b600080604083850312156114a957600080fd5b8235915060208301356114bb8161124d565b809150509250929050565b805160ff16825260209081015160ff1916910152565b604081016103f182846114c6565b60a081016103f18284611418565b60008060006060848603121561150d57600080fd5b83356115188161124d565b925060208401356115288161124d565b915060408401356115388161124d565b809150509250925092565b60ff198116811461125c57600080fd5b6000806040838503121561156657600080fd5b82356115718161124d565b915060208301356114bb81611543565b60006020828403121561159357600080fd5b8151801515811461122d57600080fd5b600181811c908216806115b757607f821691505b6020821081036115d757634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f4552524f523a4b56532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b601f821115610e7957600081815260208120601f850160051c8101602086101561163b5750805b601f850160051c820191505b8181101561165a57828155600101611647565b505050505050565b815167ffffffffffffffff81111561167c5761167c6112d5565b6116908161168a84546115a3565b84611614565b602080601f8311600181146116c557600084156116ad5750858301515b600019600386901b1c1916600185901b17855561165a565b600085815260208120601f198616915b828110156116f4578886015182559484019460019091019084016116d5565b50858210156117125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60a0810161173082876114c6565b60ff9490941660408201526001600160a01b0392831660608201529116608090910152919050565b60c0810161176682886114c6565b60ff9590951660408201526001600160a01b03938416606082015291909216608082015263ffffffff90911660a090910152919050565b60e081016117ab82896114c6565b60ff96871660408301529490951660608601526001600160a01b039283166080860152911660a084015263ffffffff1660c090920191909152919050565b600080604083850312156117fc57600080fd5b82516118078161124d565b60208401519092506114bb81611543565b60006020828403121561182a57600080fd5b505191905056fea2646970667358221220f939c446d2a8f4e906670f91871af4dbd5d1080e0e33cb50e0e6fc2a596aabeb64736f6c63430008140033",
2314
- "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200045d5760003560e01c8063887b1fa9116200024d578063b8c510671162000149578063db70354c11620000c7578063ee0fdf711162000092578063ee0fdf711462000c86578063f274e87d1462000c9d578063f2b246c31462000cca578063fd143c761462000cf0578063fe1f18d61462000d0757600080fd5b8063db70354c1462000c2a578063e1f64d771462000c41578063e79597401462000c58578063ea5fa54b1462000c6f57600080fd5b8063ca600b1c1162000114578063ca600b1c1462000bad578063cf5ccedb1462000bbf578063cf7a1d771462000be5578063d250185c1462000bfc578063dad73bed1462000c1357600080fd5b8063b8c510671462000b42578063b9f36dde1462000b59578063bd7d9d851462000b70578063c2bf7d261462000b9657600080fd5b8063a238accd11620001d7578063a90be90711620001a2578063a90be9071462000ac3578063af17d38a1462000ada578063b3c650151462000af1578063b88da7591462000b14578063b89010821462000b2b57600080fd5b8063a238accd1462000a49578063a310e2a31462000a60578063a5a4fbbc1462000a95578063a745e3df1462000aac57600080fd5b80639675513d11620002185780639675513d14620009a45780639845743714620009bb57806399fd467714620009d25780639ae31ff51462000a1a57600080fd5b8063887b1fa91462000922578063893d20e8146200095b5780638d5d536e1462000965578063946dfcfe146200097c57600080fd5b80634d459c90116200035d57806369a44a1b11620002e75780637cef484211620002b25780637cef484214620008af5780637fec8b3114620008c05780638125ea9214620008d757806383d3331914620008e157806387c5658614620008ea57600080fd5b806369a44a1b146200085d5780636b9bf08b14620008745780636fa29853146200088657806373617bf1146200089857600080fd5b80635ab1bd5311620003285780635ab1bd5314620007f85780635d4345cc1462000802578063644c45e01462000819578063674d0ccf146200084657600080fd5b80634d459c90146200065d5780634f421333146200077b5780635312fdc2146200079257806357f80bbf14620007c357600080fd5b8063138461e011620003eb578063349195f911620003b6578063349195f914620005f0578063423eb9fa14620005f95780634288121d146200060e57806342c74ed014620006205780634793b4ab146200063757600080fd5b8063138461e014620005775780631a91887614620005815780631eff4b2214620005b1578063278b381b14620005d957600080fd5b80630d0ccc5b116200042c5780630d0ccc5b14620005015780630d8e6e2c14620005275780630d9b998d14620005465780630fec111c146200055d57600080fd5b806301ffc9a7146200046257806306a5298b14620004a757806307af0dc014620004c057806309648a9d14620004d7575b600080fd5b62000492620004733660046200435f565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b620004be620004b8366004620044ed565b62000d1e565b005b620004be620004d1366004620046c3565b62000d4d565b620004ee620004e836600462004845565b62000e0a565b60405160ff90911681526020016200049e565b62000518620005123660046200485f565b62000e81565b6040519081526020016200049e565b6200053162000f0a565b60405162ffffff90911681526020016200049e565b620004be6200055736600462004897565b62000f97565b620005676200113a565b6040516200049e92919062004984565b620004be620012b5565b620005986200059236600462004a30565b620014e0565b6040516001600160a01b0390911681526020016200049e565b620005187f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b62000492620005ea36600462004a30565b62001511565b600f5462000518565b620004be6200060a36600462004a50565b5050565b6006546001600160a01b031662000598565b620004be62000631366004620044ed565b62001520565b6200064e6200064836600462004a30565b6200190e565b6040516200049e919062004af0565b6200071d6200066e36600462004bab565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206200607383398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016200049e565b620004926200078c36600462004bab565b6200193b565b620007a9620007a336600462004845565b620019f2565b6040516001600160c01b031990911681526020016200049e565b620007da620007d436600462004a30565b62001a34565b6040805182511515815260209283015192810192909252016200049e565b6200059862001a69565b620004be6200081336600462004bdb565b62001a7e565b600154600160a01b90046001600160601b03165b6040516001600160601b0390911681526020016200049e565b620005186200085736600462004c0e565b62001b27565b620005186200086e36600462004a30565b62001b4b565b6007546001600160a01b031662000598565b6004546001600160a01b031662000598565b620004be620008a936600462004c3d565b62001bdc565b620004be6200060a36600462004ca4565b6200082d620008d136600462004845565b62001ca1565b6200059862001ce9565b60095462000518565b604080518082018252600080825260209182015281518083019092526013548252601454908201525b6040516200049e919062004cc5565b6200094c6200093336600462004c0e565b5060408051808201909152600081526060602082015290565b6040516200049e919062004cdd565b6200059862001d03565b620004be6200097636600462004d15565b62001d0f565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed9015462000518565b62000518620009b536600462004ddc565b62001f0c565b620004be620009cc36600462004e0f565b62002076565b62000492620009e336600462004e55565b6001600160c01b031982166000908152600a602090815260408083206001600160a01b038516845290915290205460ff1692915050565b6200082d62000a2b36600462004a30565b6001600160601b039081166000908152601160205260409020541690565b620004be62000a5a36600462004e88565b620021f6565b6200059862000a7136600462004a30565b6001600160601b03166000908152601260205260409020546001600160a01b031690565b6200059862000aa636600462004a30565b62002263565b620004be62000abd36600462004eb0565b6200228f565b6200051862000ad436600462004845565b620023f5565b620007a962000aeb36600462004f19565b62002431565b62000afb620025ba565b6040516001600160401b0390911681526020016200049e565b6200053162000b2536600462004845565b620025dd565b620004be62000b3c36600462004f66565b62002632565b620007a962000b5336600462004f19565b620026fd565b620004be62000b6a36600462004e55565b6200277d565b62000b8762000b8136600462004a30565b620028e6565b6040516200049e919062004f9b565b620004be62000ba736600462004e55565b62002977565b6005546001600160a01b031662000598565b62000bd662000bd036600462004c0e565b62002b77565b6040516200049e9190620050da565b620004be62000bf636600462004eb0565b62002c75565b6200091362000c0d36600462005123565b62002d88565b620004be62000c2436600462005146565b62002e17565b6200082d62000c3b36600462005179565b62003035565b620004be62000c5236600462004e0f565b620030cc565b6200059862000c69366004620051a8565b6200321a565b620004be62000c80366004620051c9565b6200323f565b6200049262000c9736600462004c0e565b62003390565b62000cb462000cae3660046200521b565b620033bb565b604080519283526020830191909152016200049e565b62000ce162000cdb36600462004a30565b62003452565b6040516200049e91906200524b565b620004be62000d0136600462005334565b62003516565b620004be62000d1836600462004bdb565b6200368e565b6200060a6065838360405160200162000d3891906200524b565b60405160208183030381529060405262003763565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db491906200542c565b6001600160a01b0316336001600160a01b03161462000df05760405162461bcd60e51b815260040162000de7906200544c565b60405180910390fd5b6200060a60d2838360405160200162000d38919062004f9b565b6003546040516309648a9d60e01b8152600481018390526000916001600160a01b0316906309648a9d90602401602060405180830381865afa15801562000e55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7b91906200548d565b92915050565b604051631488c84560e01b815260048101839052600082810b60248301529073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__90631488c84590604401602060405180830381865af415801562000edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f039190620054ad565b9392505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801562000f6c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f929190620054c7565b905090565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000fd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ffe91906200542c565b6001600160a01b0316336001600160a01b031614620010315760405162461bcd60e51b815260040162000de7906200544c565b6000604051806101c00160405280896001600160601b03168152602001836001600160601b03168152602001886001600160c01b031916815260200160006001600160a01b03168152602001876001600160c01b031916815260200186815260200185815260200160008152602001848152602001604051806020016040528060008152508152602001604051806020016040528060008152508152602001620010d9600090565b64ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff16905290506200112f60d28a836040516020016200111a919062004f9b565b60405160208183030381529060405262003859565b505050505050505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280620011ac600090565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001620011f662001d03565b6001600160a01b031681526020018260010180546200121590620054e7565b80601f01602080910402602001604051908101604052809291908181526020018280546200124390620054e7565b8015620012945780601f10620012685761010080835404028352916020019162001294565b820191906000526020600020905b8154815290600101906020018083116200127657829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562001318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133e919062005523565b1562001382576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b0316602482015260440162000de7565b6001546001600160a01b0316620013ac5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015620013f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141c919062005523565b62001446576040516372657a5160e01b81526001600160a01b038216600482015260240162000de7565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa15801562001491573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b7919062005550565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b600080620014f160645b8462003918565b8060200190518101906200150691906200557d565b602001519392505050565b600062000e7b60658362003a1d565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200155f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200158591906200542c565b6001600160a01b0316336001600160a01b031614620015b85760405162461bcd60e51b815260040162000de790620055c5565b80516020808301516001600160601b038516600090815260129092526040909120546001600160a01b031615620016495760405162461bcd60e51b815260206004820152602e60248201527f4552524f523a5452532d3031323a544f4b454e5f48414e444c45525f414c524560448201526d10511657d49151d254d51154915160921b606482015260840162000de7565b6001600160601b0382811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015620016b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016db919062005523565b620017335760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5452532d3031333a504f4f4c5f414c52454144595f4c494e4b456044820152601160fa1b606482015260840162000de7565b6001600160601b0381811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af41580156200179f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017c5919062005523565b620018255760405162461bcd60e51b815260206004820152602960248201527f4552524f523a5452532d3031343a434f4d50454e534154494f4e5f414c524541604482015268111657d3125392d15160ba1b606482015260840162000de7565b8383604001516040516200183990620042d9565b6001600160601b0390921682526001600160a01b03166020820152604001604051809103906000f08015801562001874573d6000803e3d6000fd5b506001600160601b03858116600081815260126020908152604080832080546001600160a01b0319166001600160a01b03979097169690961790955585841682526011905283812080546bffffffffffffffffffffffff1990811684179091559286168152929092208054909116909117905562001908620018f4606590565b85856040516020016200111a91906200524b565b50505050565b62001918620042e7565b6200192660dc5b8362003918565b80602001905181019062000e7b919062005693565b6000806000805160206200607383398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015620019c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019eb9190620054ad565b1192915050565b60006009828154811062001a0a5762001a0a62005774565b90600052602060002090600491828204019190066008029054906101000a900460c01b9050919050565b604080518082019091526000808252602082015262001a54608c6200191f565b80602001905181019062000e7b91906200578a565b600062000f926001546001600160a01b031690565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001abf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ae591906200542c565b6001600160a01b0316336001600160a01b03161462001b185760405162461bcd60e51b815260040162000de7906200544c565b6200060a60d25b838362003b1e565b6001600160c01b031981166000908152600b6020526040812062000e7b9062003be9565b6001600160601b038116600090815260106020526040808220905163697d0f1b60e11b8152600481019190915273__$0dc988b1672de335b826773df9015af2da$__9063d2fa1e36906024015b602060405180830381865af415801562001bb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7b9190620054ad565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c4191906200542c565b6001600160a01b0316336001600160a01b03161462001c745760405162461bcd60e51b815260040162000de790620055c5565b6200060a608c83836040516020016200111a91908151151581526020918201519181019190915260400190565b6000600f828154811062001cb95762001cb962005774565b9060005260206000209060029182820401919006600c029054906101000a90046001600160601b03169050919050565b600062000f926003546001600160a01b031690565b919050565b600062000f9262003bf4565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001d50573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d7691906200542c565b6001600160a01b0316336001600160a01b03161462001dd85760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000de7565b6000604051806101000160405280886001600160601b0316815260200187815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820188905260408201526060810187905260800142604051631ded81af60e31b815264ffffffffff90911660048201526024810187905273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af415801562001ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecf9190620057c9565b64ffffffffff168152602001600064ffffffffff169052905062001f0260dc89836040516020016200111a919062004af0565b5050505050505050565b6000306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001f4f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f7591906200542c565b6001600160a01b0316336001600160a01b03161462001fa85760405162461bcd60e51b815260040162000de790620057e9565b506001600160601b038083166000818152600e602090815260408083209486168352938152838220805490839055928252600d9052829020915163539eabab60e11b8152909173__$0dc988b1672de335b826773df9015af2da$__9163a73d5756916200202b9186906004019182526001600160601b0316602082015260400190565b602060405180830381865af415801562002049573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206f919062005523565b5092915050565b6001600160601b03828116600090815260106020526040908190209051632bfdd6b960e01b81526004810182905291851660248301529073__$0dc988b1672de335b826773df9015af2da$__90632bfdd6b990604401602060405180830381865af4158015620020ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002110919062005523565b15620021695760405162461bcd60e51b815260206004820152602160248201527f4552524f523a504c2d3032303a42554e444c455f414c52454144595f414444456044820152601160fa1b606482015260840162000de7565b604051631461054360e31b8152600481018290526001600160601b038516602482015273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af4158015620021c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021ef919062005523565b5050505050565b60035460405163a238accd60e01b81526004810184905260ff831660248201526001600160a01b039091169063a238accd90604401600060405180830381600087803b1580156200224657600080fd5b505af11580156200225b573d6000803e3d6000fd5b505050505050565b600080620022726064620014ea565b8060200190518101906200228791906200557d565b519392505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c620022b362000f0a565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015620022f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200231a91906200582a565b600080516020620060538339815191528054600160401b900460ff16806200234f575080546001600160401b03808416911610155b156200236e5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556200239b858562003d14565b620023a68362003f5c565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b6040516322f5db0f60e11b81526004810182905260009073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906345ebb61e9060240162001b98565b6000306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200249891906200542c565b6001600160a01b0316336001600160a01b031614620024cb5760405162461bcd60e51b815260040162000de79062005855565b60405163e14787cb60e01b815273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb90620025049085906004016200588c565b602060405180830381865af415801562002522573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025489190620058ae565b9050620025558162003390565b15620025ae5760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4143532d3031303a524f4c455f414c52454144595f45584953546044820152605360f81b606482015260840162000de7565b62001cfe818362003f66565b600062000f9260008051602062006053833981519152546001600160401b031690565b600060008051602062006073833981519152600101828154811062002606576200260662005774565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b604080518082019091526001600160601b0383168152602081018290526200190860c86040516355ee627560e01b81526001600160c01b03198716600482015273__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015620026af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026d59190620054ad565b83604051602001620026e8919062004cdd565b60405160208183030381529060405262003fcb565b60405163e14787cb60e01b815260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb90620027399085906004016200588c565b602060405180830381865af415801562002757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7b9190620058ae565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620027c15760405162461bcd60e51b815260040162000de790620058ce565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002800573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200282691906200542c565b6001600160a01b0316336001600160a01b031614620028595760405162461bcd60e51b815260040162000de79062005855565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19169055928252600b905220620028a2908362004001565b507fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d1698754539668483836000604051620028d99392919062005905565b60405180910390a1505050565b604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201819052610140820152610160810182905261018081018290526101a08101919091526200296260d26200191f565b80602001905181019062000e7b919062005932565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620029bb5760405162461bcd60e51b815260040162000de790620058ce565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620029fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a2091906200542c565b6001600160a01b0316336001600160a01b03161462002a535760405162461bcd60e51b815260040162000de79062005855565b6001600160c01b0319831660009081526008602052604090206002015460ff1662002ac15760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4143532d3034303a524f4c455f4e4f545f414354495645000000604482015260640162000de7565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19166001179055928252600b90522062002b0d908362004018565b506001600160c01b031983166000908152600a602090815260408083206001600160a01b0386168452909152908190205490517fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d1698754539668491620028d9918691869160ff9091169062005905565b6040805160608082018352600080835260208084018390528385018290526001600160c01b0319868116835260088252918590208551938401909552845460c01b9091168252600184018054939492939184019162002bd690620054e7565b80601f016020809104026020016040519081016040528092919081815260200182805462002c0490620054e7565b801562002c555780601f1062002c295761010080835404028352916020019162002c55565b820191906000526020600020905b81548152906001019060200180831162002c3757829003601f168201915b50505091835250506002919091015460ff16151560209091015292915050565b600080516020620060538339815191528054600160401b810460ff1615906001600160401b031660008115801562002caa5750825b90506000826001600160401b0316600114801562002cc75750303b155b90508115801562002cd6575080155b1562002cf55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831562002d2057845460ff60401b1916600160401b1785555b62002d2c888862003d14565b62002d38878762003f5c565b831562001f0257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050505050565b60408051808201825260008082526020820152905163638086fd60e11b8152600481018490526024810183905273__$a23651848365a6a5ca15f07b4331037f48$__9063c7010dfa906044016040805180830381865af415801562002df1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062005a9f565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b161462002e5b5760405162461bcd60e51b815260040162000de790620058ce565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002e9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ec091906200542c565b6001600160a01b0316336001600160a01b03161462002ef35760405162461bcd60e51b815260040162000de79062005855565b6001600160c01b03198084166000908152600860209081526040808320815160608101909252805460c01b909416815260018401805493949193919284019162002f3d90620054e7565b80601f016020809104026020016040519081016040528092919081815260200182805462002f6b90620054e7565b801562002fbc5780601f1062002f905761010080835404028352916020019162002fbc565b820191906000526020600020905b81548152906001019060200180831162002f9e57829003601f168201915b50505091835250506002919091015460ff1615156020909101528315156040820152905062002feb816200402f565b604080516001600160c01b03198616815284151560208201527feaffaec948991ecc6e201ba4f67ba865fbf66aace3d2f2823dc5483cc9813fda910160405180910390a150505050565b6001600160601b038216600090815260106020526040808220905163e797d89960e01b815260048101919091526024810183905273__$0dc988b1672de335b826773df9015af2da$__9063e797d89990604401602060405180830381865af4158015620030a6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062005550565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156200310d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200313391906200542c565b6001600160a01b0316336001600160a01b031614620031665760405162461bcd60e51b815260040162000de790620057e9565b6001600160601b038381166000818152600e60209081526040808320948716808452948252808320869055928252600d90528190209051631461054360e31b81526004810191909152602481019190915273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af4158015620031f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001908919062005523565b6001600160c01b031982166000908152600b6020526040812062000f0390836200410d565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200327e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a491906200542c565b6001600160a01b0316336001600160a01b031614620032d75760405162461bcd60e51b815260040162000de790620055c5565b604080518082019091526001600160a01b03838116825282166020820152600f8054600180820183556000929092527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8026002820401805492909116600c026101000a6001600160601b038181021990931692871602919091179055620019086200335f606490565b85836040516020016200111a919081516001600160a01b039081168252602092830151169181019190915260400190565b6001600160c01b0319818116600081815260086020526040812054909260c09190911b161462000e7b565b60405163012ebd8360e21b8152815160048201526020820151602482015260448101839052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af415801562003421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003447919062005abe565b915091509250929050565b620034f56040805161012081018252600080825260208083018290528284018290528351808501855282815280820183905260608401528351808501855282815280820183905260808401528351808501855282815280820183905260a08401528351808501855282815280820183905260c08401528351808501855282815280820183905260e084015283518085019094528184528301529061010082015290565b6200350160656200191f565b80602001905181019062000e7b919062005ae3565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003557573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200357d91906200542c565b6001600160a01b0316336001600160a01b03161480620036145750306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620035d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035ff91906200542c565b6001600160a01b0316336001600160a01b0316145b620036745760405162461bcd60e51b815260206004820152602960248201527f4552524f523a42444c2d3030333a4e4f545f504f4f4c5f4f525f50524f445543604482015268545f5345525649434560b81b606482015260840162000de7565b6200060a60dc838360405160200162000d38919062004af0565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620036cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f591906200542c565b6001600160a01b0316336001600160a01b031614620037575760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000de7565b6200060a60dc62001b1f565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690636ec3d9409073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620037da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038009190620054ad565b836040518363ffffffff1660e01b81526004016200382092919062005bb7565b600060405180830381600087803b1580156200383b57600080fd5b505af115801562003850573d6000803e3d6000fd5b50505050505050565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690635dee47889073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620038d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038f69190620054ad565b85846040518463ffffffff1660e01b8152600401620038209392919062005bd2565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526060916001600160a01b0316906354f6127f9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003990573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039b69190620054ad565b6040518263ffffffff1660e01b8152600401620039d591815260200190565b600060405180830381865afa158015620039f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f03919081019062005bf6565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526000916001600160a01b0316906338a699a49073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003a95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003abb9190620054ad565b6040518263ffffffff1660e01b815260040162003ada91815260200190565b602060405180830381865afa15801562003af8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062005523565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b039091169063a238accd9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003b95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bbb9190620054ad565b6040516001600160e01b031960e084901b168152600481019190915260ff8416602482015260440162003820565b600062000e7b825490565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562003c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c80919062005523565b1562003d0457600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa15801562003cde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f9291906200542c565b506002546001600160a01b031690565b62003d1e6200411b565b60008051602062006073833981519152600062003d5160008051602062006053833981519152546001600160401b031690565b9050600062003d5f62000f0a565b9050816001600160401b031660010362003d8e5760028301805462ffffff191662ffffff831617905562003dde565b600283015462ffffff9081169082161162003dde5760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640162000de7565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b0380891692840192909252908616908201526060810162003e534290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890620023e69083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6200045d6200411b565b604080516060810182526001600160c01b0319841681526020810183905260019181019190915262003f98816200402f565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c64858383604051620028d992919062005c2e565b600c54604051630bbdc8f160e31b81526001600160a01b0390911690635dee478890620038209085908790869060040162005bd2565b600062000f03836001600160a01b03841662004156565b600062000f03836001600160a01b0384166200425a565b80516001600160c01b0319811660009081526008602090815260409091208351815467ffffffffffffffff191660c09190911c1781559083015183919060018201906200407d908262005ca4565b50604091909101516002909101805460ff1916911515919091179055620040a48162003390565b6200060a57600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b600062000f038383620042ac565b6000805160206200605383398151915254600160401b900460ff166200415457604051631afcd79f60e31b815260040160405180910390fd5b565b600081815260018301602052604081205480156200424f5760006200417d60018362005d70565b8554909150600090620041939060019062005d70565b9050818114620041ff576000866000018281548110620041b757620041b762005774565b9060005260206000200154905080876000018481548110620041dd57620041dd62005774565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062004213576200421362005d92565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000e7b565b600091505062000e7b565b6000818152600183016020526040812054620042a35750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000e7b565b50600062000e7b565b6000826000018281548110620042c657620042c662005774565b9060005260206000200154905092915050565b6102aa8062005da983390190565b60405180610100016040528060006001600160601b0316815260200162004321604051806040016040528060008152602001600081525090565b815260200160608152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6000602082840312156200437257600080fd5b81356001600160e01b03198116811462000f0357600080fd5b6001600160601b0381168114620043a157600080fd5b50565b803562001cfe816200438b565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620043ec57620043ec620043b1565b60405290565b60405161012081016001600160401b0381118282101715620043ec57620043ec620043b1565b6040516101c081016001600160401b0381118282101715620043ec57620043ec620043b1565b60405161010081016001600160401b0381118282101715620043ec57620043ec620043b1565b604051601f8201601f191681016001600160401b03811182821017156200448f576200448f620043b1565b604052919050565b6001600160a01b0381168114620043a157600080fd5b803562001cfe8162004497565b600060408284031215620044cd57600080fd5b620044d7620043c7565b9050813581526020820135602082015292915050565b6000808284036102008112156200450357600080fd5b833562004510816200438b565b92506101e0601f19820112156200452657600080fd5b5062004531620043f2565b6200453f60208501620043a4565b81526200454f60408501620043a4565b60208201526200456260608501620044ad565b6040820152620045768560808601620044ba565b60608201526200458a8560c08601620044ba565b6080820152610100620045a086828701620044ba565b60a0830152620045b5866101408701620044ba565b60c0830152620045ca866101808701620044ba565b60e0830152620045df866101c08701620044ba565b90820152919491935090915050565b6001600160c01b031981168114620043a157600080fd5b803562001cfe81620045ee565b60006001600160401b038211156200462e576200462e620043b1565b50601f01601f191660200190565b6000620046536200464d8462004612565b62004464565b90508281528383830111156200466857600080fd5b828260208301376000602084830101529392505050565b600082601f8301126200469157600080fd5b62000f03838335602085016200463c565b64ffffffffff81168114620043a157600080fd5b803562001cfe81620046a2565b60008060408385031215620046d757600080fd5b8235620046e4816200438b565b915060208301356001600160401b03808211156200470157600080fd5b908401906101c082870312156200471757600080fd5b6200472162004418565b6200472c83620043a4565b81526200473c60208401620043a4565b60208201526200474f6040840162004605565b60408201526200476260608401620044ad565b6060820152620047756080840162004605565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013583811115620047b957600080fd5b620047c7898287016200467f565b8284015250506101408084013583811115620047e257600080fd5b620047f0898287016200467f565b828401525050610160915062004808828401620046b6565b8282015261018091506200481e828401620046b6565b828201526101a0915062004834828401620046b6565b828201528093505050509250929050565b6000602082840312156200485857600080fd5b5035919050565b600080604083850312156200487357600080fd5b8235915060208301358060000b81146200488c57600080fd5b809150509250929050565b600080600080600080600080610100898b031215620048b557600080fd5b8835620048c2816200438b565b97506020890135620048d4816200438b565b96506040890135620048e681620045ee565b95506060890135620048f881620045ee565b94506080890135935060a0890135925060c0890135915060e08901356200491f816200438b565b809150509295985092959890939650565b60005b838110156200494d57818101518382015260200162004933565b50506000910152565b600081518084526200497081602086016020860162004930565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff60408501511660808301526060840151620049c960a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015262004a1161012084018262004956565b9050828103602084015262004a27818562004956565b95945050505050565b60006020828403121562004a4357600080fd5b813562000f03816200438b565b6000806040838503121562004a6457600080fd5b823562004a7181620045ee565b915060208301356001600160401b038082111562004a8e57600080fd5b908401906040828703121562004aa357600080fd5b62004aad620043c7565b823562004aba816200438b565b815260208301358281111562004acf57600080fd5b62004add888286016200467f565b6020830152508093505050509250929050565b602081526001600160601b0382511660208201526000602083015162004b23604084018280518252602090810151910152565b50604083015161012080608085015262004b4261014085018362004956565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015162004b7c61010086018264ffffffffff169052565b5060e085015164ffffffffff8116858301525b5090949350505050565b62ffffff81168114620043a157600080fd5b60006020828403121562004bbe57600080fd5b813562000f038162004b99565b60ff81168114620043a157600080fd5b6000806040838503121562004bef57600080fd5b823562004bfc816200438b565b915060208301356200488c8162004bcb565b60006020828403121562004c2157600080fd5b813562000f0381620045ee565b8015158114620043a157600080fd5b600080828403606081121562004c5257600080fd5b833562004c5f816200438b565b92506040601f198201121562004c7457600080fd5b5062004c7f620043c7565b602084013562004c8f8162004c2e565b81526040939093013560208401525092909150565b6000806040838503121562004cb857600080fd5b823562004bfc81620045ee565b81518152602080830151908201526040810162000e7b565b602081526001600160601b0382511660208201526000602083015160408084015262004d0d606084018262004956565b949350505050565b600080600080600080600060e0888a03121562004d3157600080fd5b873562004d3e816200438b565b9650602088013562004d50816200438b565b955062004d618960408a01620044ba565b94506080880135935060a0880135925060c08801356001600160401b038082111562004d8c57600080fd5b818a0191508a601f83011262004da157600080fd5b81358181111562004db157600080fd5b8b602082850101111562004dc457600080fd5b60208301945080935050505092959891949750929550565b6000806040838503121562004df057600080fd5b823562004dfd816200438b565b915060208301356200488c816200438b565b60008060006060848603121562004e2557600080fd5b833562004e32816200438b565b9250602084013562004e44816200438b565b929592945050506040919091013590565b6000806040838503121562004e6957600080fd5b823562004e7681620045ee565b915060208301356200488c8162004497565b6000806040838503121562004e9c57600080fd5b8235915060208301356200488c8162004bcb565b60008060006060848603121562004ec657600080fd5b833562004ed38162004497565b9250602084013562004ee58162004497565b915060408401356001600160401b0381111562004f0157600080fd5b62004f0f868287016200467f565b9150509250925092565b60006020828403121562004f2c57600080fd5b81356001600160401b0381111562004f4357600080fd5b8201601f8101841362004f5557600080fd5b62004d0d848235602084016200463c565b60008060006060848603121562004f7c57600080fd5b833562004f8981620045ee565b9250602084013562004ee5816200438b565b6020815262004fb66020820183516001600160601b03169052565b6000602083015162004fd360408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160a01b03811660808401525060808301516001600160c01b0319811660a08401525060a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101c06101408181860152620050676101e086018462004956565b9250808601519050610160601f19868503018187015262005089848362004956565b935080870151915050610180620050a88187018364ffffffffff169052565b86015190506101a0620050c38682018364ffffffffff169052565b86015164ffffffffff811683870152905062004b8f565b602080825282516001600160c01b03191682820152820151606060408301526000906200510b608084018262004956565b90506040840151151560608401528091505092915050565b600080604083850312156200513757600080fd5b50508035926020909101359150565b600080604083850312156200515a57600080fd5b82356200516781620045ee565b915060208301356200488c8162004c2e565b600080604083850312156200518d57600080fd5b82356200519a816200438b565b946020939093013593505050565b60008060408385031215620051bc57600080fd5b82356200519a81620045ee565b600080600060608486031215620051df57600080fd5b8335620051ec816200438b565b92506020840135620051fe8162004497565b91506040840135620052108162004497565b809150509250925092565b600080606083850312156200522f57600080fd5b82359150620052428460208501620044ba565b90509250929050565b81516001600160601b031681526020808301516101e083019162005279908401826001600160601b03169052565b5060408301516200529560408401826001600160a01b03169052565b506060830151620052b3606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c0830151805161012084015260208101516101408401525060e0830151805161016084015260208101516101808401525061010083015180516101a084015260208101516101c08401526200206f565b600080604083850312156200534857600080fd5b823562005355816200438b565b915060208301356001600160401b03808211156200537257600080fd5b9084019061012082870312156200538857600080fd5b620053926200443e565b6200539d83620043a4565b8152620053ae8760208501620044ba565b6020820152606083013582811115620053c657600080fd5b620053d4888286016200467f565b6040830152506080830135606082015260a0830135608082015260c083013560a08201526200540660e08401620046b6565b60c08201526200541a6101008401620046b6565b60e08201528093505050509250929050565b6000602082840312156200543f57600080fd5b815162000f038162004497565b60208082526021908201527f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b600060208284031215620054a057600080fd5b815162000f038162004bcb565b600060208284031215620054c057600080fd5b5051919050565b600060208284031215620054da57600080fd5b815162000f038162004b99565b600181811c90821680620054fc57607f821691505b6020821081036200551d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200553657600080fd5b815162000f038162004c2e565b805162001cfe816200438b565b6000602082840312156200556357600080fd5b815162000f03816200438b565b805162001cfe8162004497565b6000604082840312156200559057600080fd5b6200559a620043c7565b8251620055a78162004497565b81526020830151620055b98162004497565b60208201529392505050565b60208082526022908201527f4552524f523a434d502d3030313a4e4f545f52454749535452595f5345525649604082015261434560f01b606082015260800190565b6000604082840312156200561a57600080fd5b62005624620043c7565b9050815181526020820151602082015292915050565b600082601f8301126200564c57600080fd5b81516200565d6200464d8262004612565b8181528460208386010111156200567357600080fd5b62004d0d82602083016020870162004930565b805162001cfe81620046a2565b600060208284031215620056a657600080fd5b81516001600160401b0380821115620056be57600080fd5b908301906101208286031215620056d457600080fd5b620056de6200443e565b620056e98362005543565b8152620056fa866020850162005607565b60208201526060830151828111156200571257600080fd5b62005720878286016200563a565b6040830152506080830151606082015260a0830151608082015260c083015160a08201526200575260e0840162005686565b60c082015262005766610100840162005686565b60e082015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6000604082840312156200579d57600080fd5b620057a7620043c7565b8251620057b48162004c2e565b81526020928301519281019290925250919050565b600060208284031215620057dc57600080fd5b815162000f0381620046a2565b60208082526021908201527f4552524f523a42444c2d3030323a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b6000602082840312156200583d57600080fd5b81516001600160401b038116811462000f0357600080fd5b60208082526017908201527f4552524f523a4143532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b60208152600062000f03602083018462004956565b805162001cfe81620045ee565b600060208284031215620058c157600080fd5b815162000f0381620045ee565b6020808252601f908201527f4552524f523a4143532d3030323a524f4c455f4e4f545f4558495354494e4700604082015260600190565b6001600160c01b03199390931683526001600160a01b039190911660208301521515604082015260600190565b6000602082840312156200594557600080fd5b81516001600160401b03808211156200595d57600080fd5b908301906101c082860312156200597357600080fd5b6200597d62004418565b620059888362005543565b8152620059986020840162005543565b6020820152620059ab60408401620058a1565b6040820152620059be6060840162005570565b6060820152620059d160808401620058a1565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120808401518381111562005a1557600080fd5b62005a23888287016200563a565b828401525050610140808401518381111562005a3e57600080fd5b62005a4c888287016200563a565b828401525050610160915062005a6482840162005686565b82820152610180915062005a7a82840162005686565b828201526101a0915062005a9082840162005686565b91810191909152949350505050565b60006040828403121562005ab257600080fd5b62000f03838362005607565b6000806040838503121562005ad257600080fd5b505080516020909101519092909150565b60006101e0828403121562005af757600080fd5b62005b01620043f2565b62005b0c8362005543565b815262005b1c6020840162005543565b602082015262005b2f6040840162005570565b604082015262005b43846060850162005607565b606082015262005b578460a0850162005607565b608082015262005b6b8460e0850162005607565b60a082015262005b8084610120850162005607565b60c082015262005b9584610160850162005607565b60e082015262005baa846101a0850162005607565b6101008201529392505050565b82815260406020820152600062004d0d604083018462004956565b83815260ff8316602082015260606040820152600062004a27606083018462004956565b60006020828403121562005c0957600080fd5b81516001600160401b0381111562005c2057600080fd5b62004d0d848285016200563a565b6001600160401b0360c01b8316815260406020820152600062004d0d604083018462004956565b601f82111562005c9f57600081815260208120601f850160051c8101602086101562005c7e5750805b601f850160051c820191505b818110156200225b5782815560010162005c8a565b505050565b81516001600160401b0381111562005cc05762005cc0620043b1565b62005cd88162005cd18454620054e7565b8462005c55565b602080601f83116001811462005d10576000841562005cf75750858301515b600019600386901b1c1916600185901b1785556200225b565b600085815260208120601f198616915b8281101562005d415788860151825594840194600190910190840162005d20565b508582101562005d605787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8181038181111562000e7b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b506040516102aa3803806102aa83398101604081905261002f9161005b565b6001600160a01b03166c01000000000000000000000000026001600160601b03909116176000556100ad565b6000806040838503121561006e57600080fd5b82516001600160601b038116811461008557600080fd5b60208401519092506001600160a01b03811681146100a257600080fd5b809150509250929050565b6101ee806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c806251884a1461004557806321df0da71461006a578063beabacc814610095575b600080fd5b6000546040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b600054600160601b90046001600160a01b03166040516001600160a01b039091168152602001610061565b6100a86100a3366004610153565b6100aa565b005b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052600160601b909204909116906323b872dd906064016020604051808303816000875af115801561010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610131919061018f565b50505050565b80356001600160a01b038116811461014e57600080fd5b919050565b60008060006060848603121561016857600080fd5b61017184610137565b925061017f60208501610137565b9150604084013590509250925092565b6000602082840312156101a157600080fd5b815180151581146101b157600080fd5b939250505056fea2646970667358221220455e331420069b52ddb557c4094a8236a9cb76b6fb2388562bb6d2f594dbd6b064736f6c63430008140033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a264697066735822122093bb9b67a08862f3ed5c9a7035b32c346db4e7fbd4ef45434855ef9d289bc78864736f6c63430008140033",
3096
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000040565b62000026620001f7565b6200003062000331565b6200003a6200059e565b62000717565b60dc600090815260026020527f4bee8dc518469fb8c73831886b94afa96b3ef3e3ee55b9076720259192220ef0805460ff191660641790556001906003906200008760dc90565b60ff1660ff1681526020019081526020016000206000620000ad620006e560201b60201c565b60ff1660ff1681526020019081526020016000206000620000d3620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200010760dc90565b60ff1660ff16815260200190815260200160002060006200012d620006ef60201b60201c565b60ff1660ff168152602001908152602001600020600062000153620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200018760dc90565b60ff1660ff1681526020019081526020016000206000620001ad620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f460201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f7673bcbb3401a7cbae68f81d40eea2cf35afdaf7ecd016ebf3f02857fcc1260a8054606460ff1991821681179092557fa1c69de77e78d12e062170d002ba111ba52c8f452f3b0ca326991b7298fd7aaf8054909116600190811790915560009182526003602052907f6b16ef514f22b74729cbea5cc7babfecbdc2309e530ca716643d11fe929eed2e906200028b606e90565b60ff1660ff1681526020019081526020016000206000620002b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e5606490565b60ff1660ff16815260200190815260200160002060006200030b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f960201b60201c565b60d3600090815260026020527feb6856e0ae0d71a8a9e0bc42aca98fe96c3be13699c5c2d551c94a190e39043d805460ff1916600a1790556001906003906200037860d390565b60ff1660ff16815260200190815260200160002060006200039e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620003c46200070360201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620003f860d390565b60ff1660ff16815260200190815260200160002060006200041e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004446200070860201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200047860d390565b60ff1660ff16815260200190815260200160002060006200049e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004c46200070d60201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620004f860d390565b60ff1660ff16815260200190815260200160002060006200051e6200070d60201b60201c565b60ff1660ff168152602001908152602001600020600062000544620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200057860d390565b60ff1660ff1681526020019081526020016000206000620001ad620006e560201b60201c565b60c8600090815260026020527fec56eb74d500f9b1bf8f0c5cc42ff5ed51e8d9e3a2ebb6e83a26383f297e0f1e805460ff19166064179055600190600390620005e560c890565b60ff1660ff16815260200190815260200160002060006200060b620006e560201b60201c565b60ff1660ff168152602001908152602001600020600062000631620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200066560c890565b60ff1660ff16815260200190815260200160002060006200068b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620006b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e560c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b60006028620006ea565b6151fd80620007276000396000f3fe608060405234801561001057600080fd5b50600436106104a15760003560e01c8063675393bf1161026d578063b405b76f11610151578063dee32623116100ce578063f651dcac11610092578063f651dcac14610b3d578063f7bc431c14610b50578063f7c34ee014610b63578063fa145b6d14610b76578063fe1f18d614610b89578063fed3d63f14610b9c57600080fd5b8063dee3262314610ad1578063e1033e7d14610ae4578063e9e96c7014610aec578063f21de1e8146107f1578063f48016ce14610b2a57600080fd5b8063ca600b1c11610115578063ca600b1c14610a88578063ccdcd37f14610a90578063cde749f414610aa3578063cf947d2014610aab578063d2f21a2914610abe57600080fd5b8063b405b76f14610a47578063b6d7cd6214610a5a578063bf1db3f914610a6d578063bf7e214f14610a80578063c29948fc146105fe57600080fd5b8063976b0a77116101ea578063a8989675116101ae578063a8989675146109e6578063a9cea142146109f9578063ada9652e14610a0c578063afa5e13014610798578063afcc743914610a21578063b3260e9314610a3457600080fd5b8063976b0a77146108fc5780639df0280b146105a8578063a13df2ab1461090f578063a5961b4c14610922578063a76ee018146109d357600080fd5b80637cef4842116102315780637cef48421461088d578063893d20e8146108a05780638eaa6ac0146108a85780638fb36037146108c857806391ff6eaa146108e957600080fd5b8063675393bf146108445780636b9bf08b1461085757806375b238fc1461085f5780637a9e5e4b146108675780637b8c388f1461087a57600080fd5b806336fc697e11610394578063468a1867116103115780635772b101116102d55780635772b101146107de5780635ab1bd53146107f15780635d4345cc146105a85780635dfa73db1461080257806361f5f4201461080b578063644c45e01461081c57600080fd5b8063468a18671461077257806351cf2fd0146107855780635378cd3c1461079857806354d747a8146107ab57806354f6127f146107be57600080fd5b80633e35aba8116103585780633e35aba81461071e57806340529b0f14610731578063422c9d00146107445780634288121d14610757578063447fc48f1461075f57600080fd5b806336fc697e146106ad57806337f135d7146106b557806338a699a4146106d25780633c0d6a41146106e55780633ca7c02a146106f857600080fd5b806312aa0b2a11610422578063214cdb80116103e6578063214cdb80146106595780632781d4431461066c57806327953f481461067457806327bb7a33146106875780632f61088a1461069a57600080fd5b806312aa0b2a146105e3578063138461e0146105f65780631518afb9146105fe5780631b38d5f4146106115780631eff4b221461063257600080fd5b80630f03144a116104695780630f03144a146105825780630f526f7d146105955780630fad0eb1146105a85780630fec111c146105bb5780631204b553146105d057600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d57806309fb1d08146105475780630d3581811461055c575b600080fd5b6104d36104b4366004613365565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461338f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b61055a61055536600461360d565b610ba4565b005b61053561056a366004613659565b60ff9081166000908152600260205260409020541690565b61055a6105903660046137de565b610bea565b61055a6105a336600461382d565b610c28565b61055a6105b636600461382d565b610c45565b6105c3610c5a565b6040516104df91906138b6565b61055a6105de366004613941565b610e09565b61055a6105f1366004613999565b610e2f565b61055a610e57565b61055a61060c366004613b4e565b61105e565b61062461061f366004613b95565b611084565b6040519081526020016104df565b6106247f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b61055a610667366004613365565b611123565b610624600381565b61055a610682366004613ca2565b611150565b61055a610695366004613cde565b61116e565b61055a6106a8366004613dd0565b6111fa565b61055a611295565b6106bd600081565b60405163ffffffff90911681526020016104df565b6104d36106e036600461338f565b6112db565b61055a6106f3366004613e8c565b61136a565b6107066001600160401b0381565b6040516001600160401b0390911681526020016104df565b61062461072c366004613b95565b611390565b61055a61073f36600461382d565b6113bd565b61055a610752366004613eed565b6113d2565b6104f561150f565b61055a61076d366004613f0a565b6115a2565b610624610780366004613b95565b6115ce565b61055a61079336600461400d565b6115fb565b61055a6107a6366004614054565b611621565b61055a6107b9366004614135565b611634565b6107d16107cc36600461338f565b611652565b6040516104df9190614171565b61055a6107ec3660046141c7565b6116f7565b6001546001600160a01b03166104f5565b61070661271081565b6007546001600160a01b03166104f5565b600080516020615188833981519152546040516001600160601b0390911681526020016104df565b61055a610852366004613eed565b61171d565b6104f5611829565b610706600081565b61055a610875366004613eed565b611852565b610624610888366004613b95565b6118d5565b61055a61089b36600461421f565b611902565b6104f561198c565b6108bb6108b636600461338f565b611ac3565b6040516104df9190614287565b6108d0611c04565b6040516001600160e01b031990911681526020016104df565b61055a6108f736600461439f565b611c3c565b61055a61090a3660046143cd565b611c64565b61062461091d366004613b95565b611da4565b6109c661093036600461338f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df919061441e565b61055a6109e136600461442c565b611dd1565b61055a6109f4366004614473565b611e6c565b61055a610a073660046144b3565b611f5d565b61062460008051602061518883398151915281565b61055a610a2f3660046144f4565b611f85565b61055a610a42366004614539565b611fab565b61055a610a55366004614577565b611fc9565b61055a610a683660046145bc565b611fef565b6104d3610a7b366004613659565b612004565b6104f5612051565b6104f561206d565b61055a610a9e366004614648565b612096565b6105356120be565b61055a610ab9366004614687565b612135565b61055a610acc36600461382d565b612153565b61055a610adf36600461382d565b61216a565b6104f5612181565b6104d3610afa366004614473565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b610624610b383660046146d5565b6121aa565b61055a610b4b366004614703565b612235565b61055a610b5e366004613eed565b61225d565b61055a610b71366004614730565b61234a565b61055a610b8436600461475e565b6123c1565b61055a610b9736600461382d565b6123e7565b6104f56123fc565b610bb1335b600036612425565b610be5610bbf84608c61252b565b83604051602001610bd091906147b5565b60405160208183030381529060405283612577565b505050565b610bf333610ba9565b610c24610bff83611da4565b82604051602001610c1091906148ae565b604051602081830303815290604052612582565b5050565b610c3133610ba9565b610c24610c3f83608c61252b565b8261258c565b610c4e33610ba9565b610c24610c3f836115ce565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610d059061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d319061496a565b8015610d7e5780601f10610d5357610100808354040283529160200191610d7e565b820191906000526020600020905b815481529060010190602001808311610d6157829003601f168201915b50505050508152505090506040518060e00160405280610d9c600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610ded61198c565b6001600160a01b03168152602001826060015181525091505090565b610e1233610ba9565b610be5610e1e84611da4565b83604051602001610bd091906148ae565b610e3833610ba9565b610c24610e4683608c61252b565b82604051602001610c1091906147b5565b600060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea91906149a4565b15610f1b5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610f2e6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a91906149a4565b610fc25760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610f12565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a91906149c1565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61106733610ba9565b610be5611073846115ce565b83604051602001610bd091906149de565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d9190614b2c565b92915050565b61112b612596565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61115933610ba9565b610c248282604051602001610c109190614b45565b611176612596565b611180828761234a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111f08382614c3b565b5050505050505050565b61120333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112849190614b2c565b82604051602001610c109190614cfa565b61129d612596565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906149a4565b61137333610ba9565b610be561137f846115ce565b82604051602001610c109190614d28565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660786110ad565b6113c633610ba9565b610c24610c3f836118d5565b6113db33610ba9565b6007546001600160a01b03161561142b5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610f12565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614d79565b6001600160a01b0316146114ed5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610f12565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006115236001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190614d79565b905090565b6115ab33610ba9565b6115c86115b7856115ce565b83604051602001610bd09190614d28565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d36110ad565b61160433610ba9565b610be5611610846118d5565b83604051602001610bd09190614d96565b61162a33610ba9565b610c24828261258c565b61163d33610ba9565b610c248282604051602001610c109190614dd3565b60008181526004602052604090206001018054606091906116729061496a565b80601f016020809104026020016040519081016040528092919081815260200182805461169e9061496a565b80156116eb5780601f106116c0576101008083540402835291602001916116eb565b820191906000526020600020905b8154815290600101906020018083116116ce57829003601f168201915b50505050509050919050565b61170033610ba9565b6115c861170c856115ce565b83604051602001610bd09190614e6e565b611725612596565b806001600160a01b03163b60000361175b5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156117d5575060408051601f3d908101601f191682019092526117d2918101906149a4565b60015b6117fd5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b80610c245760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610f12565b50565b600061183d6001546001600160a01b031690565b6001600160a01b031663d39e6043608c611534565b3361185b612051565b6001600160a01b0316816001600160a01b0316146118965760405162d1953b60e31b81526001600160a01b0382166004820152602401610f12565b816001600160a01b03163b6000036118cc576040516361798f2f60e11b81526001600160a01b0383166004820152602401610f12565b610c24826125e1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a6110ad565b61190b33610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611968573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190614b2c565b60008060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906149a4565b15611aad576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190614d79565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b7b9061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba79061496a565b8015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050815250509050919050565b6000805160206151a8833981519152805460009190600160a01b900460ff16611c2e576000611aa7565b638fb3603760e01b91505090565b611c4533610ba9565b610c24611c5383606e61252b565b82604051602001610c109190614e9e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ca95750825b90506000826001600160401b03166001148015611cc55750303b155b905081158015611cd3575080155b15611cf15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d1b57845460ff60401b1916600160401b1785555b611d2489612642565b611d438888604660008a6040518060200160405280600081525061116e565b611d5363119e767960e11b611123565b8315611d9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6110ad565b611dda33610ba9565b6040516355ee627560e01b81526001600160c01b031984166004820152610be59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b9190614b2c565b83604051602001610bd09190614cfa565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef591906149a4565b15611eff57505050565b60ff808416600090815260036020908152604080832086851684528252808320858516845290915290205416610be557604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610f12565b611f6633610ba9565b610be5611f7484606e61252b565b83604051602001610bd09190614e9e565b611f8e33610ba9565b610c24611f9a836115ce565b82604051602001610c1091906149de565b611fb433610ba9565b610be58383604051602001610bd09190614b45565b611fd233610ba9565b610c24611fde836118d5565b82604051602001610c109190614d96565b611ff833610ba9565b610be5610c3f846115ce565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401611329565b6000805160206151a8833981519152546001600160a01b031690565b60006120816001546001600160a01b031690565b6001600160a01b031663d39e60436078611534565b61209f33610ba9565b610be56120ad84607861252b565b83604051602001610bd09190614fc8565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190615018565b61213e33610ba9565b610be58383604051602001610bd09190614dd3565b61215c33610ba9565b610c24610c3f83607861252b565b61217333610ba9565b610c24610c3f83606e61252b565b60006121956001546001600160a01b031690565b6001600160a01b031663d39e604360d3611534565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af415801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e9190614b2c565b9392505050565b61223e33610ba9565b610c2461224c83607861252b565b82604051602001610c109190614fc8565b61226633610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190614d79565b6001600160a01b0316146123285760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610f12565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b612352612596565b61235b8161171d565b612363611295565b6001600160a01b03821661238a5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061518883398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123ca33610ba9565b610be56123d6846115ce565b82604051602001610c109190614e6e565b6123f033610ba9565b610c24610c3f83611da4565b60006124106001546001600160a01b031690565b6001600160a01b031663d39e604360dc611534565b6000805160206151a8833981519152600080612460612442612051565b8730612452600460008a8c615035565b61245b9161505f565b612653565b91509150816125235763ffffffff81161561250057825460ff60a01b1916600160a01b17835561248e612051565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124bd9392919061508f565b600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125239050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610f12565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121ed565b610be583838361275f565b610c248282612c07565b610c248282613020565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125df57604051631afcd79f60e31b815260040160405180910390fd5b565b6000805160206151a883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61264a612596565b61182681613354565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126c291906150cf565b600060405180830381855afa9150503d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50915091508115612754576040815110612734578080602001905181019061272a91906150eb565b9094509250612754565b6020815110612754578080602001905181019061275191906149a4565b93505b505094509492505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d591906149a4565b6128215760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610f12565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561288d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b191906149a4565b6128fd5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610f12565b60008581526004602052604090206001016129188582614c3b565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661295d4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156129ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a139190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a87919061511a565b8786863287604051612a9f9796959493929190615137565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb1919061511a565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0015b60405180910390a150505050505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7e9190615018565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf791906149a4565b612d435760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610f12565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd491906149a4565b612e205760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610f12565b33436000612e2d85612004565b612e38576064612e4e565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612ed88782614c3b565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6f9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe3919061511a565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a001612bf6565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309691906149a4565b6130e25760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610f12565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906149a4565b6131be5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610f12565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166132024390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b89190615018565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332c919061511a565b87868632876040516133449796959493929190615137565b60405180910390a1505050505050565b61335c612596565b611826816125e1565b60006020828403121561337757600080fd5b81356001600160e01b03198116811461222e57600080fd5b6000602082840312156133a157600080fd5b5035919050565b6001600160601b038116811461182657600080fd5b80356133c8816133a8565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613405576134056133cd565b60405290565b60405161018081016001600160401b0381118282101715613405576134056133cd565b60405161012081016001600160401b0381118282101715613405576134056133cd565b60405161020081016001600160401b0381118282101715613405576134056133cd565b604051608081016001600160401b0381118282101715613405576134056133cd565b60405160e081016001600160401b0381118282101715613405576134056133cd565b6001600160a01b038116811461182657600080fd5b80356133c8816134b8565b801515811461182657600080fd5b80356133c8816134d8565b60006040828403121561350357600080fd5b61350b6133e3565b9050813581526020820135602082015292915050565b60006101e0828403121561353457600080fd5b61353c61340b565b9050613547826133bd565b8152613555602083016134cd565b602082015260408201356040820152613570606083016134e6565b6060820152613581608083016134e6565b608082015261359260a083016134e6565b60a082015260c082013560c082015260e082013560e08201526101006135ba848285016134f1565b908201526101406135cd848483016134f1565b6101208301526135e18461018085016134f1565b908201526135f26101c083016134cd565b61016082015292915050565b60ff8116811461182657600080fd5b6000806000610220848603121561362357600080fd5b833561362e816133a8565b925061363d8560208601613521565b915061020084013561364e816135fe565b809150509250925092565b60006020828403121561366b57600080fd5b813561222e816135fe565b600082601f83011261368757600080fd5b81356001600160401b03808211156136a1576136a16133cd565b604051601f8301601f19908116603f011681019082821181831017156136c9576136c96133cd565b816040528381528660208588010111156136e257600080fd5b836020870160208301376000602085830101528094505050505092915050565b64ffffffffff8116811461182657600080fd5b80356133c881613702565b6000610140828403121561373357600080fd5b61373b61342e565b9050613746826133bd565b815261375583602084016134f1565b602082015260608201356001600160401b0381111561377357600080fd5b61377f84828501613676565b6040830152506080820135606082015260a0820135608082015260c082013560a08201526137af60e08301613715565b60c08201526101006137c2818401613715565b60e08301526137d46101208401613715565b9082015292915050565b600080604083850312156137f157600080fd5b82356137fc816133a8565b915060208301356001600160401b0381111561381757600080fd5b61382385828601613720565b9150509250929050565b6000806040838503121561384057600080fd5b823561384b816133a8565b9150602083013561385b816135fe565b809150509250929050565b60005b83811015613881578181015183820152602001613869565b50506000910152565b600081518084526138a2816020860160208601613866565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161391f60c08401826001600160a01b03169052565b5060c083015160e08084015261393961010084018261388a565b949350505050565b60008060006060848603121561395657600080fd5b8335613961816133a8565b925060208401356001600160401b0381111561397c57600080fd5b61398886828701613720565b925050604084013561364e816135fe565b60008061020083850312156139ad57600080fd5b82356139b8816133a8565b91506139c78460208501613521565b90509250929050565b6001600160c01b03198116811461182657600080fd5b80356133c8816139d0565b61ffff8116811461182657600080fd5b80356133c8816139f1565b60006102008284031215613a1f57600080fd5b613a27613451565b9050613a32826133bd565b8152613a40602083016133bd565b6020820152613a51604083016139e6565b6040820152613a62606083016139e6565b60608201526080820135608082015260a082013560a082015260c082013560c0820152613a9160e08301613715565b60e0820152610100808301356001600160401b0380821115613ab257600080fd5b613abe86838701613676565b83850152610120925082850135915080821115613ada57600080fd5b50613ae785828601613676565b828401525050610140613afb818401613a01565b90820152610160613b0d838201613a01565b9082015261018082810135908201526101a0613b2a818401613715565b908201526101c0613b3c838201613715565b908201526101e06137d4838201613715565b600080600060608486031215613b6357600080fd5b8335613b6e816133a8565b925060208401356001600160401b03811115613b8957600080fd5b61398886828701613a0c565b600060208284031215613ba757600080fd5b813561222e816133a8565b63ffffffff8116811461182657600080fd5b80356133c881613bb2565b60006101208284031215613be257600080fd5b613bea61342e565b905081356001600160401b0380821115613c0357600080fd5b613c0f85838601613676565b8352602084013560208401526040840135604084015260608401356060840152613c3b60808501613bc4565b6080840152613c4c60a08501613bc4565b60a0840152613c5d60c085016134e6565b60c0840152613c6e60e085016134e6565b60e084015261010091508184013581811115613c8957600080fd5b613c9586828701613676565b8385015250505092915050565b60008060408385031215613cb557600080fd5b8235915060208301356001600160401b03811115613cd257600080fd5b61382385828601613bcf565b60008060008060008060c08789031215613cf757600080fd5b8635613d02816134b8565b95506020870135613d12816133a8565b94506040870135613d22816135fe565b93506060870135613d32816134d8565b92506080870135613d42816134b8565b915060a08701356001600160401b03811115613d5d57600080fd5b613d6989828a01613676565b9150509295509295509295565b600060408284031215613d8857600080fd5b613d906133e3565b90508135613d9d816133a8565b815260208201356001600160401b03811115613db857600080fd5b613dc484828501613676565b60208301525092915050565b60008060408385031215613de357600080fd5b8235613dee816139d0565b915060208301356001600160401b03811115613e0957600080fd5b61382385828601613d76565b600060808284031215613e2757600080fd5b613e2f613474565b90508135613e3c816139f1565b81526020828101359082015260408201356001600160401b03811115613e6157600080fd5b613e6d84828501613676565b6040830152506060820135613e8181613702565b606082015292915050565b600080600060608486031215613ea157600080fd5b8335613eac816133a8565b92506020840135613ebc81613bb2565b915060408401356001600160401b03811115613ed757600080fd5b613ee386828701613e15565b9150509250925092565b600060208284031215613eff57600080fd5b813561222e816134b8565b60008060008060808587031215613f2057600080fd5b8435613f2b816133a8565b93506020850135613f3b81613bb2565b925060408501356001600160401b03811115613f5657600080fd5b613f6287828801613e15565b9250506060850135613f73816135fe565b939692955090935050565b600060608284031215613f9057600080fd5b604051606081016001600160401b038282108183111715613fb357613fb36133cd565b8160405282935084359150613fc7826139d0565b908252602084013590613fd9826134d8565b8160208401526040850135915080821115613ff357600080fd5b5061400085828601613676565b6040830152505092915050565b60008060006060848603121561402257600080fd5b833561402d816133a8565b925060208401356001600160401b0381111561404857600080fd5b61398886828701613f7e565b6000806040838503121561406757600080fd5b82359150602083013561385b816135fe565b600060e0828403121561408b57600080fd5b614093613496565b905061409e826133bd565b815260208201356001600160401b03808211156140ba57600080fd5b6140c685838601613676565b6020840152604084013560408401526140e160608501613bc4565b60608401526140f260808501613bc4565b608084015261410360a08501613715565b60a084015260c084013591508082111561411c57600080fd5b5061412984828501613676565b60c08301525092915050565b6000806040838503121561414857600080fd5b8235915060208301356001600160401b0381111561416557600080fd5b61382385828601614079565b60208152600061222e602083018461388a565b60006080828403121561419657600080fd5b61419e613474565b9050813581526020820135602082015260408201356001600160401b03811115613e6157600080fd5b600080600080608085870312156141dd57600080fd5b84356141e8816133a8565b935060208501356141f8816139f1565b925060408501356001600160401b0381111561421357600080fd5b613f6287828801614184565b6000806040838503121561423257600080fd5b823561384b816139d0565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b6020815261429960208201835161423d565b6000602083015160c08084015261393960e084018261388a565b600061024082840312156142c657600080fd5b6142ce61340b565b90506142d9826134cd565b81526142e7602083016134cd565b60208201526142f8604083016133bd565b6040820152614309606083016133bd565b606082015261431b83608084016134f1565b608082015261432d8360c084016134f1565b60a0820152610100614341848285016134f1565b60c0830152610140614355858286016134f1565b60e08401526143688561018086016134f1565b8284015261437a856101c086016134f1565b61012084015261438d61020085016134e6565b90830152506135f261022083016134cd565b60008061026083850312156143b357600080fd5b82356143be816133a8565b91506139c784602085016142b3565b600080600080608085870312156143e357600080fd5b84356143ee816134b8565b935060208501356143fe816134b8565b9250604085013561440e816133a8565b91506060850135613f73816134b8565b60a0810161111d828461423d565b60008060006060848603121561444157600080fd5b833561444c816139d0565b925060208401356001600160401b0381111561446757600080fd5b61398886828701613d76565b60008060006060848603121561448857600080fd5b8335614493816135fe565b925060208401356144a3816135fe565b9150604084013561364e816135fe565b600080600061028084860312156144c957600080fd5b83356144d4816133a8565b92506144e385602086016142b3565b915061026084013561364e816135fe565b6000806040838503121561450757600080fd5b8235614512816133a8565b915060208301356001600160401b0381111561452d57600080fd5b61382385828601613a0c565b60008060006060848603121561454e57600080fd5b8335925060208401356001600160401b0381111561456b57600080fd5b61398886828701613bcf565b6000806040838503121561458a57600080fd5b8235614595816133a8565b915060208301356001600160401b038111156145b057600080fd5b61382385828601613f7e565b6000806000606084860312156145d157600080fd5b83356145dc816133a8565b925060208401356144a3816139f1565b600060a082840312156145fe57600080fd5b614606613474565b90508135614613816133a8565b81526020820135614623816134b8565b602082015261463583604084016134f1565b60408201526080820135613e81816134b8565b600080600060e0848603121561465d57600080fd5b8335614668816133a8565b925061467785602086016145ec565b915060c084013561364e816135fe565b60008060006060848603121561469c57600080fd5b8335925060208401356001600160401b038111156146b957600080fd5b61398886828701614079565b60ff198116811461182657600080fd5b600080604083850312156146e857600080fd5b82356146f3816135fe565b9150602083013561385b816146c5565b60008060c0838503121561471657600080fd5b8235614721816133a8565b91506139c784602085016145ec565b6000806040838503121561474357600080fd5b823561474e816134b8565b9150602083013561385b816134b8565b60008060006060848603121561477357600080fd5b833561477e816133a8565b9250602084013561478e816139f1565b915060408401356001600160401b038111156147a957600080fd5b613ee386828701614184565b81516001600160601b031681526101e0810160208301516147e160208401826001600160a01b03169052565b506040830151604083015260608301516147ff606084018215159052565b506080830151614813608084018215159052565b5060a083015161482760a084018215159052565b5060c083015160c083015260e083015160e0830152610100808401516148598285018280518252602090810151910152565b505061012083015161014061487a8185018380518252602090810151910152565b8401518051610180850152602001516101a0840152506101608301516001600160a01b0381166101c08401525b5092915050565b602081526148c86020820183516001600160601b03169052565b600060208301516148e6604084018280518252602090810151910152565b50604083015161014080608085015261490361016085018361388a565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015161010061493d8187018364ffffffffff169052565b60e087015164ffffffffff811661012088015291505b9095015164ffffffffff1693019290925250919050565b600181811c9082168061497e57607f821691505b60208210810361499e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156149b657600080fd5b815161222e816134d8565b6000602082840312156149d357600080fd5b815161222e816133a8565b602081526149f86020820183516001600160601b03169052565b60006020830151614a1460408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614a798185018364ffffffffff169052565b808501519150506102006101208181860152614a9961022086018461388a565b9250808601519050610140601f198685030181870152614ab9848361388a565b935080870151915050610160614ad48187018361ffff169052565b8601519050610180614aeb8682018361ffff169052565b8601516101a08681019190915286015190506101c0614b128187018364ffffffffff169052565b86015190506101e06149538682018364ffffffffff169052565b600060208284031215614b3e57600080fd5b5051919050565b6020815260008251610120806020850152614b6461014085018361388a565b91506020850151604085015260408501516060850152606085015160808501526080850151614b9b60a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e0850151610100614bd18187018315159052565b860151858403601f1901838701529050614beb838261388a565b9695505050505050565b601f821115610be557600081815260208120601f850160051c81016020861015614c1c5750805b601f850160051c820191505b8181101561252357828155600101614c28565b81516001600160401b03811115614c5457614c546133cd565b614c6881614c62845461496a565b84614bf5565b602080601f831160018114614c9d5760008415614c855750858301515b600019600386901b1c1916600185901b178555612523565b600085815260208120601f198616915b82811015614ccc57888601518255948401946001909101908401614cad565b5085821015614cea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b03825116602082015260006020830151604080840152613939606084018261388a565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215614d8b57600080fd5b815161222e816134b8565b602081526001600160401b0360c01b825116602082015260208201511515604082015260006040830151606080840152613939608084018261388a565b602081526001600160601b0382511660208201526000602083015160e06040840152614e0361010084018261388a565b90506040840151606084015263ffffffff60608501511660808401526080840151614e3660a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614e65828261388a565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b81516001600160a01b0316815261024081016020830151614eca60208401826001600160a01b03169052565b506040830151614ee560408401826001600160601b03169052565b506060830151614f0060608401826001600160601b03169052565b506080830151614f1d608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614f538185018380518252602090810151910152565b60e08501519150610140614f738186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b0381166102208401526148a7565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b60006020828403121561502a57600080fd5b815161222e816135fe565b6000808585111561504557600080fd5b8386111561505257600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150875780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082516150e1818460208701613866565b9190910192915050565b600080604083850312156150fe57600080fd5b8251615109816134d8565b602084015190925061385b81613bb2565b60006020828403121561512c57600080fd5b815161222e816146c5565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212202fb04525236ebfa8db99a62d333f0350b5e3d8c8d5dbbc227704ece249b65e8564736f6c63430008140033",
3097
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104a15760003560e01c8063675393bf1161026d578063b405b76f11610151578063dee32623116100ce578063f651dcac11610092578063f651dcac14610b3d578063f7bc431c14610b50578063f7c34ee014610b63578063fa145b6d14610b76578063fe1f18d614610b89578063fed3d63f14610b9c57600080fd5b8063dee3262314610ad1578063e1033e7d14610ae4578063e9e96c7014610aec578063f21de1e8146107f1578063f48016ce14610b2a57600080fd5b8063ca600b1c11610115578063ca600b1c14610a88578063ccdcd37f14610a90578063cde749f414610aa3578063cf947d2014610aab578063d2f21a2914610abe57600080fd5b8063b405b76f14610a47578063b6d7cd6214610a5a578063bf1db3f914610a6d578063bf7e214f14610a80578063c29948fc146105fe57600080fd5b8063976b0a77116101ea578063a8989675116101ae578063a8989675146109e6578063a9cea142146109f9578063ada9652e14610a0c578063afa5e13014610798578063afcc743914610a21578063b3260e9314610a3457600080fd5b8063976b0a77146108fc5780639df0280b146105a8578063a13df2ab1461090f578063a5961b4c14610922578063a76ee018146109d357600080fd5b80637cef4842116102315780637cef48421461088d578063893d20e8146108a05780638eaa6ac0146108a85780638fb36037146108c857806391ff6eaa146108e957600080fd5b8063675393bf146108445780636b9bf08b1461085757806375b238fc1461085f5780637a9e5e4b146108675780637b8c388f1461087a57600080fd5b806336fc697e11610394578063468a1867116103115780635772b101116102d55780635772b101146107de5780635ab1bd53146107f15780635d4345cc146105a85780635dfa73db1461080257806361f5f4201461080b578063644c45e01461081c57600080fd5b8063468a18671461077257806351cf2fd0146107855780635378cd3c1461079857806354d747a8146107ab57806354f6127f146107be57600080fd5b80633e35aba8116103585780633e35aba81461071e57806340529b0f14610731578063422c9d00146107445780634288121d14610757578063447fc48f1461075f57600080fd5b806336fc697e146106ad57806337f135d7146106b557806338a699a4146106d25780633c0d6a41146106e55780633ca7c02a146106f857600080fd5b806312aa0b2a11610422578063214cdb80116103e6578063214cdb80146106595780632781d4431461066c57806327953f481461067457806327bb7a33146106875780632f61088a1461069a57600080fd5b806312aa0b2a146105e3578063138461e0146105f65780631518afb9146105fe5780631b38d5f4146106115780631eff4b221461063257600080fd5b80630f03144a116104695780630f03144a146105825780630f526f7d146105955780630fad0eb1146105a85780630fec111c146105bb5780631204b553146105d057600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d57806309fb1d08146105475780630d3581811461055c575b600080fd5b6104d36104b4366004613365565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461338f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b61055a61055536600461360d565b610ba4565b005b61053561056a366004613659565b60ff9081166000908152600260205260409020541690565b61055a6105903660046137de565b610bea565b61055a6105a336600461382d565b610c28565b61055a6105b636600461382d565b610c45565b6105c3610c5a565b6040516104df91906138b6565b61055a6105de366004613941565b610e09565b61055a6105f1366004613999565b610e2f565b61055a610e57565b61055a61060c366004613b4e565b61105e565b61062461061f366004613b95565b611084565b6040519081526020016104df565b6106247f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b61055a610667366004613365565b611123565b610624600381565b61055a610682366004613ca2565b611150565b61055a610695366004613cde565b61116e565b61055a6106a8366004613dd0565b6111fa565b61055a611295565b6106bd600081565b60405163ffffffff90911681526020016104df565b6104d36106e036600461338f565b6112db565b61055a6106f3366004613e8c565b61136a565b6107066001600160401b0381565b6040516001600160401b0390911681526020016104df565b61062461072c366004613b95565b611390565b61055a61073f36600461382d565b6113bd565b61055a610752366004613eed565b6113d2565b6104f561150f565b61055a61076d366004613f0a565b6115a2565b610624610780366004613b95565b6115ce565b61055a61079336600461400d565b6115fb565b61055a6107a6366004614054565b611621565b61055a6107b9366004614135565b611634565b6107d16107cc36600461338f565b611652565b6040516104df9190614171565b61055a6107ec3660046141c7565b6116f7565b6001546001600160a01b03166104f5565b61070661271081565b6007546001600160a01b03166104f5565b600080516020615188833981519152546040516001600160601b0390911681526020016104df565b61055a610852366004613eed565b61171d565b6104f5611829565b610706600081565b61055a610875366004613eed565b611852565b610624610888366004613b95565b6118d5565b61055a61089b36600461421f565b611902565b6104f561198c565b6108bb6108b636600461338f565b611ac3565b6040516104df9190614287565b6108d0611c04565b6040516001600160e01b031990911681526020016104df565b61055a6108f736600461439f565b611c3c565b61055a61090a3660046143cd565b611c64565b61062461091d366004613b95565b611da4565b6109c661093036600461338f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df919061441e565b61055a6109e136600461442c565b611dd1565b61055a6109f4366004614473565b611e6c565b61055a610a073660046144b3565b611f5d565b61062460008051602061518883398151915281565b61055a610a2f3660046144f4565b611f85565b61055a610a42366004614539565b611fab565b61055a610a55366004614577565b611fc9565b61055a610a683660046145bc565b611fef565b6104d3610a7b366004613659565b612004565b6104f5612051565b6104f561206d565b61055a610a9e366004614648565b612096565b6105356120be565b61055a610ab9366004614687565b612135565b61055a610acc36600461382d565b612153565b61055a610adf36600461382d565b61216a565b6104f5612181565b6104d3610afa366004614473565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b610624610b383660046146d5565b6121aa565b61055a610b4b366004614703565b612235565b61055a610b5e366004613eed565b61225d565b61055a610b71366004614730565b61234a565b61055a610b8436600461475e565b6123c1565b61055a610b9736600461382d565b6123e7565b6104f56123fc565b610bb1335b600036612425565b610be5610bbf84608c61252b565b83604051602001610bd091906147b5565b60405160208183030381529060405283612577565b505050565b610bf333610ba9565b610c24610bff83611da4565b82604051602001610c1091906148ae565b604051602081830303815290604052612582565b5050565b610c3133610ba9565b610c24610c3f83608c61252b565b8261258c565b610c4e33610ba9565b610c24610c3f836115ce565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610d059061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d319061496a565b8015610d7e5780601f10610d5357610100808354040283529160200191610d7e565b820191906000526020600020905b815481529060010190602001808311610d6157829003601f168201915b50505050508152505090506040518060e00160405280610d9c600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610ded61198c565b6001600160a01b03168152602001826060015181525091505090565b610e1233610ba9565b610be5610e1e84611da4565b83604051602001610bd091906148ae565b610e3833610ba9565b610c24610e4683608c61252b565b82604051602001610c1091906147b5565b600060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea91906149a4565b15610f1b5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610f2e6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a91906149a4565b610fc25760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610f12565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a91906149c1565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61106733610ba9565b610be5611073846115ce565b83604051602001610bd091906149de565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d9190614b2c565b92915050565b61112b612596565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61115933610ba9565b610c248282604051602001610c109190614b45565b611176612596565b611180828761234a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111f08382614c3b565b5050505050505050565b61120333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112849190614b2c565b82604051602001610c109190614cfa565b61129d612596565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906149a4565b61137333610ba9565b610be561137f846115ce565b82604051602001610c109190614d28565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660786110ad565b6113c633610ba9565b610c24610c3f836118d5565b6113db33610ba9565b6007546001600160a01b03161561142b5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610f12565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614d79565b6001600160a01b0316146114ed5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610f12565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006115236001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190614d79565b905090565b6115ab33610ba9565b6115c86115b7856115ce565b83604051602001610bd09190614d28565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d36110ad565b61160433610ba9565b610be5611610846118d5565b83604051602001610bd09190614d96565b61162a33610ba9565b610c24828261258c565b61163d33610ba9565b610c248282604051602001610c109190614dd3565b60008181526004602052604090206001018054606091906116729061496a565b80601f016020809104026020016040519081016040528092919081815260200182805461169e9061496a565b80156116eb5780601f106116c0576101008083540402835291602001916116eb565b820191906000526020600020905b8154815290600101906020018083116116ce57829003601f168201915b50505050509050919050565b61170033610ba9565b6115c861170c856115ce565b83604051602001610bd09190614e6e565b611725612596565b806001600160a01b03163b60000361175b5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156117d5575060408051601f3d908101601f191682019092526117d2918101906149a4565b60015b6117fd5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b80610c245760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610f12565b50565b600061183d6001546001600160a01b031690565b6001600160a01b031663d39e6043608c611534565b3361185b612051565b6001600160a01b0316816001600160a01b0316146118965760405162d1953b60e31b81526001600160a01b0382166004820152602401610f12565b816001600160a01b03163b6000036118cc576040516361798f2f60e11b81526001600160a01b0383166004820152602401610f12565b610c24826125e1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a6110ad565b61190b33610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611968573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190614b2c565b60008060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906149a4565b15611aad576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190614d79565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b7b9061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba79061496a565b8015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050815250509050919050565b6000805160206151a8833981519152805460009190600160a01b900460ff16611c2e576000611aa7565b638fb3603760e01b91505090565b611c4533610ba9565b610c24611c5383606e61252b565b82604051602001610c109190614e9e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ca95750825b90506000826001600160401b03166001148015611cc55750303b155b905081158015611cd3575080155b15611cf15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d1b57845460ff60401b1916600160401b1785555b611d2489612642565b611d438888604660008a6040518060200160405280600081525061116e565b611d5363119e767960e11b611123565b8315611d9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6110ad565b611dda33610ba9565b6040516355ee627560e01b81526001600160c01b031984166004820152610be59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b9190614b2c565b83604051602001610bd09190614cfa565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef591906149a4565b15611eff57505050565b60ff808416600090815260036020908152604080832086851684528252808320858516845290915290205416610be557604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610f12565b611f6633610ba9565b610be5611f7484606e61252b565b83604051602001610bd09190614e9e565b611f8e33610ba9565b610c24611f9a836115ce565b82604051602001610c1091906149de565b611fb433610ba9565b610be58383604051602001610bd09190614b45565b611fd233610ba9565b610c24611fde836118d5565b82604051602001610c109190614d96565b611ff833610ba9565b610be5610c3f846115ce565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401611329565b6000805160206151a8833981519152546001600160a01b031690565b60006120816001546001600160a01b031690565b6001600160a01b031663d39e60436078611534565b61209f33610ba9565b610be56120ad84607861252b565b83604051602001610bd09190614fc8565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190615018565b61213e33610ba9565b610be58383604051602001610bd09190614dd3565b61215c33610ba9565b610c24610c3f83607861252b565b61217333610ba9565b610c24610c3f83606e61252b565b60006121956001546001600160a01b031690565b6001600160a01b031663d39e604360d3611534565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af415801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e9190614b2c565b9392505050565b61223e33610ba9565b610c2461224c83607861252b565b82604051602001610c109190614fc8565b61226633610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190614d79565b6001600160a01b0316146123285760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610f12565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b612352612596565b61235b8161171d565b612363611295565b6001600160a01b03821661238a5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061518883398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123ca33610ba9565b610be56123d6846115ce565b82604051602001610c109190614e6e565b6123f033610ba9565b610c24610c3f83611da4565b60006124106001546001600160a01b031690565b6001600160a01b031663d39e604360dc611534565b6000805160206151a8833981519152600080612460612442612051565b8730612452600460008a8c615035565b61245b9161505f565b612653565b91509150816125235763ffffffff81161561250057825460ff60a01b1916600160a01b17835561248e612051565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124bd9392919061508f565b600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125239050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610f12565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121ed565b610be583838361275f565b610c248282612c07565b610c248282613020565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125df57604051631afcd79f60e31b815260040160405180910390fd5b565b6000805160206151a883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61264a612596565b61182681613354565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126c291906150cf565b600060405180830381855afa9150503d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50915091508115612754576040815110612734578080602001905181019061272a91906150eb565b9094509250612754565b6020815110612754578080602001905181019061275191906149a4565b93505b505094509492505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d591906149a4565b6128215760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610f12565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561288d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b191906149a4565b6128fd5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610f12565b60008581526004602052604090206001016129188582614c3b565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661295d4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156129ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a139190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a87919061511a565b8786863287604051612a9f9796959493929190615137565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb1919061511a565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0015b60405180910390a150505050505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7e9190615018565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf791906149a4565b612d435760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610f12565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd491906149a4565b612e205760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610f12565b33436000612e2d85612004565b612e38576064612e4e565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612ed88782614c3b565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6f9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe3919061511a565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a001612bf6565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309691906149a4565b6130e25760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610f12565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906149a4565b6131be5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610f12565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166132024390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b89190615018565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332c919061511a565b87868632876040516133449796959493929190615137565b60405180910390a1505050505050565b61335c612596565b611826816125e1565b60006020828403121561337757600080fd5b81356001600160e01b03198116811461222e57600080fd5b6000602082840312156133a157600080fd5b5035919050565b6001600160601b038116811461182657600080fd5b80356133c8816133a8565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613405576134056133cd565b60405290565b60405161018081016001600160401b0381118282101715613405576134056133cd565b60405161012081016001600160401b0381118282101715613405576134056133cd565b60405161020081016001600160401b0381118282101715613405576134056133cd565b604051608081016001600160401b0381118282101715613405576134056133cd565b60405160e081016001600160401b0381118282101715613405576134056133cd565b6001600160a01b038116811461182657600080fd5b80356133c8816134b8565b801515811461182657600080fd5b80356133c8816134d8565b60006040828403121561350357600080fd5b61350b6133e3565b9050813581526020820135602082015292915050565b60006101e0828403121561353457600080fd5b61353c61340b565b9050613547826133bd565b8152613555602083016134cd565b602082015260408201356040820152613570606083016134e6565b6060820152613581608083016134e6565b608082015261359260a083016134e6565b60a082015260c082013560c082015260e082013560e08201526101006135ba848285016134f1565b908201526101406135cd848483016134f1565b6101208301526135e18461018085016134f1565b908201526135f26101c083016134cd565b61016082015292915050565b60ff8116811461182657600080fd5b6000806000610220848603121561362357600080fd5b833561362e816133a8565b925061363d8560208601613521565b915061020084013561364e816135fe565b809150509250925092565b60006020828403121561366b57600080fd5b813561222e816135fe565b600082601f83011261368757600080fd5b81356001600160401b03808211156136a1576136a16133cd565b604051601f8301601f19908116603f011681019082821181831017156136c9576136c96133cd565b816040528381528660208588010111156136e257600080fd5b836020870160208301376000602085830101528094505050505092915050565b64ffffffffff8116811461182657600080fd5b80356133c881613702565b6000610140828403121561373357600080fd5b61373b61342e565b9050613746826133bd565b815261375583602084016134f1565b602082015260608201356001600160401b0381111561377357600080fd5b61377f84828501613676565b6040830152506080820135606082015260a0820135608082015260c082013560a08201526137af60e08301613715565b60c08201526101006137c2818401613715565b60e08301526137d46101208401613715565b9082015292915050565b600080604083850312156137f157600080fd5b82356137fc816133a8565b915060208301356001600160401b0381111561381757600080fd5b61382385828601613720565b9150509250929050565b6000806040838503121561384057600080fd5b823561384b816133a8565b9150602083013561385b816135fe565b809150509250929050565b60005b83811015613881578181015183820152602001613869565b50506000910152565b600081518084526138a2816020860160208601613866565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161391f60c08401826001600160a01b03169052565b5060c083015160e08084015261393961010084018261388a565b949350505050565b60008060006060848603121561395657600080fd5b8335613961816133a8565b925060208401356001600160401b0381111561397c57600080fd5b61398886828701613720565b925050604084013561364e816135fe565b60008061020083850312156139ad57600080fd5b82356139b8816133a8565b91506139c78460208501613521565b90509250929050565b6001600160c01b03198116811461182657600080fd5b80356133c8816139d0565b61ffff8116811461182657600080fd5b80356133c8816139f1565b60006102008284031215613a1f57600080fd5b613a27613451565b9050613a32826133bd565b8152613a40602083016133bd565b6020820152613a51604083016139e6565b6040820152613a62606083016139e6565b60608201526080820135608082015260a082013560a082015260c082013560c0820152613a9160e08301613715565b60e0820152610100808301356001600160401b0380821115613ab257600080fd5b613abe86838701613676565b83850152610120925082850135915080821115613ada57600080fd5b50613ae785828601613676565b828401525050610140613afb818401613a01565b90820152610160613b0d838201613a01565b9082015261018082810135908201526101a0613b2a818401613715565b908201526101c0613b3c838201613715565b908201526101e06137d4838201613715565b600080600060608486031215613b6357600080fd5b8335613b6e816133a8565b925060208401356001600160401b03811115613b8957600080fd5b61398886828701613a0c565b600060208284031215613ba757600080fd5b813561222e816133a8565b63ffffffff8116811461182657600080fd5b80356133c881613bb2565b60006101208284031215613be257600080fd5b613bea61342e565b905081356001600160401b0380821115613c0357600080fd5b613c0f85838601613676565b8352602084013560208401526040840135604084015260608401356060840152613c3b60808501613bc4565b6080840152613c4c60a08501613bc4565b60a0840152613c5d60c085016134e6565b60c0840152613c6e60e085016134e6565b60e084015261010091508184013581811115613c8957600080fd5b613c9586828701613676565b8385015250505092915050565b60008060408385031215613cb557600080fd5b8235915060208301356001600160401b03811115613cd257600080fd5b61382385828601613bcf565b60008060008060008060c08789031215613cf757600080fd5b8635613d02816134b8565b95506020870135613d12816133a8565b94506040870135613d22816135fe565b93506060870135613d32816134d8565b92506080870135613d42816134b8565b915060a08701356001600160401b03811115613d5d57600080fd5b613d6989828a01613676565b9150509295509295509295565b600060408284031215613d8857600080fd5b613d906133e3565b90508135613d9d816133a8565b815260208201356001600160401b03811115613db857600080fd5b613dc484828501613676565b60208301525092915050565b60008060408385031215613de357600080fd5b8235613dee816139d0565b915060208301356001600160401b03811115613e0957600080fd5b61382385828601613d76565b600060808284031215613e2757600080fd5b613e2f613474565b90508135613e3c816139f1565b81526020828101359082015260408201356001600160401b03811115613e6157600080fd5b613e6d84828501613676565b6040830152506060820135613e8181613702565b606082015292915050565b600080600060608486031215613ea157600080fd5b8335613eac816133a8565b92506020840135613ebc81613bb2565b915060408401356001600160401b03811115613ed757600080fd5b613ee386828701613e15565b9150509250925092565b600060208284031215613eff57600080fd5b813561222e816134b8565b60008060008060808587031215613f2057600080fd5b8435613f2b816133a8565b93506020850135613f3b81613bb2565b925060408501356001600160401b03811115613f5657600080fd5b613f6287828801613e15565b9250506060850135613f73816135fe565b939692955090935050565b600060608284031215613f9057600080fd5b604051606081016001600160401b038282108183111715613fb357613fb36133cd565b8160405282935084359150613fc7826139d0565b908252602084013590613fd9826134d8565b8160208401526040850135915080821115613ff357600080fd5b5061400085828601613676565b6040830152505092915050565b60008060006060848603121561402257600080fd5b833561402d816133a8565b925060208401356001600160401b0381111561404857600080fd5b61398886828701613f7e565b6000806040838503121561406757600080fd5b82359150602083013561385b816135fe565b600060e0828403121561408b57600080fd5b614093613496565b905061409e826133bd565b815260208201356001600160401b03808211156140ba57600080fd5b6140c685838601613676565b6020840152604084013560408401526140e160608501613bc4565b60608401526140f260808501613bc4565b608084015261410360a08501613715565b60a084015260c084013591508082111561411c57600080fd5b5061412984828501613676565b60c08301525092915050565b6000806040838503121561414857600080fd5b8235915060208301356001600160401b0381111561416557600080fd5b61382385828601614079565b60208152600061222e602083018461388a565b60006080828403121561419657600080fd5b61419e613474565b9050813581526020820135602082015260408201356001600160401b03811115613e6157600080fd5b600080600080608085870312156141dd57600080fd5b84356141e8816133a8565b935060208501356141f8816139f1565b925060408501356001600160401b0381111561421357600080fd5b613f6287828801614184565b6000806040838503121561423257600080fd5b823561384b816139d0565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b6020815261429960208201835161423d565b6000602083015160c08084015261393960e084018261388a565b600061024082840312156142c657600080fd5b6142ce61340b565b90506142d9826134cd565b81526142e7602083016134cd565b60208201526142f8604083016133bd565b6040820152614309606083016133bd565b606082015261431b83608084016134f1565b608082015261432d8360c084016134f1565b60a0820152610100614341848285016134f1565b60c0830152610140614355858286016134f1565b60e08401526143688561018086016134f1565b8284015261437a856101c086016134f1565b61012084015261438d61020085016134e6565b90830152506135f261022083016134cd565b60008061026083850312156143b357600080fd5b82356143be816133a8565b91506139c784602085016142b3565b600080600080608085870312156143e357600080fd5b84356143ee816134b8565b935060208501356143fe816134b8565b9250604085013561440e816133a8565b91506060850135613f73816134b8565b60a0810161111d828461423d565b60008060006060848603121561444157600080fd5b833561444c816139d0565b925060208401356001600160401b0381111561446757600080fd5b61398886828701613d76565b60008060006060848603121561448857600080fd5b8335614493816135fe565b925060208401356144a3816135fe565b9150604084013561364e816135fe565b600080600061028084860312156144c957600080fd5b83356144d4816133a8565b92506144e385602086016142b3565b915061026084013561364e816135fe565b6000806040838503121561450757600080fd5b8235614512816133a8565b915060208301356001600160401b0381111561452d57600080fd5b61382385828601613a0c565b60008060006060848603121561454e57600080fd5b8335925060208401356001600160401b0381111561456b57600080fd5b61398886828701613bcf565b6000806040838503121561458a57600080fd5b8235614595816133a8565b915060208301356001600160401b038111156145b057600080fd5b61382385828601613f7e565b6000806000606084860312156145d157600080fd5b83356145dc816133a8565b925060208401356144a3816139f1565b600060a082840312156145fe57600080fd5b614606613474565b90508135614613816133a8565b81526020820135614623816134b8565b602082015261463583604084016134f1565b60408201526080820135613e81816134b8565b600080600060e0848603121561465d57600080fd5b8335614668816133a8565b925061467785602086016145ec565b915060c084013561364e816135fe565b60008060006060848603121561469c57600080fd5b8335925060208401356001600160401b038111156146b957600080fd5b61398886828701614079565b60ff198116811461182657600080fd5b600080604083850312156146e857600080fd5b82356146f3816135fe565b9150602083013561385b816146c5565b60008060c0838503121561471657600080fd5b8235614721816133a8565b91506139c784602085016145ec565b6000806040838503121561474357600080fd5b823561474e816134b8565b9150602083013561385b816134b8565b60008060006060848603121561477357600080fd5b833561477e816133a8565b9250602084013561478e816139f1565b915060408401356001600160401b038111156147a957600080fd5b613ee386828701614184565b81516001600160601b031681526101e0810160208301516147e160208401826001600160a01b03169052565b506040830151604083015260608301516147ff606084018215159052565b506080830151614813608084018215159052565b5060a083015161482760a084018215159052565b5060c083015160c083015260e083015160e0830152610100808401516148598285018280518252602090810151910152565b505061012083015161014061487a8185018380518252602090810151910152565b8401518051610180850152602001516101a0840152506101608301516001600160a01b0381166101c08401525b5092915050565b602081526148c86020820183516001600160601b03169052565b600060208301516148e6604084018280518252602090810151910152565b50604083015161014080608085015261490361016085018361388a565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015161010061493d8187018364ffffffffff169052565b60e087015164ffffffffff811661012088015291505b9095015164ffffffffff1693019290925250919050565b600181811c9082168061497e57607f821691505b60208210810361499e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156149b657600080fd5b815161222e816134d8565b6000602082840312156149d357600080fd5b815161222e816133a8565b602081526149f86020820183516001600160601b03169052565b60006020830151614a1460408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614a798185018364ffffffffff169052565b808501519150506102006101208181860152614a9961022086018461388a565b9250808601519050610140601f198685030181870152614ab9848361388a565b935080870151915050610160614ad48187018361ffff169052565b8601519050610180614aeb8682018361ffff169052565b8601516101a08681019190915286015190506101c0614b128187018364ffffffffff169052565b86015190506101e06149538682018364ffffffffff169052565b600060208284031215614b3e57600080fd5b5051919050565b6020815260008251610120806020850152614b6461014085018361388a565b91506020850151604085015260408501516060850152606085015160808501526080850151614b9b60a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e0850151610100614bd18187018315159052565b860151858403601f1901838701529050614beb838261388a565b9695505050505050565b601f821115610be557600081815260208120601f850160051c81016020861015614c1c5750805b601f850160051c820191505b8181101561252357828155600101614c28565b81516001600160401b03811115614c5457614c546133cd565b614c6881614c62845461496a565b84614bf5565b602080601f831160018114614c9d5760008415614c855750858301515b600019600386901b1c1916600185901b178555612523565b600085815260208120601f198616915b82811015614ccc57888601518255948401946001909101908401614cad565b5085821015614cea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b03825116602082015260006020830151604080840152613939606084018261388a565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215614d8b57600080fd5b815161222e816134b8565b602081526001600160401b0360c01b825116602082015260208201511515604082015260006040830151606080840152613939608084018261388a565b602081526001600160601b0382511660208201526000602083015160e06040840152614e0361010084018261388a565b90506040840151606084015263ffffffff60608501511660808401526080840151614e3660a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614e65828261388a565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b81516001600160a01b0316815261024081016020830151614eca60208401826001600160a01b03169052565b506040830151614ee560408401826001600160601b03169052565b506060830151614f0060608401826001600160601b03169052565b506080830151614f1d608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614f538185018380518252602090810151910152565b60e08501519150610140614f738186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b0381166102208401526148a7565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b60006020828403121561502a57600080fd5b815161222e816135fe565b6000808585111561504557600080fd5b8386111561505257600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150875780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082516150e1818460208701613866565b9190910192915050565b600080604083850312156150fe57600080fd5b8251615109816134d8565b602084015190925061385b81613bb2565b60006020828403121561512c57600080fd5b815161222e816146c5565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212202fb04525236ebfa8db99a62d333f0350b5e3d8c8d5dbbc227704ece249b65e8564736f6c63430008140033",
2315
3098
  "linkReferences": {
2316
- "contracts/types/Blocknumber.sol": {
2317
- "BlocknumberLib": [
2318
- {
2319
- "length": 20,
2320
- "start": 10534
2321
- }
2322
- ]
2323
- },
2324
- "contracts/types/Fee.sol": {
2325
- "FeeLib": [
2326
- {
2327
- "length": 20,
2328
- "start": 15699
2329
- },
2330
- {
2331
- "length": 20,
2332
- "start": 17283
2333
- }
2334
- ]
2335
- },
2336
3099
  "contracts/types/Key32.sol": {
2337
3100
  "Key32Lib": [
2338
3101
  {
2339
3102
  "length": 20,
2340
- "start": 33946
3103
+ "start": 10486
2341
3104
  },
2342
3105
  {
2343
3106
  "length": 20,
2344
- "start": 35168
2345
- }
2346
- ]
2347
- },
2348
- "contracts/types/NftId.sol": {
2349
- "NftIdLib": [
2350
- {
2351
- "length": 20,
2352
- "start": 8825
3107
+ "start": 12508
2353
3108
  },
2354
3109
  {
2355
3110
  "length": 20,
2356
- "start": 9750
3111
+ "start": 12624
2357
3112
  },
2358
3113
  {
2359
3114
  "length": 20,
2360
- "start": 9984
3115
+ "start": 12806
2361
3116
  },
2362
3117
  {
2363
3118
  "length": 20,
2364
- "start": 18235
3119
+ "start": 12922
2365
3120
  },
2366
3121
  {
2367
3122
  "length": 20,
2368
- "start": 18481
3123
+ "start": 13127
2369
3124
  },
2370
3125
  {
2371
3126
  "length": 20,
2372
- "start": 18673
3127
+ "start": 13880
2373
3128
  },
2374
3129
  {
2375
3130
  "length": 20,
2376
- "start": 18934
3131
+ "start": 13996
2377
3132
  },
2378
3133
  {
2379
3134
  "length": 20,
2380
- "start": 19190
3135
+ "start": 14721
2381
3136
  },
2382
3137
  {
2383
3138
  "length": 20,
2384
- "start": 19387
3139
+ "start": 14837
2385
3140
  }
2386
3141
  ]
2387
3142
  },
2388
- "contracts/types/NftIdSet.sol": {
2389
- "LibNftIdSet": [
3143
+ "contracts/types/NftId.sol": {
3144
+ "NftIdLib": [
3145
+ {
3146
+ "length": 20,
3147
+ "start": 5555
3148
+ },
3149
+ {
3150
+ "length": 20,
3151
+ "start": 6063
3152
+ },
2390
3153
  {
2391
3154
  "length": 20,
2392
- "start": 11030
3155
+ "start": 6843
2393
3156
  },
2394
3157
  {
2395
3158
  "length": 20,
2396
- "start": 12172
3159
+ "start": 7417
2397
3160
  },
2398
3161
  {
2399
3162
  "length": 20,
2400
- "start": 12363
3163
+ "start": 8192
2401
3164
  },
2402
3165
  {
2403
3166
  "length": 20,
2404
- "start": 12586
3167
+ "start": 8425
2405
3168
  },
2406
3169
  {
2407
3170
  "length": 20,
2408
- "start": 16391
3171
+ "start": 9423
2409
3172
  },
2410
3173
  {
2411
3174
  "length": 20,
2412
- "start": 16725
3175
+ "start": 11388
2413
3176
  }
2414
3177
  ]
2415
3178
  },
@@ -2417,7 +3180,7 @@
2417
3180
  "ObjectTypeLib": [
2418
3181
  {
2419
3182
  "length": 20,
2420
- "start": 31864
3183
+ "start": 13248
2421
3184
  }
2422
3185
  ]
2423
3186
  },
@@ -2425,35 +3188,15 @@
2425
3188
  "RiskIdLib": [
2426
3189
  {
2427
3190
  "length": 20,
2428
- "start": 13840
2429
- }
2430
- ]
2431
- },
2432
- "contracts/types/RoleId.sol": {
2433
- "RoleIdLib": [
2434
- {
2435
- "length": 20,
2436
- "start": 1590
2437
- },
2438
- {
2439
- "length": 20,
2440
- "start": 1858
2441
- },
2442
- {
2443
- "length": 20,
2444
- "start": 1947
2445
- },
2446
- {
2447
- "length": 20,
2448
- "start": 2039
3191
+ "start": 6477
2449
3192
  },
2450
3193
  {
2451
3194
  "length": 20,
2452
- "start": 13430
3195
+ "start": 8277
2453
3196
  },
2454
3197
  {
2455
3198
  "length": 20,
2456
- "start": 13995
3199
+ "start": 9508
2457
3200
  }
2458
3201
  ]
2459
3202
  },
@@ -2461,101 +3204,89 @@
2461
3204
  "StateIdLib": [
2462
3205
  {
2463
3206
  "length": 20,
2464
- "start": 31523
3207
+ "start": 6706
2465
3208
  },
2466
3209
  {
2467
3210
  "length": 20,
2468
- "start": 32081
3211
+ "start": 9662
2469
3212
  },
2470
3213
  {
2471
3214
  "length": 20,
2472
- "start": 32606
3215
+ "start": 10070
2473
3216
  },
2474
3217
  {
2475
3218
  "length": 20,
2476
- "start": 33339
3219
+ "start": 11934
2477
3220
  },
2478
3221
  {
2479
3222
  "length": 20,
2480
- "start": 33559
3223
+ "start": 12154
2481
3224
  },
2482
3225
  {
2483
3226
  "length": 20,
2484
- "start": 34116
3227
+ "start": 13469
2485
3228
  },
2486
3229
  {
2487
3230
  "length": 20,
2488
- "start": 34385
3231
+ "start": 14175
2489
3232
  },
2490
3233
  {
2491
3234
  "length": 20,
2492
- "start": 34605
2493
- },
2494
- {
2495
- "length": 20,
2496
- "start": 35097
3235
+ "start": 14395
2497
3236
  }
2498
3237
  ]
2499
3238
  },
2500
- "contracts/types/Timestamp.sol": {
2501
- "TimestampLib": [
3239
+ "contracts/types/Version.sol": {
3240
+ "VersionPartLib": [
2502
3241
  {
2503
3242
  "length": 20,
2504
- "start": 11786
3243
+ "start": 10238
2505
3244
  }
2506
3245
  ]
2507
- },
2508
- "contracts/types/UFixed.sol": {
2509
- "UFixedMathLib": [
3246
+ }
3247
+ },
3248
+ "deployedLinkReferences": {
3249
+ "contracts/types/Key32.sol": {
3250
+ "Key32Lib": [
2510
3251
  {
2511
3252
  "length": 20,
2512
- "start": 7742
3253
+ "start": 8655
2513
3254
  },
2514
3255
  {
2515
3256
  "length": 20,
2516
- "start": 13226
2517
- }
2518
- ]
2519
- },
2520
- "contracts/types/Version.sol": {
2521
- "VersionLib": [
3257
+ "start": 10677
3258
+ },
2522
3259
  {
2523
3260
  "length": 20,
2524
- "start": 1060
3261
+ "start": 10793
2525
3262
  },
2526
3263
  {
2527
3264
  "length": 20,
2528
- "start": 2155
3265
+ "start": 10975
2529
3266
  },
2530
3267
  {
2531
3268
  "length": 20,
2532
- "start": 7885
3269
+ "start": 11091
2533
3270
  },
2534
3271
  {
2535
3272
  "length": 20,
2536
- "start": 12845
2537
- }
2538
- ]
2539
- }
2540
- },
2541
- "deployedLinkReferences": {
2542
- "contracts/types/Blocknumber.sol": {
2543
- "BlocknumberLib": [
3273
+ "start": 11296
3274
+ },
2544
3275
  {
2545
3276
  "length": 20,
2546
- "start": 6538
2547
- }
2548
- ]
2549
- },
2550
- "contracts/types/Fee.sol": {
2551
- "FeeLib": [
3277
+ "start": 12049
3278
+ },
3279
+ {
3280
+ "length": 20,
3281
+ "start": 12165
3282
+ },
2552
3283
  {
2553
3284
  "length": 20,
2554
- "start": 11703
3285
+ "start": 12890
2555
3286
  },
2556
3287
  {
2557
3288
  "length": 20,
2558
- "start": 13287
3289
+ "start": 13006
2559
3290
  }
2560
3291
  ]
2561
3292
  },
@@ -2563,119 +3294,103 @@
2563
3294
  "NftIdLib": [
2564
3295
  {
2565
3296
  "length": 20,
2566
- "start": 4829
3297
+ "start": 3724
2567
3298
  },
2568
3299
  {
2569
3300
  "length": 20,
2570
- "start": 5754
3301
+ "start": 4232
2571
3302
  },
2572
3303
  {
2573
3304
  "length": 20,
2574
- "start": 5988
3305
+ "start": 5012
2575
3306
  },
2576
3307
  {
2577
3308
  "length": 20,
2578
- "start": 14239
3309
+ "start": 5586
2579
3310
  },
2580
3311
  {
2581
3312
  "length": 20,
2582
- "start": 14485
3313
+ "start": 6361
2583
3314
  },
2584
3315
  {
2585
3316
  "length": 20,
2586
- "start": 14677
3317
+ "start": 6594
2587
3318
  },
2588
3319
  {
2589
3320
  "length": 20,
2590
- "start": 14938
3321
+ "start": 7592
2591
3322
  },
2592
3323
  {
2593
3324
  "length": 20,
2594
- "start": 15194
2595
- },
3325
+ "start": 9557
3326
+ }
3327
+ ]
3328
+ },
3329
+ "contracts/types/ObjectType.sol": {
3330
+ "ObjectTypeLib": [
2596
3331
  {
2597
3332
  "length": 20,
2598
- "start": 15391
3333
+ "start": 11417
2599
3334
  }
2600
3335
  ]
2601
3336
  },
2602
- "contracts/types/NftIdSet.sol": {
2603
- "LibNftIdSet": [
3337
+ "contracts/types/RiskId.sol": {
3338
+ "RiskIdLib": [
2604
3339
  {
2605
3340
  "length": 20,
2606
- "start": 7034
3341
+ "start": 4646
2607
3342
  },
2608
3343
  {
2609
3344
  "length": 20,
2610
- "start": 8176
3345
+ "start": 6446
2611
3346
  },
2612
3347
  {
2613
3348
  "length": 20,
2614
- "start": 8367
2615
- },
3349
+ "start": 7677
3350
+ }
3351
+ ]
3352
+ },
3353
+ "contracts/types/StateId.sol": {
3354
+ "StateIdLib": [
2616
3355
  {
2617
3356
  "length": 20,
2618
- "start": 8590
3357
+ "start": 4875
2619
3358
  },
2620
3359
  {
2621
3360
  "length": 20,
2622
- "start": 12395
3361
+ "start": 7831
2623
3362
  },
2624
3363
  {
2625
3364
  "length": 20,
2626
- "start": 12729
2627
- }
2628
- ]
2629
- },
2630
- "contracts/types/RiskId.sol": {
2631
- "RiskIdLib": [
2632
- {
2633
- "length": 20,
2634
- "start": 9844
2635
- }
2636
- ]
2637
- },
2638
- "contracts/types/RoleId.sol": {
2639
- "RoleIdLib": [
3365
+ "start": 8239
3366
+ },
2640
3367
  {
2641
3368
  "length": 20,
2642
- "start": 9434
3369
+ "start": 10103
2643
3370
  },
2644
3371
  {
2645
3372
  "length": 20,
2646
- "start": 9999
2647
- }
2648
- ]
2649
- },
2650
- "contracts/types/Timestamp.sol": {
2651
- "TimestampLib": [
3373
+ "start": 10323
3374
+ },
2652
3375
  {
2653
3376
  "length": 20,
2654
- "start": 7790
2655
- }
2656
- ]
2657
- },
2658
- "contracts/types/UFixed.sol": {
2659
- "UFixedMathLib": [
3377
+ "start": 11638
3378
+ },
2660
3379
  {
2661
3380
  "length": 20,
2662
- "start": 3746
3381
+ "start": 12344
2663
3382
  },
2664
3383
  {
2665
3384
  "length": 20,
2666
- "start": 9230
3385
+ "start": 12564
2667
3386
  }
2668
3387
  ]
2669
3388
  },
2670
3389
  "contracts/types/Version.sol": {
2671
- "VersionLib": [
2672
- {
2673
- "length": 20,
2674
- "start": 3889
2675
- },
3390
+ "VersionPartLib": [
2676
3391
  {
2677
3392
  "length": 20,
2678
- "start": 8849
3393
+ "start": 8407
2679
3394
  }
2680
3395
  ]
2681
3396
  }