@etherisc/gif-next 0.0.2-a196164-289 → 0.0.2-a25e4b8-781

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/README.md +211 -27
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +588 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +465 -89
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → components/IComponent.sol/IComponent.json} +213 -187
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -188
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +15 -227
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -218
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +516 -146
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +554 -117
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  46. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  47. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  48. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +983 -1059
  50. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +570 -0
  52. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  53. package/artifacts/contracts/instance/Instance.sol/Instance.json +1728 -1243
  54. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1034 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1381 -0
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +956 -0
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -0
  62. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  64. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/{ServiceBase.sol/ServiceBase.json → ComponentService.sol/ComponentService.json} +266 -58
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  70. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  76. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  77. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  78. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  79. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  81. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  83. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  85. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  86. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  87. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  89. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1094 -0
  91. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
  93. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +327 -70
  95. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +424 -0
  97. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
  99. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +131 -51
  101. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
  103. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +132 -114
  105. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +127 -262
  107. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1219 -0
  109. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
  111. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +312 -144
  113. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +424 -0
  115. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  116. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +275 -372
  117. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  118. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +424 -0
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +455 -36
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  124. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +981 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  126. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  127. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  128. package/artifacts/contracts/registry/Registry.sol/Registry.json +465 -111
  129. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  130. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  132. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1187 -0
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  134. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  136. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  138. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +381 -0
  139. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  140. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  141. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  145. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  147. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +133 -117
  149. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  152. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  154. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  156. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +148 -143
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  159. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -25
  164. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  166. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  168. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  170. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestService.sol/TestService.json +213 -79
  172. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  174. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  176. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  177. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +27 -34
  178. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  179. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  180. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  205. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  207. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  209. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  210. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  211. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  213. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  215. package/contracts/components/Component.sol +179 -0
  216. package/contracts/components/Distribution.sol +56 -34
  217. package/contracts/components/IComponent.sol +37 -0
  218. package/contracts/components/IDistributionComponent.sol +3 -6
  219. package/contracts/components/IPoolComponent.sol +7 -12
  220. package/contracts/components/IProductComponent.sol +6 -9
  221. package/contracts/components/Pool.sol +122 -99
  222. package/contracts/components/Product.sol +130 -60
  223. package/contracts/experiment/cloning/Cloner.sol +47 -0
  224. package/contracts/instance/BundleManager.sol +125 -0
  225. package/contracts/instance/Cloneable.sol +46 -0
  226. package/contracts/instance/IInstance.sol +57 -44
  227. package/contracts/instance/IInstanceService.sol +40 -0
  228. package/contracts/instance/Instance.sol +237 -58
  229. package/contracts/instance/InstanceAccessManager.sol +298 -0
  230. package/contracts/instance/InstanceReader.sol +293 -0
  231. package/contracts/instance/InstanceService.sol +362 -0
  232. package/contracts/instance/InstanceServiceManager.sol +54 -0
  233. package/contracts/instance/ObjectManager.sol +84 -0
  234. package/contracts/instance/base/ComponentService.sol +133 -0
  235. package/contracts/instance/base/IInstanceBase.sol +2 -3
  236. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  237. package/contracts/instance/base/ILifecycle.sol +3 -3
  238. package/contracts/instance/base/KeyValueStore.sol +49 -38
  239. package/contracts/instance/base/Lifecycle.sol +1 -1
  240. package/contracts/instance/module/IAccess.sol +48 -0
  241. package/contracts/instance/module/IBundle.sol +20 -0
  242. package/contracts/instance/module/IDistribution.sol +39 -0
  243. package/contracts/instance/module/IPolicy.sol +45 -0
  244. package/contracts/instance/module/IRisk.sol +11 -0
  245. package/contracts/instance/module/ISetup.sol +46 -0
  246. package/contracts/instance/module/ITreasury.sol +23 -0
  247. package/contracts/instance/service/BundleService.sol +293 -0
  248. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  249. package/contracts/instance/service/DistributionService.sol +79 -23
  250. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  251. package/contracts/instance/service/IBundleService.sol +44 -0
  252. package/contracts/instance/service/IDistributionService.sol +1 -1
  253. package/contracts/instance/service/IPolicyService.sol +94 -0
  254. package/contracts/instance/service/IPoolService.sol +7 -24
  255. package/contracts/instance/service/IProductService.sol +9 -76
  256. package/contracts/instance/service/PolicyService.sol +538 -0
  257. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  258. package/contracts/instance/service/PoolService.sol +105 -112
  259. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  260. package/contracts/instance/service/ProductService.sol +163 -431
  261. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  262. package/contracts/registry/ChainNft.sol +79 -36
  263. package/contracts/registry/IRegistry.sol +65 -24
  264. package/contracts/registry/IRegistryService.sol +57 -0
  265. package/contracts/registry/ITransferInterceptor.sol +6 -0
  266. package/contracts/registry/Registry.sol +358 -287
  267. package/contracts/registry/RegistryAccessManager.sol +216 -0
  268. package/contracts/registry/RegistryService.sol +312 -0
  269. package/contracts/registry/RegistryServiceManager.sol +62 -0
  270. package/contracts/registry/ReleaseManager.sol +352 -0
  271. package/contracts/registry/TokenRegistry.sol +112 -0
  272. package/contracts/shared/ContractDeployerLib.sol +72 -0
  273. package/contracts/shared/ERC165.sol +6 -2
  274. package/contracts/shared/INftOwnable.sol +22 -0
  275. package/contracts/shared/IRegisterable.sol +8 -17
  276. package/contracts/shared/IService.sol +16 -0
  277. package/contracts/shared/IVersionable.sol +44 -13
  278. package/contracts/shared/NftOwnable.sol +136 -0
  279. package/contracts/shared/ProxyManager.sol +94 -0
  280. package/contracts/shared/Registerable.sol +63 -59
  281. package/contracts/shared/Service.sol +60 -0
  282. package/contracts/shared/TokenHandler.sol +27 -0
  283. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  284. package/contracts/shared/Versionable.sol +110 -62
  285. package/contracts/test/TestFee.sol +2 -2
  286. package/contracts/test/TestRegisterable.sol +5 -6
  287. package/contracts/test/TestRoleId.sol +1 -1
  288. package/contracts/test/TestService.sol +7 -14
  289. package/contracts/types/DistributorType.sol +55 -0
  290. package/contracts/types/Fee.sol +3 -3
  291. package/contracts/types/Key32.sol +8 -3
  292. package/contracts/types/NftIdSet.sol +26 -24
  293. package/contracts/types/NumberId.sol +52 -0
  294. package/contracts/types/ObjectType.sol +35 -14
  295. package/contracts/types/Referral.sol +85 -0
  296. package/contracts/types/RoleId.sol +61 -9
  297. package/contracts/types/StateId.sol +5 -1
  298. package/contracts/types/Timestamp.sol +7 -3
  299. package/contracts/types/UFixed.sol +128 -12
  300. package/contracts/types/Version.sol +5 -1
  301. package/package.json +4 -3
  302. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  303. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  304. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  305. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  306. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  307. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  308. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  309. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  310. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -341
  311. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  312. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  313. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  314. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  315. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  316. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  318. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  319. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  320. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  321. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  322. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  323. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  324. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  325. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  326. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  327. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  328. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  329. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  330. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  331. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  332. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  333. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  334. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  335. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  336. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  337. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  338. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  339. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  340. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  341. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  342. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  343. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  344. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  345. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  346. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  347. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  348. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  349. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  350. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  351. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  354. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  356. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  358. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  359. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -618
  360. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  361. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  362. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  363. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  364. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  365. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  366. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -711
  367. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  368. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  369. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  370. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -235
  371. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  372. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  373. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  374. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  375. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  376. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  377. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  378. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  379. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  380. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  381. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  382. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  383. package/contracts/components/BaseComponent.sol +0 -94
  384. package/contracts/components/IBaseComponent.sol +0 -19
  385. package/contracts/experiment/statemachine/README.md +0 -112
  386. package/contracts/instance/IInstanceLinked.sol +0 -8
  387. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  388. package/contracts/instance/base/IService.sol +0 -15
  389. package/contracts/instance/base/InstanceBase.sol +0 -91
  390. package/contracts/instance/base/ModuleBase.sol +0 -57
  391. package/contracts/instance/base/ServiceBase.sol +0 -37
  392. package/contracts/instance/module/access/Access.sol +0 -149
  393. package/contracts/instance/module/access/IAccess.sol +0 -53
  394. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  395. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  396. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  397. package/contracts/instance/module/component/IComponent.sol +0 -28
  398. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  399. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  400. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  401. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  402. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  403. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  404. package/contracts/instance/module/risk/IRisk.sol +0 -26
  405. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  406. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  407. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  408. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  409. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  410. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  411. package/contracts/registry/IChainNft.sol +0 -21
  412. package/contracts/registry/IRegistryLinked.sol +0 -8
  413. package/contracts/registry/RegistryUpgradeable.sol +0 -548
  414. package/contracts/shared/IOwnable.sol +0 -6
  415. package/contracts/shared/Proxy.sol +0 -89
  416. package/contracts/shared/VersionableUpgradeable.sol +0 -120
  417. package/contracts/test/TestDistribution.sol +0 -21
  418. package/contracts/test/TestPool.sol +0 -25
  419. package/contracts/test/TestProduct.sol +0 -72
  420. package/contracts/types/ReferralId.sol +0 -48
@@ -3,6 +3,44 @@
3
3
  "contractName": "Instance",
4
4
  "sourceName": "contracts/instance/Instance.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "authority",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "AccessManagedInvalidAuthority",
15
+ "type": "error"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "caller",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
28
+ }
29
+ ],
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "AccessManagedUnauthorized",
42
+ "type": "error"
43
+ },
6
44
  {
7
45
  "inputs": [
8
46
  {
@@ -12,12 +50,114 @@
12
50
  },
13
51
  {
14
52
  "internalType": "NftId",
15
- "name": "registryNftId",
53
+ "name": "nftId",
16
54
  "type": "uint96"
17
55
  }
18
56
  ],
19
- "stateMutability": "nonpayable",
20
- "type": "constructor"
57
+ "name": "ErrorAlreadyLinked",
58
+ "type": "error"
59
+ },
60
+ {
61
+ "inputs": [
62
+ {
63
+ "internalType": "address",
64
+ "name": "contractAddress",
65
+ "type": "address"
66
+ }
67
+ ],
68
+ "name": "ErrorContractNotRegistered",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [
73
+ {
74
+ "internalType": "ObjectType",
75
+ "name": "objectType",
76
+ "type": "uint8"
77
+ },
78
+ {
79
+ "internalType": "StateId",
80
+ "name": "fromStateId",
81
+ "type": "uint8"
82
+ },
83
+ {
84
+ "internalType": "StateId",
85
+ "name": "toStateId",
86
+ "type": "uint8"
87
+ }
88
+ ],
89
+ "name": "ErrorInvalidStateTransition",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [
94
+ {
95
+ "internalType": "NftId",
96
+ "name": "nftId",
97
+ "type": "uint96"
98
+ },
99
+ {
100
+ "internalType": "ObjectType",
101
+ "name": "objectType",
102
+ "type": "uint8"
103
+ }
104
+ ],
105
+ "name": "ErrorNoLifecycle",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [
110
+ {
111
+ "internalType": "address",
112
+ "name": "account",
113
+ "type": "address"
114
+ }
115
+ ],
116
+ "name": "ErrorNotOwner",
117
+ "type": "error"
118
+ },
119
+ {
120
+ "inputs": [
121
+ {
122
+ "internalType": "address",
123
+ "name": "registryAddress",
124
+ "type": "address"
125
+ }
126
+ ],
127
+ "name": "ErrorNotRegistry",
128
+ "type": "error"
129
+ },
130
+ {
131
+ "inputs": [
132
+ {
133
+ "internalType": "address",
134
+ "name": "registryAddress",
135
+ "type": "address"
136
+ }
137
+ ],
138
+ "name": "ErrorRegisterableNotRegistry",
139
+ "type": "error"
140
+ },
141
+ {
142
+ "inputs": [],
143
+ "name": "ErrorRegistryAddressZero",
144
+ "type": "error"
145
+ },
146
+ {
147
+ "inputs": [
148
+ {
149
+ "internalType": "address",
150
+ "name": "registry",
151
+ "type": "address"
152
+ }
153
+ ],
154
+ "name": "ErrorRegistryAlreadyInitialized",
155
+ "type": "error"
156
+ },
157
+ {
158
+ "inputs": [],
159
+ "name": "ErrorRegistryNotInitialized",
160
+ "type": "error"
21
161
  },
22
162
  {
23
163
  "inputs": [],
@@ -34,12 +174,12 @@
34
174
  "inputs": [
35
175
  {
36
176
  "indexed": false,
37
- "internalType": "uint64",
38
- "name": "version",
39
- "type": "uint64"
177
+ "internalType": "address",
178
+ "name": "authority",
179
+ "type": "address"
40
180
  }
41
181
  ],
42
- "name": "Initialized",
182
+ "name": "AuthorityUpdated",
43
183
  "type": "event"
44
184
  },
45
185
  {
@@ -47,18 +187,12 @@
47
187
  "inputs": [
48
188
  {
49
189
  "indexed": false,
50
- "internalType": "RoleId",
51
- "name": "role",
52
- "type": "bytes8"
53
- },
54
- {
55
- "indexed": false,
56
- "internalType": "string",
57
- "name": "roleName",
58
- "type": "string"
190
+ "internalType": "uint64",
191
+ "name": "version",
192
+ "type": "uint64"
59
193
  }
60
194
  ],
61
- "name": "LogAccessRoleCreated",
195
+ "name": "Initialized",
62
196
  "type": "event"
63
197
  },
64
198
  {
@@ -66,24 +200,36 @@
66
200
  "inputs": [
67
201
  {
68
202
  "indexed": false,
69
- "internalType": "RoleId",
70
- "name": "role",
71
- "type": "bytes8"
203
+ "internalType": "ObjectType",
204
+ "name": "objectType",
205
+ "type": "uint8"
206
+ },
207
+ {
208
+ "indexed": false,
209
+ "internalType": "KeyId",
210
+ "name": "keyId",
211
+ "type": "bytes31"
212
+ },
213
+ {
214
+ "indexed": false,
215
+ "internalType": "StateId",
216
+ "name": "state",
217
+ "type": "uint8"
72
218
  },
73
219
  {
74
220
  "indexed": false,
75
221
  "internalType": "address",
76
- "name": "member",
222
+ "name": "createdBy",
77
223
  "type": "address"
78
224
  },
79
225
  {
80
226
  "indexed": false,
81
- "internalType": "bool",
82
- "name": "isMember",
83
- "type": "bool"
227
+ "internalType": "address",
228
+ "name": "txOrigin",
229
+ "type": "address"
84
230
  }
85
231
  ],
86
- "name": "LogAccessRoleGranted",
232
+ "name": "LogInfoCreated",
87
233
  "type": "event"
88
234
  },
89
235
  {
@@ -91,130 +237,140 @@
91
237
  "inputs": [
92
238
  {
93
239
  "indexed": false,
94
- "internalType": "RoleId",
95
- "name": "role",
96
- "type": "bytes8"
240
+ "internalType": "ObjectType",
241
+ "name": "objectType",
242
+ "type": "uint8"
97
243
  },
98
244
  {
99
245
  "indexed": false,
100
- "internalType": "bool",
101
- "name": "active",
102
- "type": "bool"
103
- }
104
- ],
105
- "name": "LogAccessRoleStateSet",
106
- "type": "event"
107
- },
108
- {
109
- "anonymous": false,
110
- "inputs": [
246
+ "internalType": "KeyId",
247
+ "name": "keyId",
248
+ "type": "bytes31"
249
+ },
111
250
  {
112
251
  "indexed": false,
113
- "internalType": "Version",
114
- "name": "version",
115
- "type": "uint24"
252
+ "internalType": "StateId",
253
+ "name": "state",
254
+ "type": "uint8"
116
255
  },
117
256
  {
118
257
  "indexed": false,
119
258
  "internalType": "address",
120
- "name": "implementation",
259
+ "name": "updatedBy",
121
260
  "type": "address"
122
261
  },
123
262
  {
124
263
  "indexed": false,
125
264
  "internalType": "address",
126
- "name": "activatedBy",
265
+ "name": "txOrigin",
127
266
  "type": "address"
267
+ },
268
+ {
269
+ "indexed": false,
270
+ "internalType": "Blocknumber",
271
+ "name": "lastUpdatedIn",
272
+ "type": "uint32"
128
273
  }
129
274
  ],
130
- "name": "LogVersionableInitialized",
275
+ "name": "LogInfoUpdated",
131
276
  "type": "event"
132
277
  },
133
278
  {
279
+ "anonymous": false,
134
280
  "inputs": [
135
281
  {
282
+ "indexed": false,
283
+ "internalType": "ObjectType",
284
+ "name": "objectType",
285
+ "type": "uint8"
286
+ },
287
+ {
288
+ "indexed": false,
289
+ "internalType": "KeyId",
290
+ "name": "keyId",
291
+ "type": "bytes31"
292
+ },
293
+ {
294
+ "indexed": false,
295
+ "internalType": "StateId",
296
+ "name": "stateOld",
297
+ "type": "uint8"
298
+ },
299
+ {
300
+ "indexed": false,
301
+ "internalType": "StateId",
302
+ "name": "stateNew",
303
+ "type": "uint8"
304
+ },
305
+ {
306
+ "indexed": false,
136
307
  "internalType": "address",
137
- "name": "implementation",
308
+ "name": "updatedBy",
138
309
  "type": "address"
139
310
  },
140
311
  {
312
+ "indexed": false,
141
313
  "internalType": "address",
142
- "name": "activatedBy",
314
+ "name": "txOrigin",
143
315
  "type": "address"
144
316
  },
145
317
  {
146
- "internalType": "bytes",
147
- "name": "activatinData",
148
- "type": "bytes"
318
+ "indexed": false,
319
+ "internalType": "Blocknumber",
320
+ "name": "lastUpdatedIn",
321
+ "type": "uint32"
149
322
  }
150
323
  ],
151
- "name": "activate",
152
- "outputs": [],
153
- "stateMutability": "nonpayable",
154
- "type": "function"
324
+ "name": "LogStateUpdated",
325
+ "type": "event"
155
326
  },
156
327
  {
157
- "inputs": [
158
- {
159
- "internalType": "NftId",
160
- "name": "bundleNftId",
161
- "type": "uint96"
162
- },
328
+ "inputs": [],
329
+ "name": "REGISTERABLE_LOCATION_V1",
330
+ "outputs": [
163
331
  {
164
- "internalType": "NftId",
165
- "name": "poolNftId",
166
- "type": "uint96"
167
- },
332
+ "internalType": "bytes32",
333
+ "name": "",
334
+ "type": "bytes32"
335
+ }
336
+ ],
337
+ "stateMutability": "view",
338
+ "type": "function"
339
+ },
340
+ {
341
+ "inputs": [],
342
+ "name": "authority",
343
+ "outputs": [
168
344
  {
169
- "internalType": "uint256",
345
+ "internalType": "address",
170
346
  "name": "",
171
- "type": "uint256"
347
+ "type": "address"
172
348
  }
173
349
  ],
174
- "name": "addBundleToPool",
175
- "outputs": [],
176
- "stateMutability": "nonpayable",
350
+ "stateMutability": "view",
177
351
  "type": "function"
178
352
  },
179
353
  {
180
354
  "inputs": [
181
355
  {
182
- "internalType": "uint256",
183
- "name": "amount",
184
- "type": "uint256"
356
+ "internalType": "ObjectType",
357
+ "name": "objectType",
358
+ "type": "uint8"
185
359
  },
186
360
  {
187
- "components": [
188
- {
189
- "internalType": "UFixed",
190
- "name": "fractionalFee",
191
- "type": "uint256"
192
- },
193
- {
194
- "internalType": "uint256",
195
- "name": "fixedFee",
196
- "type": "uint256"
197
- }
198
- ],
199
- "internalType": "struct Fee",
200
- "name": "fee",
201
- "type": "tuple"
202
- }
203
- ],
204
- "name": "calculateFeeAmount",
205
- "outputs": [
206
- {
207
- "internalType": "uint256",
208
- "name": "feeAmount",
209
- "type": "uint256"
361
+ "internalType": "StateId",
362
+ "name": "fromId",
363
+ "type": "uint8"
210
364
  },
211
365
  {
212
- "internalType": "uint256",
213
- "name": "netAmount",
214
- "type": "uint256"
366
+ "internalType": "StateId",
367
+ "name": "toId",
368
+ "type": "uint8"
215
369
  }
216
370
  ],
217
- "stateMutability": "pure",
371
+ "name": "checkTransition",
372
+ "outputs": [],
373
+ "stateMutability": "view",
218
374
  "type": "function"
219
375
  },
220
376
  {
@@ -225,17 +381,71 @@
225
381
  "type": "uint96"
226
382
  },
227
383
  {
228
- "internalType": "NftId",
229
- "name": "policyNftId",
230
- "type": "uint96"
231
- },
232
- {
233
- "internalType": "uint256",
234
- "name": "collateralAmount",
235
- "type": "uint256"
384
+ "components": [
385
+ {
386
+ "internalType": "NftId",
387
+ "name": "poolNftId",
388
+ "type": "uint96"
389
+ },
390
+ {
391
+ "components": [
392
+ {
393
+ "internalType": "UFixed",
394
+ "name": "fractionalFee",
395
+ "type": "uint256"
396
+ },
397
+ {
398
+ "internalType": "uint256",
399
+ "name": "fixedFee",
400
+ "type": "uint256"
401
+ }
402
+ ],
403
+ "internalType": "struct Fee",
404
+ "name": "fee",
405
+ "type": "tuple"
406
+ },
407
+ {
408
+ "internalType": "bytes",
409
+ "name": "filter",
410
+ "type": "bytes"
411
+ },
412
+ {
413
+ "internalType": "uint256",
414
+ "name": "capitalAmount",
415
+ "type": "uint256"
416
+ },
417
+ {
418
+ "internalType": "uint256",
419
+ "name": "lockedAmount",
420
+ "type": "uint256"
421
+ },
422
+ {
423
+ "internalType": "uint256",
424
+ "name": "balanceAmount",
425
+ "type": "uint256"
426
+ },
427
+ {
428
+ "internalType": "uint256",
429
+ "name": "lifetime",
430
+ "type": "uint256"
431
+ },
432
+ {
433
+ "internalType": "Timestamp",
434
+ "name": "expiredAt",
435
+ "type": "uint40"
436
+ },
437
+ {
438
+ "internalType": "Timestamp",
439
+ "name": "closedAt",
440
+ "type": "uint40"
441
+ }
442
+ ],
443
+ "internalType": "struct IBundle.BundleInfo",
444
+ "name": "bundle",
445
+ "type": "tuple"
236
446
  }
237
447
  ],
238
- "name": "collateralizePolicy",
448
+ "name": "createBundle",
239
449
  "outputs": [],
240
450
  "stateMutability": "nonpayable",
241
451
  "type": "function"
@@ -244,48 +454,100 @@
244
454
  "inputs": [
245
455
  {
246
456
  "internalType": "NftId",
247
- "name": "bundleNftId",
457
+ "name": "policyNftId",
248
458
  "type": "uint96"
249
459
  },
250
460
  {
251
- "internalType": "NftId",
252
- "name": "poolNftId",
253
- "type": "uint96"
461
+ "internalType": "NumberId",
462
+ "name": "claimId",
463
+ "type": "uint32"
254
464
  },
255
465
  {
256
466
  "components": [
257
467
  {
258
- "internalType": "UFixed",
259
- "name": "fractionalFee",
468
+ "internalType": "uint256",
469
+ "name": "claimAmount",
260
470
  "type": "uint256"
261
471
  },
262
472
  {
263
473
  "internalType": "uint256",
264
- "name": "fixedFee",
474
+ "name": "paidAmount",
265
475
  "type": "uint256"
476
+ },
477
+ {
478
+ "internalType": "bytes",
479
+ "name": "data",
480
+ "type": "bytes"
481
+ },
482
+ {
483
+ "internalType": "Timestamp",
484
+ "name": "closedAt",
485
+ "type": "uint40"
266
486
  }
267
487
  ],
268
- "internalType": "struct Fee",
269
- "name": "fee",
488
+ "internalType": "struct IPolicy.ClaimInfo",
489
+ "name": "claim",
270
490
  "type": "tuple"
271
- },
272
- {
273
- "internalType": "uint256",
274
- "name": "amount",
275
- "type": "uint256"
276
- },
491
+ }
492
+ ],
493
+ "name": "createClaim",
494
+ "outputs": [],
495
+ "stateMutability": "nonpayable",
496
+ "type": "function"
497
+ },
498
+ {
499
+ "inputs": [
277
500
  {
278
- "internalType": "uint256",
279
- "name": "lifetime",
280
- "type": "uint256"
501
+ "internalType": "NftId",
502
+ "name": "distributionNftId",
503
+ "type": "uint96"
281
504
  },
282
505
  {
283
- "internalType": "bytes",
284
- "name": "filter",
285
- "type": "bytes"
506
+ "components": [
507
+ {
508
+ "internalType": "NftId",
509
+ "name": "productNftId",
510
+ "type": "uint96"
511
+ },
512
+ {
513
+ "internalType": "contract TokenHandler",
514
+ "name": "tokenHandler",
515
+ "type": "address"
516
+ },
517
+ {
518
+ "components": [
519
+ {
520
+ "internalType": "UFixed",
521
+ "name": "fractionalFee",
522
+ "type": "uint256"
523
+ },
524
+ {
525
+ "internalType": "uint256",
526
+ "name": "fixedFee",
527
+ "type": "uint256"
528
+ }
529
+ ],
530
+ "internalType": "struct Fee",
531
+ "name": "distributionFee",
532
+ "type": "tuple"
533
+ },
534
+ {
535
+ "internalType": "bool",
536
+ "name": "isIntercepting",
537
+ "type": "bool"
538
+ },
539
+ {
540
+ "internalType": "address",
541
+ "name": "wallet",
542
+ "type": "address"
543
+ }
544
+ ],
545
+ "internalType": "struct ISetup.DistributionSetupInfo",
546
+ "name": "setup",
547
+ "type": "tuple"
286
548
  }
287
549
  ],
288
- "name": "createBundleInfo",
550
+ "name": "createDistributionSetup",
289
551
  "outputs": [],
290
552
  "stateMutability": "nonpayable",
291
553
  "type": "function"
@@ -297,120 +559,359 @@
297
559
  "name": "policyNftId",
298
560
  "type": "uint96"
299
561
  },
562
+ {
563
+ "internalType": "NumberId",
564
+ "name": "payoutId",
565
+ "type": "uint32"
566
+ },
567
+ {
568
+ "components": [
569
+ {
570
+ "internalType": "NumberId",
571
+ "name": "claimId",
572
+ "type": "uint32"
573
+ },
574
+ {
575
+ "internalType": "uint256",
576
+ "name": "amount",
577
+ "type": "uint256"
578
+ },
579
+ {
580
+ "internalType": "bytes",
581
+ "name": "data",
582
+ "type": "bytes"
583
+ },
584
+ {
585
+ "internalType": "Timestamp",
586
+ "name": "paidAt",
587
+ "type": "uint40"
588
+ }
589
+ ],
590
+ "internalType": "struct IPolicy.PayoutInfo",
591
+ "name": "payout",
592
+ "type": "tuple"
593
+ }
594
+ ],
595
+ "name": "createDistributor",
596
+ "outputs": [],
597
+ "stateMutability": "nonpayable",
598
+ "type": "function"
599
+ },
600
+ {
601
+ "inputs": [
300
602
  {
301
603
  "internalType": "NftId",
302
- "name": "productNftId",
604
+ "name": "policyNftId",
303
605
  "type": "uint96"
304
606
  },
305
607
  {
306
- "internalType": "ReferralId",
307
- "name": "referralId",
308
- "type": "bytes8"
608
+ "internalType": "NumberId",
609
+ "name": "payoutId",
610
+ "type": "uint32"
309
611
  },
310
612
  {
311
- "internalType": "RiskId",
312
- "name": "riskId",
313
- "type": "bytes8"
314
- },
613
+ "components": [
614
+ {
615
+ "internalType": "NumberId",
616
+ "name": "claimId",
617
+ "type": "uint32"
618
+ },
619
+ {
620
+ "internalType": "uint256",
621
+ "name": "amount",
622
+ "type": "uint256"
623
+ },
624
+ {
625
+ "internalType": "bytes",
626
+ "name": "data",
627
+ "type": "bytes"
628
+ },
629
+ {
630
+ "internalType": "Timestamp",
631
+ "name": "paidAt",
632
+ "type": "uint40"
633
+ }
634
+ ],
635
+ "internalType": "struct IPolicy.PayoutInfo",
636
+ "name": "payout",
637
+ "type": "tuple"
638
+ }
639
+ ],
640
+ "name": "createDistributorType",
641
+ "outputs": [],
642
+ "stateMutability": "nonpayable",
643
+ "type": "function"
644
+ },
645
+ {
646
+ "inputs": [
315
647
  {
316
- "internalType": "uint256",
317
- "name": "sumInsuredAmount",
318
- "type": "uint256"
648
+ "internalType": "NftId",
649
+ "name": "policyNftId",
650
+ "type": "uint96"
319
651
  },
320
652
  {
321
- "internalType": "uint256",
322
- "name": "premiumAmount",
323
- "type": "uint256"
653
+ "internalType": "NumberId",
654
+ "name": "payoutId",
655
+ "type": "uint32"
324
656
  },
325
657
  {
326
- "internalType": "uint256",
327
- "name": "lifetime",
328
- "type": "uint256"
329
- },
658
+ "components": [
659
+ {
660
+ "internalType": "NumberId",
661
+ "name": "claimId",
662
+ "type": "uint32"
663
+ },
664
+ {
665
+ "internalType": "uint256",
666
+ "name": "amount",
667
+ "type": "uint256"
668
+ },
669
+ {
670
+ "internalType": "bytes",
671
+ "name": "data",
672
+ "type": "bytes"
673
+ },
674
+ {
675
+ "internalType": "Timestamp",
676
+ "name": "paidAt",
677
+ "type": "uint40"
678
+ }
679
+ ],
680
+ "internalType": "struct IPolicy.PayoutInfo",
681
+ "name": "payout",
682
+ "type": "tuple"
683
+ }
684
+ ],
685
+ "name": "createPayout",
686
+ "outputs": [],
687
+ "stateMutability": "nonpayable",
688
+ "type": "function"
689
+ },
690
+ {
691
+ "inputs": [
330
692
  {
331
693
  "internalType": "NftId",
332
- "name": "bundleNftId",
694
+ "name": "policyNftId",
333
695
  "type": "uint96"
696
+ },
697
+ {
698
+ "components": [
699
+ {
700
+ "internalType": "NftId",
701
+ "name": "productNftId",
702
+ "type": "uint96"
703
+ },
704
+ {
705
+ "internalType": "NftId",
706
+ "name": "bundleNftId",
707
+ "type": "uint96"
708
+ },
709
+ {
710
+ "internalType": "ReferralId",
711
+ "name": "referralId",
712
+ "type": "bytes8"
713
+ },
714
+ {
715
+ "internalType": "RiskId",
716
+ "name": "riskId",
717
+ "type": "bytes8"
718
+ },
719
+ {
720
+ "internalType": "uint256",
721
+ "name": "sumInsuredAmount",
722
+ "type": "uint256"
723
+ },
724
+ {
725
+ "internalType": "uint256",
726
+ "name": "premiumAmount",
727
+ "type": "uint256"
728
+ },
729
+ {
730
+ "internalType": "uint256",
731
+ "name": "premiumPaidAmount",
732
+ "type": "uint256"
733
+ },
734
+ {
735
+ "internalType": "uint256",
736
+ "name": "lifetime",
737
+ "type": "uint256"
738
+ },
739
+ {
740
+ "internalType": "bytes",
741
+ "name": "applicationData",
742
+ "type": "bytes"
743
+ },
744
+ {
745
+ "internalType": "bytes",
746
+ "name": "policyData",
747
+ "type": "bytes"
748
+ },
749
+ {
750
+ "internalType": "uint16",
751
+ "name": "claimsCount",
752
+ "type": "uint16"
753
+ },
754
+ {
755
+ "internalType": "uint16",
756
+ "name": "openClaimsCount",
757
+ "type": "uint16"
758
+ },
759
+ {
760
+ "internalType": "uint256",
761
+ "name": "payoutAmount",
762
+ "type": "uint256"
763
+ },
764
+ {
765
+ "internalType": "Timestamp",
766
+ "name": "activatedAt",
767
+ "type": "uint40"
768
+ },
769
+ {
770
+ "internalType": "Timestamp",
771
+ "name": "expiredAt",
772
+ "type": "uint40"
773
+ },
774
+ {
775
+ "internalType": "Timestamp",
776
+ "name": "closedAt",
777
+ "type": "uint40"
778
+ }
779
+ ],
780
+ "internalType": "struct IPolicy.PolicyInfo",
781
+ "name": "policy",
782
+ "type": "tuple"
334
783
  }
335
784
  ],
336
- "name": "createPolicyInfo",
785
+ "name": "createPolicy",
337
786
  "outputs": [],
338
787
  "stateMutability": "nonpayable",
339
788
  "type": "function"
340
789
  },
341
790
  {
342
791
  "inputs": [
343
- {
344
- "internalType": "RiskId",
345
- "name": "riskId",
346
- "type": "bytes8"
347
- },
348
792
  {
349
793
  "internalType": "NftId",
350
- "name": "productNftId",
794
+ "name": "poolNftId",
351
795
  "type": "uint96"
352
796
  },
353
797
  {
354
- "internalType": "bytes",
355
- "name": "data",
356
- "type": "bytes"
798
+ "components": [
799
+ {
800
+ "internalType": "NftId",
801
+ "name": "productNftId",
802
+ "type": "uint96"
803
+ },
804
+ {
805
+ "internalType": "contract TokenHandler",
806
+ "name": "tokenHandler",
807
+ "type": "address"
808
+ },
809
+ {
810
+ "internalType": "UFixed",
811
+ "name": "collateralizationLevel",
812
+ "type": "uint256"
813
+ },
814
+ {
815
+ "components": [
816
+ {
817
+ "internalType": "UFixed",
818
+ "name": "fractionalFee",
819
+ "type": "uint256"
820
+ },
821
+ {
822
+ "internalType": "uint256",
823
+ "name": "fixedFee",
824
+ "type": "uint256"
825
+ }
826
+ ],
827
+ "internalType": "struct Fee",
828
+ "name": "poolFee",
829
+ "type": "tuple"
830
+ },
831
+ {
832
+ "components": [
833
+ {
834
+ "internalType": "UFixed",
835
+ "name": "fractionalFee",
836
+ "type": "uint256"
837
+ },
838
+ {
839
+ "internalType": "uint256",
840
+ "name": "fixedFee",
841
+ "type": "uint256"
842
+ }
843
+ ],
844
+ "internalType": "struct Fee",
845
+ "name": "stakingFee",
846
+ "type": "tuple"
847
+ },
848
+ {
849
+ "components": [
850
+ {
851
+ "internalType": "UFixed",
852
+ "name": "fractionalFee",
853
+ "type": "uint256"
854
+ },
855
+ {
856
+ "internalType": "uint256",
857
+ "name": "fixedFee",
858
+ "type": "uint256"
859
+ }
860
+ ],
861
+ "internalType": "struct Fee",
862
+ "name": "performanceFee",
863
+ "type": "tuple"
864
+ },
865
+ {
866
+ "internalType": "bool",
867
+ "name": "isIntercepting",
868
+ "type": "bool"
869
+ },
870
+ {
871
+ "internalType": "bool",
872
+ "name": "isConfirmingApplication",
873
+ "type": "bool"
874
+ },
875
+ {
876
+ "internalType": "address",
877
+ "name": "wallet",
878
+ "type": "address"
879
+ }
880
+ ],
881
+ "internalType": "struct ISetup.PoolSetupInfo",
882
+ "name": "setup",
883
+ "type": "tuple"
357
884
  }
358
885
  ],
359
- "name": "createRisk",
886
+ "name": "createPoolSetup",
360
887
  "outputs": [],
361
888
  "stateMutability": "nonpayable",
362
889
  "type": "function"
363
890
  },
364
- {
365
- "inputs": [
366
- {
367
- "internalType": "string",
368
- "name": "roleName",
369
- "type": "string"
370
- }
371
- ],
372
- "name": "createRole",
373
- "outputs": [
374
- {
375
- "internalType": "RoleId",
376
- "name": "role",
377
- "type": "bytes8"
378
- }
379
- ],
380
- "stateMutability": "nonpayable",
381
- "type": "function"
382
- },
383
- {
384
- "inputs": [
385
- {
386
- "internalType": "NftId",
387
- "name": "poolNftId",
388
- "type": "uint96"
389
- }
390
- ],
391
- "name": "getBundleCount",
392
- "outputs": [
393
- {
394
- "internalType": "uint256",
395
- "name": "bundleCount",
396
- "type": "uint256"
397
- }
398
- ],
399
- "stateMutability": "view",
400
- "type": "function"
401
- },
402
891
  {
403
892
  "inputs": [
404
893
  {
405
894
  "internalType": "NftId",
406
- "name": "bundleNftId",
895
+ "name": "productNftId",
407
896
  "type": "uint96"
408
- }
409
- ],
410
- "name": "getBundleInfo",
411
- "outputs": [
897
+ },
412
898
  {
413
899
  "components": [
900
+ {
901
+ "internalType": "contract IERC20Metadata",
902
+ "name": "token",
903
+ "type": "address"
904
+ },
905
+ {
906
+ "internalType": "contract TokenHandler",
907
+ "name": "tokenHandler",
908
+ "type": "address"
909
+ },
910
+ {
911
+ "internalType": "NftId",
912
+ "name": "distributionNftId",
913
+ "type": "uint96"
914
+ },
414
915
  {
415
916
  "internalType": "NftId",
416
917
  "name": "poolNftId",
@@ -430,130 +931,274 @@
430
931
  }
431
932
  ],
432
933
  "internalType": "struct Fee",
433
- "name": "fee",
934
+ "name": "distributionFee",
434
935
  "type": "tuple"
435
936
  },
436
937
  {
437
- "internalType": "bytes",
438
- "name": "filter",
439
- "type": "bytes"
938
+ "components": [
939
+ {
940
+ "internalType": "UFixed",
941
+ "name": "fractionalFee",
942
+ "type": "uint256"
943
+ },
944
+ {
945
+ "internalType": "uint256",
946
+ "name": "fixedFee",
947
+ "type": "uint256"
948
+ }
949
+ ],
950
+ "internalType": "struct Fee",
951
+ "name": "productFee",
952
+ "type": "tuple"
440
953
  },
441
954
  {
442
- "internalType": "uint256",
443
- "name": "capitalAmount",
444
- "type": "uint256"
955
+ "components": [
956
+ {
957
+ "internalType": "UFixed",
958
+ "name": "fractionalFee",
959
+ "type": "uint256"
960
+ },
961
+ {
962
+ "internalType": "uint256",
963
+ "name": "fixedFee",
964
+ "type": "uint256"
965
+ }
966
+ ],
967
+ "internalType": "struct Fee",
968
+ "name": "processingFee",
969
+ "type": "tuple"
445
970
  },
446
971
  {
447
- "internalType": "uint256",
448
- "name": "lockedAmount",
449
- "type": "uint256"
972
+ "components": [
973
+ {
974
+ "internalType": "UFixed",
975
+ "name": "fractionalFee",
976
+ "type": "uint256"
977
+ },
978
+ {
979
+ "internalType": "uint256",
980
+ "name": "fixedFee",
981
+ "type": "uint256"
982
+ }
983
+ ],
984
+ "internalType": "struct Fee",
985
+ "name": "poolFee",
986
+ "type": "tuple"
450
987
  },
451
988
  {
452
- "internalType": "uint256",
453
- "name": "balanceAmount",
454
- "type": "uint256"
989
+ "components": [
990
+ {
991
+ "internalType": "UFixed",
992
+ "name": "fractionalFee",
993
+ "type": "uint256"
994
+ },
995
+ {
996
+ "internalType": "uint256",
997
+ "name": "fixedFee",
998
+ "type": "uint256"
999
+ }
1000
+ ],
1001
+ "internalType": "struct Fee",
1002
+ "name": "stakingFee",
1003
+ "type": "tuple"
455
1004
  },
456
1005
  {
457
- "internalType": "Timestamp",
458
- "name": "expiredAt",
459
- "type": "uint40"
1006
+ "components": [
1007
+ {
1008
+ "internalType": "UFixed",
1009
+ "name": "fractionalFee",
1010
+ "type": "uint256"
1011
+ },
1012
+ {
1013
+ "internalType": "uint256",
1014
+ "name": "fixedFee",
1015
+ "type": "uint256"
1016
+ }
1017
+ ],
1018
+ "internalType": "struct Fee",
1019
+ "name": "performanceFee",
1020
+ "type": "tuple"
460
1021
  },
461
1022
  {
462
- "internalType": "Timestamp",
463
- "name": "closedAt",
464
- "type": "uint40"
1023
+ "internalType": "bool",
1024
+ "name": "isIntercepting",
1025
+ "type": "bool"
1026
+ },
1027
+ {
1028
+ "internalType": "address",
1029
+ "name": "wallet",
1030
+ "type": "address"
465
1031
  }
466
1032
  ],
467
- "internalType": "struct IBundle.BundleInfo",
468
- "name": "bundleInfo",
1033
+ "internalType": "struct ISetup.ProductSetupInfo",
1034
+ "name": "setup",
469
1035
  "type": "tuple"
470
1036
  }
471
1037
  ],
472
- "stateMutability": "view",
1038
+ "name": "createProductSetup",
1039
+ "outputs": [],
1040
+ "stateMutability": "nonpayable",
473
1041
  "type": "function"
474
1042
  },
475
1043
  {
476
1044
  "inputs": [
477
1045
  {
478
1046
  "internalType": "NftId",
479
- "name": "poolNftId",
1047
+ "name": "policyNftId",
480
1048
  "type": "uint96"
481
1049
  },
482
1050
  {
483
- "internalType": "uint256",
484
- "name": "index",
485
- "type": "uint256"
486
- }
487
- ],
488
- "name": "getBundleNftId",
489
- "outputs": [
1051
+ "internalType": "NumberId",
1052
+ "name": "payoutId",
1053
+ "type": "uint32"
1054
+ },
490
1055
  {
491
- "internalType": "NftId",
492
- "name": "bundleNftId",
493
- "type": "uint96"
1056
+ "components": [
1057
+ {
1058
+ "internalType": "NumberId",
1059
+ "name": "claimId",
1060
+ "type": "uint32"
1061
+ },
1062
+ {
1063
+ "internalType": "uint256",
1064
+ "name": "amount",
1065
+ "type": "uint256"
1066
+ },
1067
+ {
1068
+ "internalType": "bytes",
1069
+ "name": "data",
1070
+ "type": "bytes"
1071
+ },
1072
+ {
1073
+ "internalType": "Timestamp",
1074
+ "name": "paidAt",
1075
+ "type": "uint40"
1076
+ }
1077
+ ],
1078
+ "internalType": "struct IPolicy.PayoutInfo",
1079
+ "name": "payout",
1080
+ "type": "tuple"
494
1081
  }
495
1082
  ],
496
- "stateMutability": "view",
1083
+ "name": "createReferral",
1084
+ "outputs": [],
1085
+ "stateMutability": "nonpayable",
497
1086
  "type": "function"
498
1087
  },
499
1088
  {
500
- "inputs": [],
501
- "name": "getComponentCount",
502
- "outputs": [
1089
+ "inputs": [
1090
+ {
1091
+ "internalType": "RiskId",
1092
+ "name": "riskId",
1093
+ "type": "bytes8"
1094
+ },
503
1095
  {
504
- "internalType": "uint256",
505
- "name": "numberOfCompnents",
506
- "type": "uint256"
1096
+ "components": [
1097
+ {
1098
+ "internalType": "NftId",
1099
+ "name": "productNftId",
1100
+ "type": "uint96"
1101
+ },
1102
+ {
1103
+ "internalType": "bytes",
1104
+ "name": "data",
1105
+ "type": "bytes"
1106
+ }
1107
+ ],
1108
+ "internalType": "struct IRisk.RiskInfo",
1109
+ "name": "risk",
1110
+ "type": "tuple"
507
1111
  }
508
1112
  ],
509
- "stateMutability": "view",
1113
+ "name": "createRisk",
1114
+ "outputs": [],
1115
+ "stateMutability": "nonpayable",
510
1116
  "type": "function"
511
1117
  },
512
1118
  {
513
1119
  "inputs": [
514
1120
  {
515
- "internalType": "uint256",
516
- "name": "idx",
517
- "type": "uint256"
1121
+ "internalType": "Key32",
1122
+ "name": "key32",
1123
+ "type": "bytes32"
518
1124
  }
519
1125
  ],
520
- "name": "getComponentId",
1126
+ "name": "exists",
521
1127
  "outputs": [
522
1128
  {
523
- "internalType": "NftId",
524
- "name": "componentNftId",
525
- "type": "uint96"
1129
+ "internalType": "bool",
1130
+ "name": "",
1131
+ "type": "bool"
526
1132
  }
527
1133
  ],
528
1134
  "stateMutability": "view",
529
1135
  "type": "function"
530
1136
  },
531
1137
  {
532
- "inputs": [],
533
- "name": "getComponentOwnerService",
1138
+ "inputs": [
1139
+ {
1140
+ "internalType": "Key32",
1141
+ "name": "key32",
1142
+ "type": "bytes32"
1143
+ }
1144
+ ],
1145
+ "name": "get",
534
1146
  "outputs": [
535
1147
  {
536
- "internalType": "contract IComponentOwnerService",
537
- "name": "service",
538
- "type": "address"
1148
+ "components": [
1149
+ {
1150
+ "components": [
1151
+ {
1152
+ "internalType": "ObjectType",
1153
+ "name": "objectType",
1154
+ "type": "uint8"
1155
+ },
1156
+ {
1157
+ "internalType": "StateId",
1158
+ "name": "state",
1159
+ "type": "uint8"
1160
+ },
1161
+ {
1162
+ "internalType": "address",
1163
+ "name": "updatedBy",
1164
+ "type": "address"
1165
+ },
1166
+ {
1167
+ "internalType": "Blocknumber",
1168
+ "name": "updatedIn",
1169
+ "type": "uint32"
1170
+ },
1171
+ {
1172
+ "internalType": "Blocknumber",
1173
+ "name": "createdIn",
1174
+ "type": "uint32"
1175
+ }
1176
+ ],
1177
+ "internalType": "struct IKeyValueStore.Metadata",
1178
+ "name": "metadata",
1179
+ "type": "tuple"
1180
+ },
1181
+ {
1182
+ "internalType": "bytes",
1183
+ "name": "data",
1184
+ "type": "bytes"
1185
+ }
1186
+ ],
1187
+ "internalType": "struct IKeyValueStore.Value",
1188
+ "name": "value",
1189
+ "type": "tuple"
539
1190
  }
540
1191
  ],
541
1192
  "stateMutability": "view",
542
1193
  "type": "function"
543
1194
  },
544
1195
  {
545
- "inputs": [
546
- {
547
- "internalType": "NftId",
548
- "name": "nftId",
549
- "type": "uint96"
550
- }
551
- ],
552
- "name": "getComponentToken",
1196
+ "inputs": [],
1197
+ "name": "getBundleManager",
553
1198
  "outputs": [
554
1199
  {
555
- "internalType": "contract IERC20Metadata",
556
- "name": "token",
1200
+ "internalType": "contract BundleManager",
1201
+ "name": "",
557
1202
  "type": "address"
558
1203
  }
559
1204
  ],
@@ -561,18 +1206,12 @@
561
1206
  "type": "function"
562
1207
  },
563
1208
  {
564
- "inputs": [
565
- {
566
- "internalType": "NftId",
567
- "name": "nftId",
568
- "type": "uint96"
569
- }
570
- ],
571
- "name": "getComponentWallet",
1209
+ "inputs": [],
1210
+ "name": "getBundleService",
572
1211
  "outputs": [
573
1212
  {
574
- "internalType": "address",
575
- "name": "wallet",
1213
+ "internalType": "contract IBundleService",
1214
+ "name": "",
576
1215
  "type": "address"
577
1216
  }
578
1217
  ],
@@ -580,7 +1219,13 @@
580
1219
  "type": "function"
581
1220
  },
582
1221
  {
583
- "inputs": [],
1222
+ "inputs": [
1223
+ {
1224
+ "internalType": "Key32",
1225
+ "name": "key32",
1226
+ "type": "bytes32"
1227
+ }
1228
+ ],
584
1229
  "name": "getData",
585
1230
  "outputs": [
586
1231
  {
@@ -598,7 +1243,7 @@
598
1243
  "outputs": [
599
1244
  {
600
1245
  "internalType": "contract IDistributionService",
601
- "name": "service",
1246
+ "name": "",
602
1247
  "type": "address"
603
1248
  }
604
1249
  ],
@@ -606,75 +1251,74 @@
606
1251
  "type": "function"
607
1252
  },
608
1253
  {
609
- "inputs": [
610
- {
611
- "internalType": "UFixed",
612
- "name": "fractionalFee",
613
- "type": "uint256"
614
- },
615
- {
616
- "internalType": "uint256",
617
- "name": "fixedFee",
618
- "type": "uint256"
619
- }
620
- ],
621
- "name": "getFee",
1254
+ "inputs": [],
1255
+ "name": "getInitialInfo",
622
1256
  "outputs": [
623
1257
  {
624
1258
  "components": [
625
1259
  {
626
- "internalType": "UFixed",
627
- "name": "fractionalFee",
628
- "type": "uint256"
1260
+ "internalType": "NftId",
1261
+ "name": "nftId",
1262
+ "type": "uint96"
629
1263
  },
630
1264
  {
631
- "internalType": "uint256",
632
- "name": "fixedFee",
633
- "type": "uint256"
1265
+ "internalType": "NftId",
1266
+ "name": "parentNftId",
1267
+ "type": "uint96"
1268
+ },
1269
+ {
1270
+ "internalType": "ObjectType",
1271
+ "name": "objectType",
1272
+ "type": "uint8"
1273
+ },
1274
+ {
1275
+ "internalType": "bool",
1276
+ "name": "isInterceptor",
1277
+ "type": "bool"
1278
+ },
1279
+ {
1280
+ "internalType": "address",
1281
+ "name": "objectAddress",
1282
+ "type": "address"
1283
+ },
1284
+ {
1285
+ "internalType": "address",
1286
+ "name": "initialOwner",
1287
+ "type": "address"
1288
+ },
1289
+ {
1290
+ "internalType": "bytes",
1291
+ "name": "data",
1292
+ "type": "bytes"
634
1293
  }
635
1294
  ],
636
- "internalType": "struct Fee",
637
- "name": "fee",
1295
+ "internalType": "struct IRegistry.ObjectInfo",
1296
+ "name": "",
638
1297
  "type": "tuple"
639
- }
640
- ],
641
- "stateMutability": "pure",
642
- "type": "function"
643
- },
644
- {
645
- "inputs": [],
646
- "name": "getInitializedVersion",
647
- "outputs": [
1298
+ },
648
1299
  {
649
- "internalType": "uint64",
650
- "name": "",
651
- "type": "uint64"
1300
+ "internalType": "bytes",
1301
+ "name": "data",
1302
+ "type": "bytes"
652
1303
  }
653
1304
  ],
654
1305
  "stateMutability": "view",
655
1306
  "type": "function"
656
1307
  },
657
1308
  {
658
- "inputs": [],
659
- "name": "getKeyValueStore",
660
- "outputs": [
1309
+ "inputs": [
661
1310
  {
662
- "internalType": "contract IKeyValueStore",
663
- "name": "keyValueStore",
664
- "type": "address"
1311
+ "internalType": "ObjectType",
1312
+ "name": "objectType",
1313
+ "type": "uint8"
665
1314
  }
666
1315
  ],
667
- "stateMutability": "view",
668
- "type": "function"
669
- },
670
- {
671
- "inputs": [],
672
- "name": "getNftId",
1316
+ "name": "getInitialState",
673
1317
  "outputs": [
674
1318
  {
675
- "internalType": "NftId",
676
- "name": "nftId",
677
- "type": "uint96"
1319
+ "internalType": "StateId",
1320
+ "name": "",
1321
+ "type": "uint8"
678
1322
  }
679
1323
  ],
680
1324
  "stateMutability": "view",
@@ -682,115 +1326,57 @@
682
1326
  },
683
1327
  {
684
1328
  "inputs": [],
685
- "name": "getOwner",
1329
+ "name": "getInstanceReader",
686
1330
  "outputs": [
687
1331
  {
688
- "internalType": "address",
689
- "name": "owner",
1332
+ "internalType": "contract InstanceReader",
1333
+ "name": "",
690
1334
  "type": "address"
691
1335
  }
692
1336
  ],
693
1337
  "stateMutability": "view",
694
1338
  "type": "function"
695
1339
  },
696
- {
697
- "inputs": [],
698
- "name": "getParentNftId",
699
- "outputs": [
700
- {
701
- "internalType": "NftId",
702
- "name": "nftId",
703
- "type": "uint96"
704
- }
705
- ],
706
- "stateMutability": "view",
707
- "type": "function"
708
- },
709
1340
  {
710
1341
  "inputs": [
711
1342
  {
712
- "internalType": "NftId",
713
- "name": "nftId",
714
- "type": "uint96"
1343
+ "internalType": "Key32",
1344
+ "name": "key32",
1345
+ "type": "bytes32"
715
1346
  }
716
1347
  ],
717
- "name": "getPolicyInfo",
1348
+ "name": "getMetadata",
718
1349
  "outputs": [
719
1350
  {
720
1351
  "components": [
721
1352
  {
722
- "internalType": "NftId",
723
- "name": "productNftId",
724
- "type": "uint96"
725
- },
726
- {
727
- "internalType": "NftId",
728
- "name": "bundleNftId",
729
- "type": "uint96"
1353
+ "internalType": "ObjectType",
1354
+ "name": "objectType",
1355
+ "type": "uint8"
730
1356
  },
731
1357
  {
732
- "internalType": "ReferralId",
733
- "name": "referralId",
734
- "type": "bytes8"
1358
+ "internalType": "StateId",
1359
+ "name": "state",
1360
+ "type": "uint8"
735
1361
  },
736
1362
  {
737
1363
  "internalType": "address",
738
- "name": "beneficiary",
1364
+ "name": "updatedBy",
739
1365
  "type": "address"
740
1366
  },
741
1367
  {
742
- "internalType": "RiskId",
743
- "name": "riskId",
744
- "type": "bytes8"
745
- },
746
- {
747
- "internalType": "uint256",
748
- "name": "sumInsuredAmount",
749
- "type": "uint256"
750
- },
751
- {
752
- "internalType": "uint256",
753
- "name": "premiumAmount",
754
- "type": "uint256"
755
- },
756
- {
757
- "internalType": "uint256",
758
- "name": "premiumPaidAmount",
759
- "type": "uint256"
760
- },
761
- {
762
- "internalType": "uint256",
763
- "name": "lifetime",
764
- "type": "uint256"
765
- },
766
- {
767
- "internalType": "bytes",
768
- "name": "applicationData",
769
- "type": "bytes"
770
- },
771
- {
772
- "internalType": "bytes",
773
- "name": "policyData",
774
- "type": "bytes"
775
- },
776
- {
777
- "internalType": "Timestamp",
778
- "name": "activatedAt",
779
- "type": "uint40"
780
- },
781
- {
782
- "internalType": "Timestamp",
783
- "name": "expiredAt",
784
- "type": "uint40"
1368
+ "internalType": "Blocknumber",
1369
+ "name": "updatedIn",
1370
+ "type": "uint32"
785
1371
  },
786
1372
  {
787
- "internalType": "Timestamp",
788
- "name": "closedAt",
789
- "type": "uint40"
1373
+ "internalType": "Blocknumber",
1374
+ "name": "createdIn",
1375
+ "type": "uint32"
790
1376
  }
791
1377
  ],
792
- "internalType": "struct IPolicy.PolicyInfo",
793
- "name": "info",
1378
+ "internalType": "struct IKeyValueStore.Metadata",
1379
+ "name": "metadata",
794
1380
  "type": "tuple"
795
1381
  }
796
1382
  ],
@@ -798,31 +1384,26 @@
798
1384
  "type": "function"
799
1385
  },
800
1386
  {
801
- "inputs": [
1387
+ "inputs": [],
1388
+ "name": "getNftId",
1389
+ "outputs": [
802
1390
  {
803
1391
  "internalType": "NftId",
804
- "name": "nftId",
1392
+ "name": "",
805
1393
  "type": "uint96"
806
1394
  }
807
1395
  ],
808
- "name": "getPoolInfo",
1396
+ "stateMutability": "view",
1397
+ "type": "function"
1398
+ },
1399
+ {
1400
+ "inputs": [],
1401
+ "name": "getOwner",
809
1402
  "outputs": [
810
1403
  {
811
- "components": [
812
- {
813
- "internalType": "bool",
814
- "name": "isVerifying",
815
- "type": "bool"
816
- },
817
- {
818
- "internalType": "UFixed",
819
- "name": "collateralizationLevel",
820
- "type": "uint256"
821
- }
822
- ],
823
- "internalType": "struct IPool.PoolInfo",
824
- "name": "info",
825
- "type": "tuple"
1404
+ "internalType": "address",
1405
+ "name": "",
1406
+ "type": "address"
826
1407
  }
827
1408
  ],
828
1409
  "stateMutability": "view",
@@ -830,11 +1411,11 @@
830
1411
  },
831
1412
  {
832
1413
  "inputs": [],
833
- "name": "getPoolService",
1414
+ "name": "getPolicyService",
834
1415
  "outputs": [
835
1416
  {
836
- "internalType": "contract IPoolService",
837
- "name": "service",
1417
+ "internalType": "contract IPolicyService",
1418
+ "name": "",
838
1419
  "type": "address"
839
1420
  }
840
1421
  ],
@@ -842,19 +1423,13 @@
842
1423
  "type": "function"
843
1424
  },
844
1425
  {
845
- "inputs": [
846
- {
847
- "internalType": "NftId",
848
- "name": "componentNftId",
849
- "type": "uint96"
850
- }
851
- ],
852
- "name": "getProductNftId",
1426
+ "inputs": [],
1427
+ "name": "getPoolService",
853
1428
  "outputs": [
854
1429
  {
855
- "internalType": "NftId",
856
- "name": "productNftId",
857
- "type": "uint96"
1430
+ "internalType": "contract IPoolService",
1431
+ "name": "",
1432
+ "type": "address"
858
1433
  }
859
1434
  ],
860
1435
  "stateMutability": "view",
@@ -866,7 +1441,7 @@
866
1441
  "outputs": [
867
1442
  {
868
1443
  "internalType": "contract IProductService",
869
- "name": "service",
1444
+ "name": "",
870
1445
  "type": "address"
871
1446
  }
872
1447
  ],
@@ -879,7 +1454,7 @@
879
1454
  "outputs": [
880
1455
  {
881
1456
  "internalType": "contract IRegistry",
882
- "name": "registry",
1457
+ "name": "",
883
1458
  "type": "address"
884
1459
  }
885
1460
  ],
@@ -889,29 +1464,36 @@
889
1464
  {
890
1465
  "inputs": [
891
1466
  {
892
- "internalType": "RiskId",
893
- "name": "riskId",
894
- "type": "bytes8"
1467
+ "internalType": "Key32",
1468
+ "name": "key32",
1469
+ "type": "bytes32"
895
1470
  }
896
1471
  ],
897
- "name": "getRiskInfo",
1472
+ "name": "getState",
898
1473
  "outputs": [
899
1474
  {
900
- "components": [
901
- {
902
- "internalType": "NftId",
903
- "name": "productNftId",
904
- "type": "uint96"
905
- },
906
- {
907
- "internalType": "bytes",
908
- "name": "data",
909
- "type": "bytes"
910
- }
911
- ],
912
- "internalType": "struct IRisk.RiskInfo",
913
- "name": "info",
914
- "type": "tuple"
1475
+ "internalType": "StateId",
1476
+ "name": "state",
1477
+ "type": "uint8"
1478
+ }
1479
+ ],
1480
+ "stateMutability": "view",
1481
+ "type": "function"
1482
+ },
1483
+ {
1484
+ "inputs": [
1485
+ {
1486
+ "internalType": "ObjectType",
1487
+ "name": "objectType",
1488
+ "type": "uint8"
1489
+ }
1490
+ ],
1491
+ "name": "hasLifecycle",
1492
+ "outputs": [
1493
+ {
1494
+ "internalType": "bool",
1495
+ "name": "",
1496
+ "type": "bool"
915
1497
  }
916
1498
  ],
917
1499
  "stateMutability": "view",
@@ -920,30 +1502,39 @@
920
1502
  {
921
1503
  "inputs": [
922
1504
  {
923
- "internalType": "uint256",
924
- "name": "idx",
925
- "type": "uint256"
926
- }
927
- ],
928
- "name": "getRole",
929
- "outputs": [
1505
+ "internalType": "address",
1506
+ "name": "accessManagerAddress",
1507
+ "type": "address"
1508
+ },
930
1509
  {
931
- "internalType": "RoleId",
932
- "name": "role",
933
- "type": "bytes8"
1510
+ "internalType": "address",
1511
+ "name": "registryAddress",
1512
+ "type": "address"
1513
+ },
1514
+ {
1515
+ "internalType": "NftId",
1516
+ "name": "registryNftId",
1517
+ "type": "uint96"
1518
+ },
1519
+ {
1520
+ "internalType": "address",
1521
+ "name": "initialOwner",
1522
+ "type": "address"
934
1523
  }
935
1524
  ],
936
- "stateMutability": "view",
1525
+ "name": "initialize",
1526
+ "outputs": [],
1527
+ "stateMutability": "nonpayable",
937
1528
  "type": "function"
938
1529
  },
939
1530
  {
940
1531
  "inputs": [],
941
- "name": "getRoleCount",
1532
+ "name": "isConsumingScheduledOp",
942
1533
  "outputs": [
943
1534
  {
944
- "internalType": "uint256",
945
- "name": "roles",
946
- "type": "uint256"
1535
+ "internalType": "bytes4",
1536
+ "name": "",
1537
+ "type": "bytes4"
947
1538
  }
948
1539
  ],
949
1540
  "stateMutability": "view",
@@ -952,77 +1543,92 @@
952
1543
  {
953
1544
  "inputs": [
954
1545
  {
955
- "internalType": "string",
956
- "name": "roleName",
957
- "type": "string"
1546
+ "internalType": "ObjectType",
1547
+ "name": "objectType",
1548
+ "type": "uint8"
1549
+ },
1550
+ {
1551
+ "internalType": "StateId",
1552
+ "name": "fromId",
1553
+ "type": "uint8"
1554
+ },
1555
+ {
1556
+ "internalType": "StateId",
1557
+ "name": "toId",
1558
+ "type": "uint8"
958
1559
  }
959
1560
  ],
960
- "name": "getRoleId",
1561
+ "name": "isValidTransition",
961
1562
  "outputs": [
962
1563
  {
963
- "internalType": "RoleId",
964
- "name": "role",
965
- "type": "bytes8"
1564
+ "internalType": "bool",
1565
+ "name": "",
1566
+ "type": "bool"
966
1567
  }
967
1568
  ],
968
- "stateMutability": "pure",
1569
+ "stateMutability": "view",
1570
+ "type": "function"
1571
+ },
1572
+ {
1573
+ "inputs": [],
1574
+ "name": "linkToRegisteredNftId",
1575
+ "outputs": [],
1576
+ "stateMutability": "nonpayable",
969
1577
  "type": "function"
970
1578
  },
971
1579
  {
972
1580
  "inputs": [
973
1581
  {
974
- "internalType": "RoleId",
975
- "name": "role",
976
- "type": "bytes8"
1582
+ "internalType": "address",
1583
+ "name": "newAuthority",
1584
+ "type": "address"
977
1585
  }
978
1586
  ],
979
- "name": "getRoleInfo",
980
- "outputs": [
1587
+ "name": "setAuthority",
1588
+ "outputs": [],
1589
+ "stateMutability": "nonpayable",
1590
+ "type": "function"
1591
+ },
1592
+ {
1593
+ "inputs": [
981
1594
  {
982
- "components": [
983
- {
984
- "internalType": "RoleId",
985
- "name": "id",
986
- "type": "bytes8"
987
- },
988
- {
989
- "internalType": "string",
990
- "name": "name",
991
- "type": "string"
992
- },
993
- {
994
- "internalType": "bool",
995
- "name": "isActive",
996
- "type": "bool"
997
- }
998
- ],
999
- "internalType": "struct IAccess.RoleInfo",
1000
- "name": "info",
1001
- "type": "tuple"
1595
+ "internalType": "contract BundleManager",
1596
+ "name": "bundleManager",
1597
+ "type": "address"
1002
1598
  }
1003
1599
  ],
1004
- "stateMutability": "view",
1600
+ "name": "setBundleManager",
1601
+ "outputs": [],
1602
+ "stateMutability": "nonpayable",
1005
1603
  "type": "function"
1006
1604
  },
1007
1605
  {
1008
1606
  "inputs": [
1009
1607
  {
1010
- "internalType": "RoleId",
1011
- "name": "role",
1012
- "type": "bytes8"
1013
- },
1608
+ "internalType": "contract InstanceReader",
1609
+ "name": "instanceReader",
1610
+ "type": "address"
1611
+ }
1612
+ ],
1613
+ "name": "setInstanceReader",
1614
+ "outputs": [],
1615
+ "stateMutability": "nonpayable",
1616
+ "type": "function"
1617
+ },
1618
+ {
1619
+ "inputs": [
1014
1620
  {
1015
- "internalType": "uint256",
1016
- "name": "idx",
1017
- "type": "uint256"
1621
+ "internalType": "bytes4",
1622
+ "name": "interfaceId",
1623
+ "type": "bytes4"
1018
1624
  }
1019
1625
  ],
1020
- "name": "getRoleMember",
1626
+ "name": "supportsInterface",
1021
1627
  "outputs": [
1022
1628
  {
1023
- "internalType": "address",
1024
- "name": "roleMembers",
1025
- "type": "address"
1629
+ "internalType": "bool",
1630
+ "name": "",
1631
+ "type": "bool"
1026
1632
  }
1027
1633
  ],
1028
1634
  "stateMutability": "view",
@@ -1031,70 +1637,72 @@
1031
1637
  {
1032
1638
  "inputs": [
1033
1639
  {
1034
- "internalType": "RoleId",
1035
- "name": "role",
1036
- "type": "bytes8"
1640
+ "internalType": "NftId",
1641
+ "name": "bundleNftId",
1642
+ "type": "uint96"
1037
1643
  }
1038
1644
  ],
1039
- "name": "getRoleMemberCount",
1645
+ "name": "toBundleKey32",
1040
1646
  "outputs": [
1041
1647
  {
1042
- "internalType": "uint256",
1043
- "name": "roleMembers",
1044
- "type": "uint256"
1648
+ "internalType": "Key32",
1649
+ "name": "",
1650
+ "type": "bytes32"
1045
1651
  }
1046
1652
  ],
1047
- "stateMutability": "view",
1653
+ "stateMutability": "pure",
1048
1654
  "type": "function"
1049
1655
  },
1050
1656
  {
1051
1657
  "inputs": [
1052
1658
  {
1053
- "internalType": "Key32",
1054
- "name": "key",
1055
- "type": "bytes32"
1659
+ "internalType": "ObjectType",
1660
+ "name": "objectType",
1661
+ "type": "uint8"
1662
+ },
1663
+ {
1664
+ "internalType": "KeyId",
1665
+ "name": "id",
1666
+ "type": "bytes31"
1056
1667
  }
1057
1668
  ],
1058
- "name": "getState",
1669
+ "name": "toKey32",
1059
1670
  "outputs": [
1060
1671
  {
1061
- "internalType": "StateId",
1062
- "name": "state",
1063
- "type": "uint8"
1672
+ "internalType": "Key32",
1673
+ "name": "",
1674
+ "type": "bytes32"
1064
1675
  }
1065
1676
  ],
1066
- "stateMutability": "view",
1677
+ "stateMutability": "pure",
1067
1678
  "type": "function"
1068
1679
  },
1069
1680
  {
1070
1681
  "inputs": [
1071
1682
  {
1072
1683
  "internalType": "NftId",
1073
- "name": "componentNftId",
1684
+ "name": "policyNftId",
1074
1685
  "type": "uint96"
1075
1686
  }
1076
1687
  ],
1077
- "name": "getTokenHandler",
1688
+ "name": "toPolicyKey32",
1078
1689
  "outputs": [
1079
1690
  {
1080
- "internalType": "contract TokenHandler",
1081
- "name": "tokenHandler",
1082
- "type": "address"
1691
+ "internalType": "Key32",
1692
+ "name": "",
1693
+ "type": "bytes32"
1083
1694
  }
1084
1695
  ],
1085
- "stateMutability": "view",
1696
+ "stateMutability": "pure",
1086
1697
  "type": "function"
1087
1698
  },
1088
1699
  {
1089
1700
  "inputs": [
1090
1701
  {
1091
1702
  "internalType": "NftId",
1092
- "name": "productNftId",
1703
+ "name": "bundleNftId",
1093
1704
  "type": "uint96"
1094
- }
1095
- ],
1096
- "name": "getTreasuryInfo",
1097
- "outputs": [
1705
+ },
1098
1706
  {
1099
1707
  "components": [
1100
1708
  {
@@ -1102,16 +1710,6 @@
1102
1710
  "name": "poolNftId",
1103
1711
  "type": "uint96"
1104
1712
  },
1105
- {
1106
- "internalType": "NftId",
1107
- "name": "distributionNftId",
1108
- "type": "uint96"
1109
- },
1110
- {
1111
- "internalType": "contract IERC20Metadata",
1112
- "name": "token",
1113
- "type": "address"
1114
- },
1115
1713
  {
1116
1714
  "components": [
1117
1715
  {
@@ -1126,289 +1724,174 @@
1126
1724
  }
1127
1725
  ],
1128
1726
  "internalType": "struct Fee",
1129
- "name": "productFee",
1727
+ "name": "fee",
1130
1728
  "type": "tuple"
1131
1729
  },
1132
1730
  {
1133
- "components": [
1134
- {
1135
- "internalType": "UFixed",
1136
- "name": "fractionalFee",
1137
- "type": "uint256"
1138
- },
1139
- {
1140
- "internalType": "uint256",
1141
- "name": "fixedFee",
1142
- "type": "uint256"
1143
- }
1144
- ],
1145
- "internalType": "struct Fee",
1146
- "name": "processingFee",
1147
- "type": "tuple"
1731
+ "internalType": "bytes",
1732
+ "name": "filter",
1733
+ "type": "bytes"
1148
1734
  },
1149
1735
  {
1150
- "components": [
1151
- {
1152
- "internalType": "UFixed",
1153
- "name": "fractionalFee",
1154
- "type": "uint256"
1155
- },
1156
- {
1157
- "internalType": "uint256",
1158
- "name": "fixedFee",
1159
- "type": "uint256"
1160
- }
1161
- ],
1162
- "internalType": "struct Fee",
1163
- "name": "poolFee",
1164
- "type": "tuple"
1736
+ "internalType": "uint256",
1737
+ "name": "capitalAmount",
1738
+ "type": "uint256"
1165
1739
  },
1166
1740
  {
1167
- "components": [
1168
- {
1169
- "internalType": "UFixed",
1170
- "name": "fractionalFee",
1171
- "type": "uint256"
1172
- },
1173
- {
1174
- "internalType": "uint256",
1175
- "name": "fixedFee",
1176
- "type": "uint256"
1177
- }
1178
- ],
1179
- "internalType": "struct Fee",
1180
- "name": "stakingFee",
1181
- "type": "tuple"
1741
+ "internalType": "uint256",
1742
+ "name": "lockedAmount",
1743
+ "type": "uint256"
1182
1744
  },
1183
1745
  {
1184
- "components": [
1185
- {
1186
- "internalType": "UFixed",
1187
- "name": "fractionalFee",
1188
- "type": "uint256"
1189
- },
1190
- {
1191
- "internalType": "uint256",
1192
- "name": "fixedFee",
1193
- "type": "uint256"
1194
- }
1195
- ],
1196
- "internalType": "struct Fee",
1197
- "name": "performanceFee",
1198
- "type": "tuple"
1746
+ "internalType": "uint256",
1747
+ "name": "balanceAmount",
1748
+ "type": "uint256"
1199
1749
  },
1200
1750
  {
1201
- "components": [
1202
- {
1203
- "internalType": "UFixed",
1204
- "name": "fractionalFee",
1205
- "type": "uint256"
1206
- },
1207
- {
1208
- "internalType": "uint256",
1209
- "name": "fixedFee",
1210
- "type": "uint256"
1211
- }
1212
- ],
1213
- "internalType": "struct Fee",
1214
- "name": "distributionFee",
1215
- "type": "tuple"
1751
+ "internalType": "uint256",
1752
+ "name": "lifetime",
1753
+ "type": "uint256"
1754
+ },
1755
+ {
1756
+ "internalType": "Timestamp",
1757
+ "name": "expiredAt",
1758
+ "type": "uint40"
1759
+ },
1760
+ {
1761
+ "internalType": "Timestamp",
1762
+ "name": "closedAt",
1763
+ "type": "uint40"
1216
1764
  }
1217
1765
  ],
1218
- "internalType": "struct ITreasury.TreasuryInfo",
1219
- "name": "info",
1220
- "type": "tuple"
1221
- }
1222
- ],
1223
- "stateMutability": "view",
1224
- "type": "function"
1225
- },
1226
- {
1227
- "inputs": [],
1228
- "name": "getType",
1229
- "outputs": [
1766
+ "internalType": "struct IBundle.BundleInfo",
1767
+ "name": "bundle",
1768
+ "type": "tuple"
1769
+ },
1230
1770
  {
1231
- "internalType": "ObjectType",
1232
- "name": "objectType",
1771
+ "internalType": "StateId",
1772
+ "name": "newState",
1233
1773
  "type": "uint8"
1234
1774
  }
1235
1775
  ],
1236
- "stateMutability": "pure",
1776
+ "name": "updateBundle",
1777
+ "outputs": [],
1778
+ "stateMutability": "nonpayable",
1237
1779
  "type": "function"
1238
1780
  },
1239
1781
  {
1240
1782
  "inputs": [
1241
1783
  {
1242
- "internalType": "uint256",
1243
- "name": "a",
1244
- "type": "uint256"
1784
+ "internalType": "NftId",
1785
+ "name": "bundleNftId",
1786
+ "type": "uint96"
1245
1787
  },
1246
1788
  {
1247
- "internalType": "int8",
1248
- "name": "exp",
1249
- "type": "int8"
1250
- }
1251
- ],
1252
- "name": "getUFixed",
1253
- "outputs": [
1254
- {
1255
- "internalType": "UFixed",
1256
- "name": "",
1257
- "type": "uint256"
1258
- }
1259
- ],
1260
- "stateMutability": "pure",
1261
- "type": "function"
1262
- },
1263
- {
1264
- "inputs": [
1265
- {
1266
- "internalType": "uint256",
1267
- "name": "a",
1268
- "type": "uint256"
1269
- }
1270
- ],
1271
- "name": "getUFixed",
1272
- "outputs": [
1273
- {
1274
- "internalType": "UFixed",
1275
- "name": "",
1276
- "type": "uint256"
1277
- }
1278
- ],
1279
- "stateMutability": "pure",
1280
- "type": "function"
1281
- },
1282
- {
1283
- "inputs": [],
1284
- "name": "getVersion",
1285
- "outputs": [
1286
- {
1287
- "internalType": "Version",
1288
- "name": "",
1289
- "type": "uint24"
1789
+ "internalType": "StateId",
1790
+ "name": "newState",
1791
+ "type": "uint8"
1290
1792
  }
1291
1793
  ],
1292
- "stateMutability": "pure",
1794
+ "name": "updateBundleState",
1795
+ "outputs": [],
1796
+ "stateMutability": "nonpayable",
1293
1797
  "type": "function"
1294
1798
  },
1295
1799
  {
1296
1800
  "inputs": [
1297
1801
  {
1298
- "internalType": "uint256",
1299
- "name": "idx",
1300
- "type": "uint256"
1301
- }
1302
- ],
1303
- "name": "getVersion",
1304
- "outputs": [
1305
- {
1306
- "internalType": "Version",
1307
- "name": "",
1308
- "type": "uint24"
1309
- }
1310
- ],
1311
- "stateMutability": "view",
1312
- "type": "function"
1313
- },
1314
- {
1315
- "inputs": [],
1316
- "name": "getVersionCount",
1317
- "outputs": [
1318
- {
1319
- "internalType": "uint256",
1320
- "name": "",
1321
- "type": "uint256"
1322
- }
1323
- ],
1324
- "stateMutability": "view",
1325
- "type": "function"
1326
- },
1327
- {
1328
- "inputs": [
1802
+ "internalType": "NftId",
1803
+ "name": "policyNftId",
1804
+ "type": "uint96"
1805
+ },
1329
1806
  {
1330
- "internalType": "Version",
1331
- "name": "_version",
1332
- "type": "uint24"
1333
- }
1334
- ],
1335
- "name": "getVersionInfo",
1336
- "outputs": [
1807
+ "internalType": "NumberId",
1808
+ "name": "claimId",
1809
+ "type": "uint32"
1810
+ },
1337
1811
  {
1338
1812
  "components": [
1339
1813
  {
1340
- "internalType": "Version",
1341
- "name": "version",
1342
- "type": "uint24"
1814
+ "internalType": "uint256",
1815
+ "name": "claimAmount",
1816
+ "type": "uint256"
1343
1817
  },
1344
1818
  {
1345
- "internalType": "address",
1346
- "name": "implementation",
1347
- "type": "address"
1819
+ "internalType": "uint256",
1820
+ "name": "paidAmount",
1821
+ "type": "uint256"
1348
1822
  },
1349
1823
  {
1350
- "internalType": "address",
1351
- "name": "activatedBy",
1352
- "type": "address"
1824
+ "internalType": "bytes",
1825
+ "name": "data",
1826
+ "type": "bytes"
1353
1827
  },
1354
1828
  {
1355
1829
  "internalType": "Timestamp",
1356
- "name": "activatedAt",
1830
+ "name": "closedAt",
1357
1831
  "type": "uint40"
1358
- },
1359
- {
1360
- "internalType": "Blocknumber",
1361
- "name": "activatedIn",
1362
- "type": "uint32"
1363
1832
  }
1364
1833
  ],
1365
- "internalType": "struct IVersionable.VersionInfo",
1366
- "name": "",
1834
+ "internalType": "struct IPolicy.ClaimInfo",
1835
+ "name": "claim",
1367
1836
  "type": "tuple"
1837
+ },
1838
+ {
1839
+ "internalType": "StateId",
1840
+ "name": "newState",
1841
+ "type": "uint8"
1368
1842
  }
1369
1843
  ],
1370
- "stateMutability": "view",
1844
+ "name": "updateClaim",
1845
+ "outputs": [],
1846
+ "stateMutability": "nonpayable",
1371
1847
  "type": "function"
1372
1848
  },
1373
1849
  {
1374
- "inputs": [],
1375
- "name": "getZeroFee",
1376
- "outputs": [
1850
+ "inputs": [
1851
+ {
1852
+ "internalType": "NftId",
1853
+ "name": "policyNftId",
1854
+ "type": "uint96"
1855
+ },
1856
+ {
1857
+ "internalType": "NumberId",
1858
+ "name": "payoutId",
1859
+ "type": "uint32"
1860
+ },
1377
1861
  {
1378
1862
  "components": [
1379
1863
  {
1380
- "internalType": "UFixed",
1381
- "name": "fractionalFee",
1382
- "type": "uint256"
1864
+ "internalType": "NumberId",
1865
+ "name": "claimId",
1866
+ "type": "uint32"
1383
1867
  },
1384
1868
  {
1385
1869
  "internalType": "uint256",
1386
- "name": "fixedFee",
1870
+ "name": "amount",
1387
1871
  "type": "uint256"
1872
+ },
1873
+ {
1874
+ "internalType": "bytes",
1875
+ "name": "data",
1876
+ "type": "bytes"
1877
+ },
1878
+ {
1879
+ "internalType": "Timestamp",
1880
+ "name": "paidAt",
1881
+ "type": "uint40"
1388
1882
  }
1389
1883
  ],
1390
- "internalType": "struct Fee",
1391
- "name": "fee",
1884
+ "internalType": "struct IPolicy.PayoutInfo",
1885
+ "name": "payout",
1392
1886
  "type": "tuple"
1393
- }
1394
- ],
1395
- "stateMutability": "view",
1396
- "type": "function"
1397
- },
1398
- {
1399
- "inputs": [
1400
- {
1401
- "internalType": "RoleId",
1402
- "name": "role",
1403
- "type": "bytes8"
1404
1887
  },
1405
1888
  {
1406
- "internalType": "address",
1407
- "name": "member",
1408
- "type": "address"
1889
+ "internalType": "StateId",
1890
+ "name": "newState",
1891
+ "type": "uint8"
1409
1892
  }
1410
1893
  ],
1411
- "name": "grantRole",
1894
+ "name": "updateClaim",
1412
1895
  "outputs": [],
1413
1896
  "stateMutability": "nonpayable",
1414
1897
  "type": "function"
@@ -1416,98 +1899,98 @@
1416
1899
  {
1417
1900
  "inputs": [
1418
1901
  {
1419
- "internalType": "RoleId",
1420
- "name": "role",
1421
- "type": "bytes8"
1902
+ "internalType": "NftId",
1903
+ "name": "policyNftId",
1904
+ "type": "uint96"
1422
1905
  },
1423
1906
  {
1424
- "internalType": "address",
1425
- "name": "member",
1426
- "type": "address"
1427
- }
1428
- ],
1429
- "name": "hasRole",
1430
- "outputs": [
1431
- {
1432
- "internalType": "bool",
1433
- "name": "",
1434
- "type": "bool"
1907
+ "internalType": "StateId",
1908
+ "name": "newState",
1909
+ "type": "uint8"
1435
1910
  }
1436
1911
  ],
1437
- "stateMutability": "view",
1912
+ "name": "updateClaimState",
1913
+ "outputs": [],
1914
+ "stateMutability": "nonpayable",
1438
1915
  "type": "function"
1439
1916
  },
1440
1917
  {
1441
1918
  "inputs": [
1442
1919
  {
1443
1920
  "internalType": "NftId",
1444
- "name": "productNftId",
1921
+ "name": "distributionNftId",
1445
1922
  "type": "uint96"
1446
- }
1447
- ],
1448
- "name": "hasTreasuryInfo",
1449
- "outputs": [
1450
- {
1451
- "internalType": "bool",
1452
- "name": "hasInfo",
1453
- "type": "bool"
1454
- }
1455
- ],
1456
- "stateMutability": "view",
1457
- "type": "function"
1458
- },
1459
- {
1460
- "inputs": [
1461
- {
1462
- "internalType": "address",
1463
- "name": "implementation",
1464
- "type": "address"
1465
1923
  },
1466
1924
  {
1467
- "internalType": "address",
1468
- "name": "activatedBy",
1469
- "type": "address"
1925
+ "components": [
1926
+ {
1927
+ "internalType": "NftId",
1928
+ "name": "productNftId",
1929
+ "type": "uint96"
1930
+ },
1931
+ {
1932
+ "internalType": "contract TokenHandler",
1933
+ "name": "tokenHandler",
1934
+ "type": "address"
1935
+ },
1936
+ {
1937
+ "components": [
1938
+ {
1939
+ "internalType": "UFixed",
1940
+ "name": "fractionalFee",
1941
+ "type": "uint256"
1942
+ },
1943
+ {
1944
+ "internalType": "uint256",
1945
+ "name": "fixedFee",
1946
+ "type": "uint256"
1947
+ }
1948
+ ],
1949
+ "internalType": "struct Fee",
1950
+ "name": "distributionFee",
1951
+ "type": "tuple"
1952
+ },
1953
+ {
1954
+ "internalType": "bool",
1955
+ "name": "isIntercepting",
1956
+ "type": "bool"
1957
+ },
1958
+ {
1959
+ "internalType": "address",
1960
+ "name": "wallet",
1961
+ "type": "address"
1962
+ }
1963
+ ],
1964
+ "internalType": "struct ISetup.DistributionSetupInfo",
1965
+ "name": "setup",
1966
+ "type": "tuple"
1470
1967
  },
1471
1968
  {
1472
- "internalType": "bytes",
1473
- "name": "initializationData",
1474
- "type": "bytes"
1969
+ "internalType": "StateId",
1970
+ "name": "newState",
1971
+ "type": "uint8"
1475
1972
  }
1476
1973
  ],
1477
- "name": "initialize",
1974
+ "name": "updateDistributionSetup",
1478
1975
  "outputs": [],
1479
1976
  "stateMutability": "nonpayable",
1480
1977
  "type": "function"
1481
1978
  },
1482
1979
  {
1483
1980
  "inputs": [
1484
- {
1485
- "internalType": "Version",
1486
- "name": "_version",
1487
- "type": "uint24"
1488
- }
1489
- ],
1490
- "name": "isInitialized",
1491
- "outputs": [
1492
- {
1493
- "internalType": "bool",
1494
- "name": "",
1495
- "type": "bool"
1496
- }
1497
- ],
1498
- "stateMutability": "view",
1499
- "type": "function"
1500
- },
1501
- {
1502
- "inputs": [],
1503
- "name": "register",
1504
- "outputs": [
1505
1981
  {
1506
1982
  "internalType": "NftId",
1507
- "name": "nftId",
1983
+ "name": "distributionNftId",
1508
1984
  "type": "uint96"
1985
+ },
1986
+ {
1987
+ "internalType": "StateId",
1988
+ "name": "newState",
1989
+ "type": "uint8"
1509
1990
  }
1510
1991
  ],
1992
+ "name": "updateDistributionSetupState",
1993
+ "outputs": [],
1511
1994
  "stateMutability": "nonpayable",
1512
1995
  "type": "function"
1513
1996
  },
@@ -1515,21 +1998,48 @@
1515
1998
  "inputs": [
1516
1999
  {
1517
2000
  "internalType": "NftId",
1518
- "name": "nftId",
2001
+ "name": "policyNftId",
1519
2002
  "type": "uint96"
1520
2003
  },
1521
2004
  {
1522
- "internalType": "contract IERC20Metadata",
1523
- "name": "token",
1524
- "type": "address"
2005
+ "internalType": "NumberId",
2006
+ "name": "payoutId",
2007
+ "type": "uint32"
2008
+ },
2009
+ {
2010
+ "components": [
2011
+ {
2012
+ "internalType": "NumberId",
2013
+ "name": "claimId",
2014
+ "type": "uint32"
2015
+ },
2016
+ {
2017
+ "internalType": "uint256",
2018
+ "name": "amount",
2019
+ "type": "uint256"
2020
+ },
2021
+ {
2022
+ "internalType": "bytes",
2023
+ "name": "data",
2024
+ "type": "bytes"
2025
+ },
2026
+ {
2027
+ "internalType": "Timestamp",
2028
+ "name": "paidAt",
2029
+ "type": "uint40"
2030
+ }
2031
+ ],
2032
+ "internalType": "struct IPolicy.PayoutInfo",
2033
+ "name": "payout",
2034
+ "type": "tuple"
1525
2035
  },
1526
2036
  {
1527
- "internalType": "address",
1528
- "name": "wallet",
1529
- "type": "address"
2037
+ "internalType": "StateId",
2038
+ "name": "newState",
2039
+ "type": "uint8"
1530
2040
  }
1531
2041
  ],
1532
- "name": "registerComponent",
2042
+ "name": "updateDistributor",
1533
2043
  "outputs": [],
1534
2044
  "stateMutability": "nonpayable",
1535
2045
  "type": "function"
@@ -1538,21 +2048,16 @@
1538
2048
  "inputs": [
1539
2049
  {
1540
2050
  "internalType": "NftId",
1541
- "name": "nftId",
2051
+ "name": "policyNftId",
1542
2052
  "type": "uint96"
1543
2053
  },
1544
2054
  {
1545
- "internalType": "bool",
1546
- "name": "isVerifying",
1547
- "type": "bool"
1548
- },
1549
- {
1550
- "internalType": "UFixed",
1551
- "name": "collateralizationRate",
1552
- "type": "uint256"
2055
+ "internalType": "StateId",
2056
+ "name": "newState",
2057
+ "type": "uint8"
1553
2058
  }
1554
2059
  ],
1555
- "name": "registerPool",
2060
+ "name": "updateDistributorState",
1556
2061
  "outputs": [],
1557
2062
  "stateMutability": "nonpayable",
1558
2063
  "type": "function"
@@ -1560,155 +2065,85 @@
1560
2065
  {
1561
2066
  "inputs": [
1562
2067
  {
1563
- "internalType": "contract IProductComponent",
1564
- "name": "product",
1565
- "type": "address"
2068
+ "internalType": "NftId",
2069
+ "name": "policyNftId",
2070
+ "type": "uint96"
1566
2071
  },
1567
2072
  {
1568
- "internalType": "contract IPoolComponent",
1569
- "name": "pool",
1570
- "type": "address"
2073
+ "internalType": "NumberId",
2074
+ "name": "payoutId",
2075
+ "type": "uint32"
1571
2076
  },
1572
2077
  {
1573
- "internalType": "contract IDistributionComponent",
1574
- "name": "distribution",
1575
- "type": "address"
2078
+ "components": [
2079
+ {
2080
+ "internalType": "NumberId",
2081
+ "name": "claimId",
2082
+ "type": "uint32"
2083
+ },
2084
+ {
2085
+ "internalType": "uint256",
2086
+ "name": "amount",
2087
+ "type": "uint256"
2088
+ },
2089
+ {
2090
+ "internalType": "bytes",
2091
+ "name": "data",
2092
+ "type": "bytes"
2093
+ },
2094
+ {
2095
+ "internalType": "Timestamp",
2096
+ "name": "paidAt",
2097
+ "type": "uint40"
2098
+ }
2099
+ ],
2100
+ "internalType": "struct IPolicy.PayoutInfo",
2101
+ "name": "payout",
2102
+ "type": "tuple"
2103
+ },
2104
+ {
2105
+ "internalType": "StateId",
2106
+ "name": "newState",
2107
+ "type": "uint8"
1576
2108
  }
1577
2109
  ],
1578
- "name": "registerProductSetup",
2110
+ "name": "updateDistributorType",
1579
2111
  "outputs": [],
1580
2112
  "stateMutability": "nonpayable",
1581
2113
  "type": "function"
1582
2114
  },
1583
2115
  {
1584
2116
  "inputs": [
1585
- {
1586
- "internalType": "NftId",
1587
- "name": "bundleNftId",
1588
- "type": "uint96"
1589
- },
1590
2117
  {
1591
2118
  "internalType": "NftId",
1592
2119
  "name": "policyNftId",
1593
2120
  "type": "uint96"
1594
- }
1595
- ],
1596
- "name": "releasePolicy",
1597
- "outputs": [
1598
- {
1599
- "internalType": "uint256",
1600
- "name": "collateralAmount",
1601
- "type": "uint256"
1602
- }
1603
- ],
1604
- "stateMutability": "nonpayable",
1605
- "type": "function"
1606
- },
1607
- {
1608
- "inputs": [
1609
- {
1610
- "internalType": "RoleId",
1611
- "name": "role",
1612
- "type": "bytes8"
1613
2121
  },
1614
2122
  {
1615
- "internalType": "address",
1616
- "name": "member",
1617
- "type": "address"
2123
+ "internalType": "StateId",
2124
+ "name": "newState",
2125
+ "type": "uint8"
1618
2126
  }
1619
2127
  ],
1620
- "name": "revokeRole",
2128
+ "name": "updateDistributorTypeState",
1621
2129
  "outputs": [],
1622
2130
  "stateMutability": "nonpayable",
1623
2131
  "type": "function"
1624
2132
  },
1625
- {
1626
- "inputs": [
1627
- {
1628
- "internalType": "RoleId",
1629
- "name": "role",
1630
- "type": "bytes8"
1631
- }
1632
- ],
1633
- "name": "roleExists",
1634
- "outputs": [
1635
- {
1636
- "internalType": "bool",
1637
- "name": "",
1638
- "type": "bool"
1639
- }
1640
- ],
1641
- "stateMutability": "view",
1642
- "type": "function"
1643
- },
1644
2133
  {
1645
2134
  "inputs": [
1646
2135
  {
1647
2136
  "internalType": "NftId",
1648
- "name": "bundleNftId",
2137
+ "name": "policyNftId",
1649
2138
  "type": "uint96"
1650
2139
  },
1651
2140
  {
1652
- "components": [
1653
- {
1654
- "internalType": "NftId",
1655
- "name": "poolNftId",
1656
- "type": "uint96"
1657
- },
1658
- {
1659
- "components": [
1660
- {
1661
- "internalType": "UFixed",
1662
- "name": "fractionalFee",
1663
- "type": "uint256"
1664
- },
1665
- {
1666
- "internalType": "uint256",
1667
- "name": "fixedFee",
1668
- "type": "uint256"
1669
- }
1670
- ],
1671
- "internalType": "struct Fee",
1672
- "name": "fee",
1673
- "type": "tuple"
1674
- },
1675
- {
1676
- "internalType": "bytes",
1677
- "name": "filter",
1678
- "type": "bytes"
1679
- },
1680
- {
1681
- "internalType": "uint256",
1682
- "name": "capitalAmount",
1683
- "type": "uint256"
1684
- },
1685
- {
1686
- "internalType": "uint256",
1687
- "name": "lockedAmount",
1688
- "type": "uint256"
1689
- },
1690
- {
1691
- "internalType": "uint256",
1692
- "name": "balanceAmount",
1693
- "type": "uint256"
1694
- },
1695
- {
1696
- "internalType": "Timestamp",
1697
- "name": "expiredAt",
1698
- "type": "uint40"
1699
- },
1700
- {
1701
- "internalType": "Timestamp",
1702
- "name": "closedAt",
1703
- "type": "uint40"
1704
- }
1705
- ],
1706
- "internalType": "struct IBundle.BundleInfo",
1707
- "name": "info",
1708
- "type": "tuple"
2141
+ "internalType": "StateId",
2142
+ "name": "newState",
2143
+ "type": "uint8"
1709
2144
  }
1710
2145
  ],
1711
- "name": "setBundleInfo",
2146
+ "name": "updatePayoutState",
1712
2147
  "outputs": [],
1713
2148
  "stateMutability": "nonpayable",
1714
2149
  "type": "function"
@@ -1737,11 +2172,6 @@
1737
2172
  "name": "referralId",
1738
2173
  "type": "bytes8"
1739
2174
  },
1740
- {
1741
- "internalType": "address",
1742
- "name": "beneficiary",
1743
- "type": "address"
1744
- },
1745
2175
  {
1746
2176
  "internalType": "RiskId",
1747
2177
  "name": "riskId",
@@ -1777,6 +2207,21 @@
1777
2207
  "name": "policyData",
1778
2208
  "type": "bytes"
1779
2209
  },
2210
+ {
2211
+ "internalType": "uint16",
2212
+ "name": "claimsCount",
2213
+ "type": "uint16"
2214
+ },
2215
+ {
2216
+ "internalType": "uint16",
2217
+ "name": "openClaimsCount",
2218
+ "type": "uint16"
2219
+ },
2220
+ {
2221
+ "internalType": "uint256",
2222
+ "name": "payoutAmount",
2223
+ "type": "uint256"
2224
+ },
1780
2225
  {
1781
2226
  "internalType": "Timestamp",
1782
2227
  "name": "activatedAt",
@@ -1794,11 +2239,16 @@
1794
2239
  }
1795
2240
  ],
1796
2241
  "internalType": "struct IPolicy.PolicyInfo",
1797
- "name": "info",
2242
+ "name": "policy",
1798
2243
  "type": "tuple"
2244
+ },
2245
+ {
2246
+ "internalType": "StateId",
2247
+ "name": "newState",
2248
+ "type": "uint8"
1799
2249
  }
1800
2250
  ],
1801
- "name": "setPolicyInfo",
2251
+ "name": "updatePolicy",
1802
2252
  "outputs": [],
1803
2253
  "stateMutability": "nonpayable",
1804
2254
  "type": "function"
@@ -1806,9 +2256,27 @@
1806
2256
  {
1807
2257
  "inputs": [
1808
2258
  {
1809
- "internalType": "RiskId",
1810
- "name": "riskId",
1811
- "type": "bytes8"
2259
+ "internalType": "NftId",
2260
+ "name": "policyNftId",
2261
+ "type": "uint96"
2262
+ },
2263
+ {
2264
+ "internalType": "StateId",
2265
+ "name": "newState",
2266
+ "type": "uint8"
2267
+ }
2268
+ ],
2269
+ "name": "updatePolicyState",
2270
+ "outputs": [],
2271
+ "stateMutability": "nonpayable",
2272
+ "type": "function"
2273
+ },
2274
+ {
2275
+ "inputs": [
2276
+ {
2277
+ "internalType": "NftId",
2278
+ "name": "poolNftId",
2279
+ "type": "uint96"
1812
2280
  },
1813
2281
  {
1814
2282
  "components": [
@@ -1818,17 +2286,93 @@
1818
2286
  "type": "uint96"
1819
2287
  },
1820
2288
  {
1821
- "internalType": "bytes",
1822
- "name": "data",
1823
- "type": "bytes"
2289
+ "internalType": "contract TokenHandler",
2290
+ "name": "tokenHandler",
2291
+ "type": "address"
2292
+ },
2293
+ {
2294
+ "internalType": "UFixed",
2295
+ "name": "collateralizationLevel",
2296
+ "type": "uint256"
2297
+ },
2298
+ {
2299
+ "components": [
2300
+ {
2301
+ "internalType": "UFixed",
2302
+ "name": "fractionalFee",
2303
+ "type": "uint256"
2304
+ },
2305
+ {
2306
+ "internalType": "uint256",
2307
+ "name": "fixedFee",
2308
+ "type": "uint256"
2309
+ }
2310
+ ],
2311
+ "internalType": "struct Fee",
2312
+ "name": "poolFee",
2313
+ "type": "tuple"
2314
+ },
2315
+ {
2316
+ "components": [
2317
+ {
2318
+ "internalType": "UFixed",
2319
+ "name": "fractionalFee",
2320
+ "type": "uint256"
2321
+ },
2322
+ {
2323
+ "internalType": "uint256",
2324
+ "name": "fixedFee",
2325
+ "type": "uint256"
2326
+ }
2327
+ ],
2328
+ "internalType": "struct Fee",
2329
+ "name": "stakingFee",
2330
+ "type": "tuple"
2331
+ },
2332
+ {
2333
+ "components": [
2334
+ {
2335
+ "internalType": "UFixed",
2336
+ "name": "fractionalFee",
2337
+ "type": "uint256"
2338
+ },
2339
+ {
2340
+ "internalType": "uint256",
2341
+ "name": "fixedFee",
2342
+ "type": "uint256"
2343
+ }
2344
+ ],
2345
+ "internalType": "struct Fee",
2346
+ "name": "performanceFee",
2347
+ "type": "tuple"
2348
+ },
2349
+ {
2350
+ "internalType": "bool",
2351
+ "name": "isIntercepting",
2352
+ "type": "bool"
2353
+ },
2354
+ {
2355
+ "internalType": "bool",
2356
+ "name": "isConfirmingApplication",
2357
+ "type": "bool"
2358
+ },
2359
+ {
2360
+ "internalType": "address",
2361
+ "name": "wallet",
2362
+ "type": "address"
1824
2363
  }
1825
2364
  ],
1826
- "internalType": "struct IRisk.RiskInfo",
1827
- "name": "info",
2365
+ "internalType": "struct ISetup.PoolSetupInfo",
2366
+ "name": "setup",
1828
2367
  "type": "tuple"
2368
+ },
2369
+ {
2370
+ "internalType": "StateId",
2371
+ "name": "newState",
2372
+ "type": "uint8"
1829
2373
  }
1830
2374
  ],
1831
- "name": "setRiskInfo",
2375
+ "name": "updatePoolSetup",
1832
2376
  "outputs": [],
1833
2377
  "stateMutability": "nonpayable",
1834
2378
  "type": "function"
@@ -1836,17 +2380,17 @@
1836
2380
  {
1837
2381
  "inputs": [
1838
2382
  {
1839
- "internalType": "RoleId",
1840
- "name": "role",
1841
- "type": "bytes8"
2383
+ "internalType": "NftId",
2384
+ "name": "poolNftId",
2385
+ "type": "uint96"
1842
2386
  },
1843
2387
  {
1844
- "internalType": "bool",
1845
- "name": "active",
1846
- "type": "bool"
2388
+ "internalType": "StateId",
2389
+ "name": "newState",
2390
+ "type": "uint8"
1847
2391
  }
1848
2392
  ],
1849
- "name": "setRoleState",
2393
+ "name": "updatePoolSetupState",
1850
2394
  "outputs": [],
1851
2395
  "stateMutability": "nonpayable",
1852
2396
  "type": "function"
@@ -1861,9 +2405,14 @@
1861
2405
  {
1862
2406
  "components": [
1863
2407
  {
1864
- "internalType": "NftId",
1865
- "name": "poolNftId",
1866
- "type": "uint96"
2408
+ "internalType": "contract IERC20Metadata",
2409
+ "name": "token",
2410
+ "type": "address"
2411
+ },
2412
+ {
2413
+ "internalType": "contract TokenHandler",
2414
+ "name": "tokenHandler",
2415
+ "type": "address"
1867
2416
  },
1868
2417
  {
1869
2418
  "internalType": "NftId",
@@ -1871,9 +2420,9 @@
1871
2420
  "type": "uint96"
1872
2421
  },
1873
2422
  {
1874
- "internalType": "contract IERC20Metadata",
1875
- "name": "token",
1876
- "type": "address"
2423
+ "internalType": "NftId",
2424
+ "name": "poolNftId",
2425
+ "type": "uint96"
1877
2426
  },
1878
2427
  {
1879
2428
  "components": [
@@ -1889,7 +2438,7 @@
1889
2438
  }
1890
2439
  ],
1891
2440
  "internalType": "struct Fee",
1892
- "name": "productFee",
2441
+ "name": "distributionFee",
1893
2442
  "type": "tuple"
1894
2443
  },
1895
2444
  {
@@ -1906,7 +2455,7 @@
1906
2455
  }
1907
2456
  ],
1908
2457
  "internalType": "struct Fee",
1909
- "name": "processingFee",
2458
+ "name": "productFee",
1910
2459
  "type": "tuple"
1911
2460
  },
1912
2461
  {
@@ -1923,7 +2472,7 @@
1923
2472
  }
1924
2473
  ],
1925
2474
  "internalType": "struct Fee",
1926
- "name": "poolFee",
2475
+ "name": "processingFee",
1927
2476
  "type": "tuple"
1928
2477
  },
1929
2478
  {
@@ -1940,7 +2489,7 @@
1940
2489
  }
1941
2490
  ],
1942
2491
  "internalType": "struct Fee",
1943
- "name": "stakingFee",
2492
+ "name": "poolFee",
1944
2493
  "type": "tuple"
1945
2494
  },
1946
2495
  {
@@ -1957,7 +2506,7 @@
1957
2506
  }
1958
2507
  ],
1959
2508
  "internalType": "struct Fee",
1960
- "name": "performanceFee",
2509
+ "name": "stakingFee",
1961
2510
  "type": "tuple"
1962
2511
  },
1963
2512
  {
@@ -1974,53 +2523,49 @@
1974
2523
  }
1975
2524
  ],
1976
2525
  "internalType": "struct Fee",
1977
- "name": "distributionFee",
2526
+ "name": "performanceFee",
1978
2527
  "type": "tuple"
2528
+ },
2529
+ {
2530
+ "internalType": "bool",
2531
+ "name": "isIntercepting",
2532
+ "type": "bool"
2533
+ },
2534
+ {
2535
+ "internalType": "address",
2536
+ "name": "wallet",
2537
+ "type": "address"
1979
2538
  }
1980
2539
  ],
1981
- "internalType": "struct ITreasury.TreasuryInfo",
1982
- "name": "info",
2540
+ "internalType": "struct ISetup.ProductSetupInfo",
2541
+ "name": "setup",
1983
2542
  "type": "tuple"
2543
+ },
2544
+ {
2545
+ "internalType": "StateId",
2546
+ "name": "newState",
2547
+ "type": "uint8"
1984
2548
  }
1985
2549
  ],
1986
- "name": "setTreasuryInfo",
2550
+ "name": "updateProductSetup",
1987
2551
  "outputs": [],
1988
2552
  "stateMutability": "nonpayable",
1989
2553
  "type": "function"
1990
2554
  },
1991
- {
1992
- "inputs": [
1993
- {
1994
- "internalType": "bytes4",
1995
- "name": "interfaceId",
1996
- "type": "bytes4"
1997
- }
1998
- ],
1999
- "name": "supportsInterface",
2000
- "outputs": [
2001
- {
2002
- "internalType": "bool",
2003
- "name": "",
2004
- "type": "bool"
2005
- }
2006
- ],
2007
- "stateMutability": "view",
2008
- "type": "function"
2009
- },
2010
2555
  {
2011
2556
  "inputs": [
2012
2557
  {
2013
2558
  "internalType": "NftId",
2014
- "name": "bundleNftId",
2559
+ "name": "productNftId",
2015
2560
  "type": "uint96"
2016
2561
  },
2017
2562
  {
2018
2563
  "internalType": "StateId",
2019
- "name": "state",
2564
+ "name": "newState",
2020
2565
  "type": "uint8"
2021
2566
  }
2022
2567
  ],
2023
- "name": "updateBundleState",
2568
+ "name": "updateProductSetupState",
2024
2569
  "outputs": [],
2025
2570
  "stateMutability": "nonpayable",
2026
2571
  "type": "function"
@@ -2029,16 +2574,48 @@
2029
2574
  "inputs": [
2030
2575
  {
2031
2576
  "internalType": "NftId",
2032
- "name": "bundleNftId",
2577
+ "name": "policyNftId",
2033
2578
  "type": "uint96"
2034
2579
  },
2580
+ {
2581
+ "internalType": "NumberId",
2582
+ "name": "payoutId",
2583
+ "type": "uint32"
2584
+ },
2585
+ {
2586
+ "components": [
2587
+ {
2588
+ "internalType": "NumberId",
2589
+ "name": "claimId",
2590
+ "type": "uint32"
2591
+ },
2592
+ {
2593
+ "internalType": "uint256",
2594
+ "name": "amount",
2595
+ "type": "uint256"
2596
+ },
2597
+ {
2598
+ "internalType": "bytes",
2599
+ "name": "data",
2600
+ "type": "bytes"
2601
+ },
2602
+ {
2603
+ "internalType": "Timestamp",
2604
+ "name": "paidAt",
2605
+ "type": "uint40"
2606
+ }
2607
+ ],
2608
+ "internalType": "struct IPolicy.PayoutInfo",
2609
+ "name": "payout",
2610
+ "type": "tuple"
2611
+ },
2035
2612
  {
2036
2613
  "internalType": "StateId",
2037
- "name": "state",
2614
+ "name": "newState",
2038
2615
  "type": "uint8"
2039
2616
  }
2040
2617
  ],
2041
- "name": "updatePolicyState",
2618
+ "name": "updateReferral",
2042
2619
  "outputs": [],
2043
2620
  "stateMutability": "nonpayable",
2044
2621
  "type": "function"
@@ -2046,17 +2623,17 @@
2046
2623
  {
2047
2624
  "inputs": [
2048
2625
  {
2049
- "internalType": "RiskId",
2050
- "name": "riskId",
2051
- "type": "bytes8"
2626
+ "internalType": "NftId",
2627
+ "name": "policyNftId",
2628
+ "type": "uint96"
2052
2629
  },
2053
2630
  {
2054
2631
  "internalType": "StateId",
2055
- "name": "state",
2632
+ "name": "newState",
2056
2633
  "type": "uint8"
2057
2634
  }
2058
2635
  ],
2059
- "name": "updateRiskState",
2636
+ "name": "updateReferralState",
2060
2637
  "outputs": [],
2061
2638
  "stateMutability": "nonpayable",
2062
2639
  "type": "function"
@@ -2064,17 +2641,34 @@
2064
2641
  {
2065
2642
  "inputs": [
2066
2643
  {
2067
- "internalType": "Key32",
2068
- "name": "key",
2069
- "type": "bytes32"
2644
+ "internalType": "RiskId",
2645
+ "name": "riskId",
2646
+ "type": "bytes8"
2647
+ },
2648
+ {
2649
+ "components": [
2650
+ {
2651
+ "internalType": "NftId",
2652
+ "name": "productNftId",
2653
+ "type": "uint96"
2654
+ },
2655
+ {
2656
+ "internalType": "bytes",
2657
+ "name": "data",
2658
+ "type": "bytes"
2659
+ }
2660
+ ],
2661
+ "internalType": "struct IRisk.RiskInfo",
2662
+ "name": "risk",
2663
+ "type": "tuple"
2070
2664
  },
2071
2665
  {
2072
2666
  "internalType": "StateId",
2073
- "name": "state",
2667
+ "name": "newState",
2074
2668
  "type": "uint8"
2075
2669
  }
2076
2670
  ],
2077
- "name": "updateState",
2671
+ "name": "updateRisk",
2078
2672
  "outputs": [],
2079
2673
  "stateMutability": "nonpayable",
2080
2674
  "type": "function"
@@ -2082,131 +2676,90 @@
2082
2676
  {
2083
2677
  "inputs": [
2084
2678
  {
2085
- "internalType": "address",
2086
- "name": "implementation",
2087
- "type": "address"
2088
- },
2089
- {
2090
- "internalType": "address",
2091
- "name": "activatedBy",
2092
- "type": "address"
2679
+ "internalType": "RiskId",
2680
+ "name": "riskId",
2681
+ "type": "bytes8"
2093
2682
  },
2094
2683
  {
2095
- "internalType": "bytes",
2096
- "name": "upgradeData",
2097
- "type": "bytes"
2684
+ "internalType": "StateId",
2685
+ "name": "newState",
2686
+ "type": "uint8"
2098
2687
  }
2099
2688
  ],
2100
- "name": "upgrade",
2689
+ "name": "updateRiskState",
2101
2690
  "outputs": [],
2102
2691
  "stateMutability": "nonpayable",
2103
2692
  "type": "function"
2104
2693
  }
2105
2694
  ],
2106
- "bytecode": "0x60e06040523480156200001157600080fd5b50604051620091cd380380620091cd833981016040819052620000349162000ea0565b81818181620000456000336200046f565b6301ffc9a760e01b60005260026020527f71203db6a8b906f8e7c7701ea536708e3d7c6018d3ad50e5680c3241edacce17805460ff191660011790556001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5247422d3031303a52454749535452595f5a45524f000000000060448201526064015b60405180910390fd5b6001600160a01b03821660808190526040516301ffc9a760e01b81526306ecd8ef60e01b60048201526301ffc9a790602401602060405180830381865afa1580156200012d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000153919062000ee8565b620001a15760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5247422d3031313a4e4f545f52454749535452590000000000006044820152606401620000d4565b6001600160601b03811660a081905260805160405163e74d052f60e01b815260048101929092526001600160a01b03169063e74d052f90602401602060405180830381865afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f919062000ee8565b620002795760405162461bcd60e51b815260206004820152602360248201527f4552524f523a5247422d3031323a504152454e545f4e4f545f5245474953544560448201526214915160ea1b6064820152608401620000d4565b3360c052631dfba64760e11b60005260026020527ffc5164b528507fb56c225cc68864b8f0ef1e129250403b69e252bd0b2789bfea805460ff191660011790555050604051620002c99062000e75565b604051809103906000f080158015620002e6573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392909216919091179055630de7806f60e41b60005260026020527fb7a5bd31c9701672db9f727cc86f4464d7714e74fe637c779c9647bf979b2c39805460ff191660011790556200034d62000746565b506200039890506200035e62000939565b60408051808201909152601581527f446973747269627574696f6e4f776e6572526f6c6500000000000000000000006020820152620009e6565b620003d2620003a662000a4b565b60408051808201909152600f81526e4f7261636c654f776e6572526f6c6560881b6020820152620009e6565b6200040a620003e062000aa6565b60408051808201909152600d81526c506f6f6c4f776e6572526f6c6560981b6020820152620009e6565b620004456200041862000aff565b60408051808201909152601081526f50726f647563744f776e6572526f6c6560801b6020820152620009e6565b5050600354600c80546001600160a01b0319166001600160a01b039092169190911790556200120a565b60006200047b62000b5b565b9050620004888162000be3565b15620004e75760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b6064820152608401620000d4565b60015415620005a75760018054600091906200050590829062000f13565b8154811062000518576200051862000f35565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff1690506200054b828262000c87565b620005a55760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b6064820152608401620000d4565b505b600180548082018255600091909152600a8082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805462ffffff808616600394909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b03808616602084015284169082015260608101620006304290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890620007399083908690869062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050565b60006200075262000b5b565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015620007a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ce919062000f4b565b9050620008176040518060400160405280601581526020017f436f6d706f6e656e744f776e65725365727669636500000000000000000000008152508262000c9960201b60201c565b600480546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601381527f446973747269627574696f6e5365727669636500000000000000000000000000602082015262000877908262000c99565b600580546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600e81526d50726f647563745365727669636560901b6020820152620008c8908262000c99565b600680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600b81526a506f6f6c5365727669636560a81b602082015262000916908262000c99565b600780546001600160a01b0319166001600160a01b039290921691909117905550565b60405163e14787cb60e01b815260206004820152601560248201527f446973747269627574696f6e4f776e6572526f6c650000000000000000000000604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb906064015b602060405180830381865af4158015620009bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009e1919062000f70565b905090565b604080516060810182526001600160c01b0319841681526020810183905260019181019190915262000a188162000d6c565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c648583836040516200073992919062000fe4565b60405163e14787cb60e01b815260206004820152600f60248201526e4f7261636c654f776e6572526f6c6560881b604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb906064016200099d565b60405163e14787cb60e01b815260206004820152600d60248201526c506f6f6c4f776e6572526f6c6560981b604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb906064016200099d565b60405163e14787cb60e01b815260206004820152601060248201526f50726f647563744f776e6572526f6c6560801b604482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb906064016200099d565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801562000bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009e1919062001013565b62ffffff8116600090815260208190526040808220600101549051631bbffab160e21b8152600160c81b90910463ffffffff166004820152819073__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801562000c5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c8091906200103a565b1192915050565b62ffffff808216908316115b92915050565b60805160405163a3bcd81d60e01b81526000916001600160a01b03169063a3bcd81d9062000cce908690869060040162001054565b602060405180830381865afa15801562000cec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d1291906200107b565b90506001600160a01b03811662000c935760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a494e532d3030313a4e4f545f52454749535445524544000000006044820152606401620000d4565b80516001600160c01b031981166000908152600860209081526040909120835181546001600160401b03191660c09190911c17815590830151839190600182019062000db990826200113e565b50604091909101516002909101805460ff191691151591909117905562000de08162000e4a565b62000e4657600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600482040180546001600160401b0360039093166008026101000a928302191660c084901c929092029190911790555b5050565b6001600160c01b0319818116600081815260086020526040812054909260c09190911b161462000c93565b611f94806200723983390190565b80516001600160a01b038116811462000e9b57600080fd5b919050565b6000806040838503121562000eb457600080fd5b62000ebf8362000e83565b60208401519092506001600160601b038116811462000edd57600080fd5b809150509250929050565b60006020828403121562000efb57600080fd5b8151801515811462000f0c57600080fd5b9392505050565b8181038181111562000c9357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121562000f5e57600080fd5b815160ff8116811462000f0c57600080fd5b60006020828403121562000f8357600080fd5b81516001600160c01b03198116811462000f0c57600080fd5b6000815180845260005b8181101562000fc45760208185018101518683018201520162000fa6565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160c01b0319831681526040602082018190526000906200100b9083018462000f9c565b949350505050565b6000602082840312156200102657600080fd5b815162ffffff8116811462000f0c57600080fd5b6000602082840312156200104d57600080fd5b5051919050565b60408152600062001069604083018562000f9c565b905060ff831660208301529392505050565b6000602082840312156200108e57600080fd5b62000f0c8262000e83565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620010c457607f821691505b602082108103620010e557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200113957600081815260208120601f850160051c81016020861015620011145750805b601f850160051c820191505b81811015620011355782815560010162001120565b5050505b505050565b81516001600160401b038111156200115a576200115a62001099565b62001172816200116b8454620010af565b84620010eb565b602080601f831160018114620011aa5760008415620011915750858301515b600019600386901b1c1916600185901b17855562001135565b600085815260208120601f198616915b82811015620011db57888601518255948401946001909101908401620011ba565b5085821015620011fa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c051615fe3620012566000396000613c90015260006105e9015260008181610810015281816111f50152818161148501528181613c0f0152613cd30152615fe36000f3fe60806040523480156200001157600080fd5b5060043610620004755760003560e01c8063893d20e81162000259578063bd7d9d851162000149578063e1f64d7711620000c7578063ee0fdf711162000092578063ee0fdf711462000c8d578063f274e87d1462000ca4578063f2b246c31462000cd1578063fd143c761462000cf7578063fe1f18d61462000d0e57600080fd5b8063e1f64d771462000c31578063e26b857b1462000c48578063e79597401462000c5f578063ea5fa54b1462000c7657600080fd5b8063cf7a1d771162000114578063cf7a1d771462000bbe578063d250185c1462000bd5578063dad73bed1462000bec578063db70354c1462000c03578063e03eeb851462000c1a57600080fd5b8063bd7d9d851462000b49578063c2bf7d261462000b6f578063ca600b1c1462000b86578063cf5ccedb1462000b9857600080fd5b8063a5a4fbbc11620001d7578063b3c6501511620001a2578063b3c650151462000aca578063b88da7591462000aed578063b89010821462000b04578063b8c510671462000b1b578063b9f36dde1462000b3257600080fd5b8063a5a4fbbc1462000a85578063a745e3df1462000835578063a90be9071462000a9c578063af17d38a1462000ab357600080fd5b80639845743711620002245780639845743714620009ab57806399fd467714620009c25780639ae31ff51462000a0a578063a238accd1462000a39578063a310e2a31462000a5057600080fd5b8063893d20e8146200096a5780638d5d536e1462000974578063946dfcfe146200098b5780639675513d146200099457600080fd5b80634d459c90116200037557806369a44a1b11620002f35780637fec8b3111620002be5780637fec8b3114620008cf5780638125ea9214620008e657806383d3331914620008f057806387c5658614620008f9578063887b1fa9146200093157600080fd5b806369a44a1b14620008835780636b9bf08b146200089a5780636fa2985314620008ac5780637cef484214620008be57600080fd5b80635ab1bd5311620003405780635ab1bd53146200080e5780635b5b48f514620008355780635d4345cc146200084b578063644c45e01462000862578063674d0ccf146200086c57600080fd5b80634d459c9014620006805780634f42133314620007915780635312fdc214620007a857806357f80bbf14620007d957600080fd5b80631a9188761162000403578063349195f911620003ce578063349195f9146200060e5780633bc5de301462000617578063423eb9fa14620006335780634288121d14620006485780634793b4ab146200065a57600080fd5b80631a918876146200057d5780631aa3a00814620005ad578063278b381b14620005d057806331b62a3b14620005e757600080fd5b80630d0ccc5b11620004445780630d0ccc5b14620005195780630d8e6e2c146200053f5780630d9b998d146200055e57806315dae03e146200057557600080fd5b806301ffc9a7146200047a57806306a5298b14620004bf57806307af0dc014620004d857806309648a9d14620004ef575b600080fd5b620004aa6200048b366004620043de565b6001600160e01b03191660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b620004d6620004d03660046200456c565b62000d25565b005b620004d6620004e936600462004742565b62000d54565b6200050662000500366004620048c4565b62000e11565b60405160ff9091168152602001620004b6565b620005306200052a366004620048de565b62000e88565b604051908152602001620004b6565b6200054962000f11565b60405162ffffff9091168152602001620004b6565b620004d66200056f36600462004916565b62000f9e565b603262000506565b620005946200058e366004620049af565b62001141565b6040516001600160a01b039091168152602001620004b6565b620005b762001172565b6040516001600160601b039091168152602001620004b6565b620004aa620005e1366004620049af565b6200126d565b7f0000000000000000000000000000000000000000000000000000000000000000620005b7565b600f5462000530565b60408051602081018252600081529051620004b6919062004a23565b620004d66200064436600462004a38565b5050565b6006546001600160a01b031662000594565b620006716200066b366004620049af565b6200127c565b604051620004b6919062004ad8565b620007336200069136600462004b93565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525062ffffff90811660009081526020818152604091829020825160a0810184528154948516815263010000009094046001600160a01b03908116928501929092526001015490811691830191909152600160a01b810464ffffffffff166060830152600160c81b900463ffffffff16608082015290565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001620004b6565b620004aa620007a236600462004b93565b620012a9565b620007bf620007b9366004620048c4565b6200134d565b6040516001600160c01b03199091168152602001620004b6565b620007f0620007ea366004620049af565b6200138f565b604080518251151581526020928301519281019290925201620004b6565b7f000000000000000000000000000000000000000000000000000000000000000062000594565b620004d66200084636600462004bb3565b505050565b620004d66200085c36600462004c2c565b620013c4565b620005b76200146d565b620005306200087d36600462004c5f565b620014d5565b6200053062000894366004620049af565b620014f9565b6007546001600160a01b031662000594565b6004546001600160a01b031662000594565b620004d66200064436600462004c7f565b620005b7620008e0366004620048c4565b6200158a565b62000594620015d2565b60095462000530565b604080518082018252600080825260209182015281518083019092526013548252601454908201525b604051620004b6919062004ca0565b6200095b6200094236600462004c5f565b5060408051808201909152600081526060602082015290565b604051620004b6919062004cb8565b62000594620015ec565b620004d66200098536600462004cf0565b620015f8565b60015462000530565b62000530620009a536600462004db7565b620017f5565b620004d6620009bc36600462004dea565b6200195f565b620004aa620009d336600462004e30565b6001600160c01b031982166000908152600a602090815260408083206001600160a01b038516845290915290205460ff1692915050565b620005b762000a1b366004620049af565b6001600160601b039081166000908152601160205260409020541690565b620004d662000a4a36600462004e63565b62001adf565b6200059462000a61366004620049af565b6001600160601b03166000908152601260205260409020546001600160a01b031690565b6200059462000a96366004620049af565b62001b4c565b6200053062000aad366004620048c4565b62001b78565b620007bf62000ac436600462004e8b565b62001bb4565b62000ad462001d3d565b6040516001600160401b039091168152602001620004b6565b6200054962000afe366004620048c4565b62001d71565b620004d662000b1536600462004ed8565b62001db5565b620007bf62000b2c36600462004e8b565b62001e86565b620004d662000b4336600462004e30565b62001f06565b62000b6062000b5a366004620049af565b6200206f565b604051620004b6919062004f0d565b620004d662000b8036600462004e30565b62002100565b6005546001600160a01b031662000594565b62000baf62000ba936600462004c5f565b62002300565b604051620004b691906200504c565b620004d662000bcf36600462004bb3565b620023fe565b6200092262000be636600462005095565b6200240a565b620004d662000bfd366004620050c7565b62002499565b620005b762000c14366004620050fa565b620026b7565b620004d662000c2b36600462005129565b6200274e565b620004d662000c4236600462004dea565b6200278b565b620004d662000c593660046200515e565b620028d9565b6200059462000c70366004620051b0565b620031e4565b620004d662000c87366004620051d1565b62003209565b620004aa62000c9e36600462004c5f565b62003389565b62000cbb62000cb5366004620051f4565b620033b4565b60408051928352602083019190915201620004b6565b62000ce862000ce2366004620049af565b6200344b565b604051620004b6919062005224565b620004d662000d083660046200530d565b6200350f565b620004d662000d1f36600462004c2c565b62003687565b620006446065838360405160200162000d3f919062005224565b6040516020818303038152906040526200375c565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dbb919062005405565b6001600160a01b0316336001600160a01b03161462000df75760405162461bcd60e51b815260040162000dee9062005425565b60405180910390fd5b6200064460d2838360405160200162000d3f919062004f0d565b6003546040516309648a9d60e01b8152600481018390526000916001600160a01b0316906309648a9d90602401602060405180830381865afa15801562000e5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e82919062005466565b92915050565b604051631488c84560e01b815260048101839052600082810b60248301529073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__90631488c84590604401602060405180830381865af415801562000ee4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a919062005486565b9392505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801562000f73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f999190620054a0565b905090565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001005919062005405565b6001600160a01b0316336001600160a01b031614620010385760405162461bcd60e51b815260040162000dee9062005425565b6000604051806101c00160405280896001600160601b03168152602001836001600160601b03168152602001886001600160c01b031916815260200160006001600160a01b03168152602001876001600160c01b031916815260200186815260200185815260200160008152602001848152602001604051806020016040528060008152508152602001604051806020016040528060008152508152602001620010e0600090565b64ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff16905290506200113660d28a8360405160200162001121919062004f0d565b60405160208183030381529060405262003852565b505050505050505050565b6000806200115260645b8462003911565b806020019051810190620011679190620054cd565b602001519392505050565b60006200117e620015ec565b6001600160a01b0316336001600160a01b031614620011e05760405162461bcd60e51b815260206004820152601760248201527f4552524f523a5247422d3030313a4e4f545f4f574e4552000000000000000000604482015260640162000dee565b604051632210724360e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634420e486906024016020604051808303816000875af115801562001247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f99919062005522565b600062000e8260658362003a16565b6200128662004358565b6200129460dc5b8362003911565b80602001905181019062000e829190620055ce565b62ffffff8116600090815260208190526040808220600101549051631bbffab160e21b8152600160c81b90910463ffffffff166004820152819073__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801562001320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001346919062005486565b1192915050565b600060098281548110620013655762001365620056af565b90600052602060002090600491828204019190066008029054906101000a900460c01b9050919050565b6040805180820190915260008082526020820152620013af608c6200128d565b80602001905181019062000e829190620056c5565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142b919062005405565b6001600160a01b0316336001600160a01b0316146200145e5760405162461bcd60e51b815260040162000dee9062005425565b6200064460d25b838362003b17565b604051636939560f60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d272ac1e90602401602060405180830381865afa15801562001247573d6000803e3d6000fd5b6001600160c01b031981166000908152600b6020526040812062000e829062003be2565b6001600160601b038116600090815260106020526040808220905163697d0f1b60e11b8152600481019190915273__$0dc988b1672de335b826773df9015af2da$__9063d2fa1e36906024015b602060405180830381865af415801562001564573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e82919062005486565b6000600f8281548110620015a257620015a2620056af565b9060005260206000209060029182820401919006600c029054906101000a90046001600160601b03169050919050565b600062000f996003546001600160a01b031690565b919050565b600062000f9962003bed565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001639573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200165f919062005405565b6001600160a01b0316336001600160a01b031614620016c15760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000dee565b6000604051806101000160405280886001600160601b0316815260200187815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820188905260408201526060810187905260800142604051631ded81af60e31b815264ffffffffff90911660048201526024810187905273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af415801562001792573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b8919062005704565b64ffffffffff168152602001600064ffffffffff1690529050620017eb60dc898360405160200162001121919062004ad8565b5050505050505050565b6000306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001838573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200185e919062005405565b6001600160a01b0316336001600160a01b031614620018915760405162461bcd60e51b815260040162000dee9062005724565b506001600160601b038083166000818152600e602090815260408083209486168352938152838220805490839055928252600d9052829020915163539eabab60e11b8152909173__$0dc988b1672de335b826773df9015af2da$__9163a73d575691620019149186906004019182526001600160601b0316602082015260400190565b602060405180830381865af415801562001932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001958919062005765565b5092915050565b6001600160601b03828116600090815260106020526040908190209051632bfdd6b960e01b81526004810182905291851660248301529073__$0dc988b1672de335b826773df9015af2da$__90632bfdd6b990604401602060405180830381865af4158015620019d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019f9919062005765565b1562001a525760405162461bcd60e51b815260206004820152602160248201527f4552524f523a504c2d3032303a42554e444c455f414c52454144595f414444456044820152601160fa1b606482015260840162000dee565b604051631461054360e31b8152600481018290526001600160601b038516602482015273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af415801562001ab2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ad8919062005765565b5050505050565b60035460405163a238accd60e01b81526004810184905260ff831660248201526001600160a01b039091169063a238accd90604401600060405180830381600087803b15801562001b2f57600080fd5b505af115801562001b44573d6000803e3d6000fd5b505050505050565b60008062001b5b60646200114b565b80602001905181019062001b709190620054cd565b519392505050565b6040516322f5db0f60e11b81526004810182905260009073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906345ebb61e9060240162001546565b6000306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bf5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c1b919062005405565b6001600160a01b0316336001600160a01b03161462001c4e5760405162461bcd60e51b815260040162000dee9062005785565b60405163e14787cb60e01b815273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9062001c8790859060040162004a23565b602060405180830381865af415801562001ca5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ccb9190620057c9565b905062001cd88162003389565b1562001d315760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4143532d3031303a524f4c455f414c52454144595f45584953546044820152605360f81b606482015260840162000dee565b620015e7818362003d4f565b600062000f997ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00546001600160401b031690565b60006001828154811062001d895762001d89620056af565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b604080518082019091526001600160601b03831681526020810182905262001e8060c86040516355ee627560e01b81526001600160c01b03198716600482015273__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801562001e32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e58919062005486565b8360405160200162001e6b919062004cb8565b60405160208183030381529060405262003db4565b50505050565b60405163e14787cb60e01b815260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9062001ec290859060040162004a23565b602060405180830381865af415801562001ee0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e829190620057c9565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b161462001f4a5760405162461bcd60e51b815260040162000dee90620057e9565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001faf919062005405565b6001600160a01b0316336001600160a01b03161462001fe25760405162461bcd60e51b815260040162000dee9062005785565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19169055928252600b9052206200202b908362003dea565b507fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d1698754539668483836000604051620020629392919062005820565b60405180910390a1505050565b604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201819052610140820152610160810182905261018081018290526101a0810191909152620020eb60d26200128d565b80602001905181019062000e8291906200584d565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620021445760405162461bcd60e51b815260040162000dee90620057e9565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021a9919062005405565b6001600160a01b0316336001600160a01b031614620021dc5760405162461bcd60e51b815260040162000dee9062005785565b6001600160c01b0319831660009081526008602052604090206002015460ff166200224a5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4143532d3034303a524f4c455f4e4f545f414354495645000000604482015260640162000dee565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19166001179055928252600b90522062002296908362003e01565b506001600160c01b031983166000908152600a602090815260408083206001600160a01b0386168452909152908190205490517fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d169875453966849162002062918691869160ff9091169062005820565b6040805160608082018352600080835260208084018390528385018290526001600160c01b0319868116835260088252918590208551938401909552845460c01b909116825260018401805493949293918401916200235f90620059ba565b80601f01602080910402602001604051908101604052809291908181526020018280546200238d90620059ba565b8015620023de5780601f10620023b257610100808354040283529160200191620023de565b820191906000526020600020905b815481529060010190602001808311620023c057829003601f168201915b50505091835250506002919091015460ff16151560209091015292915050565b62000846838362003e18565b60408051808201825260008082526020820152905163638086fd60e11b8152600481018490526024810183905273__$a23651848365a6a5ca15f07b4331037f48$__9063c7010dfa906044016040805180830381865af415801562002473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a9190620059f6565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620024dd5760405162461bcd60e51b815260040162000dee90620057e9565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200251c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002542919062005405565b6001600160a01b0316336001600160a01b031614620025755760405162461bcd60e51b815260040162000dee9062005785565b6001600160c01b03198084166000908152600860209081526040808320815160608101909252805460c01b9094168152600184018054939491939192840191620025bf90620059ba565b80601f0160208091040260200160405190810160405280929190818152602001828054620025ed90620059ba565b80156200263e5780601f1062002612576101008083540402835291602001916200263e565b820191906000526020600020905b8154815290600101906020018083116200262057829003601f168201915b50505091835250506002919091015460ff161515602090910152831515604082015290506200266d81620040e9565b604080516001600160c01b03198616815284151560208201527feaffaec948991ecc6e201ba4f67ba865fbf66aace3d2f2823dc5483cc9813fda910160405180910390a150505050565b6001600160601b038216600090815260106020526040808220905163e797d89960e01b815260048101919091526024810183905273__$0dc988b1672de335b826773df9015af2da$__9063e797d89990604401602060405180830381865af415801562002728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a919062005522565b60408051808201825283151580825260208083018581528451918201929092529051928101929092529062001e8090608c90869060600162001121565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620027cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027f2919062005405565b6001600160a01b0316336001600160a01b031614620028255760405162461bcd60e51b815260040162000dee9062005724565b6001600160601b038381166000818152600e60209081526040808320948716808452948252808320869055928252600d90528190209051631461054360e31b81526004810191909152602481019190915273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af4158015620028b3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e80919062005765565b6000836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200291a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002940919062005522565b90506000836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002983573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029a9919062005522565b90506000836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620029ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a12919062005522565b6040516330b8415f60e01b81526001600160601b038516600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562002a6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a94919062005765565b62002ae25760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5452532d3031303a50524f445543545f554e444546494e454400604482015260640162000dee565b6040516330b8415f60e01b81526001600160601b038316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562002b3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b61919062005765565b62002baf5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a5452532d3031313a504f4f4c5f554e444546494e454400000000604482015260640162000dee565b6001600160601b0383166000908152601260205260409020546001600160a01b03161562002c375760405162461bcd60e51b815260206004820152602e60248201527f4552524f523a5452532d3031323a544f4b454e5f48414e444c45525f414c524560448201526d10511657d49151d254d51154915160921b606482015260840162000dee565b6001600160601b0382811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af415801562002ca3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc9919062005765565b62002d215760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5452532d3031333a504f4f4c5f414c52454144595f4c494e4b456044820152601160fa1b606482015260840162000dee565b6001600160601b0381811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af415801562002d8d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db3919062005765565b62002e135760405162461bcd60e51b815260206004820152602960248201527f4552524f523a5452532d3031343a434f4d50454e534154494f4e5f414c524541604482015268111657d3125392d15160ba1b606482015260840162000dee565b6000866001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002e54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e7a919062005405565b9050838160405162002e8c90620043d0565b6001600160601b0390921682526001600160a01b03166020820152604001604051809103906000f08015801562002ec7573d6000803e3d6000fd5b506001600160601b03858116600081815260126020908152604080832080546001600160a01b0319166001600160a01b039788161790558785168084526011835281842080546bffffffffffffffffffffffff199081168717909155958a16808552828520805490971690951790955580516101208101825293845290830193909352848416828401528251631380bf2360e01b815283519194929360608501938d1692631380bf239260048082019392918290030181865afa15801562002f93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fb99190620059f6565b8152602001896001600160a01b031663daafed406040518163ffffffff1660e01b81526004016040805180830381865afa15801562002ffc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030229190620059f6565b8152602001886001600160a01b0316636741fad26040518163ffffffff1660e01b81526004016040805180830381865afa15801562003065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308b9190620059f6565b8152602001886001600160a01b0316634b270a466040518163ffffffff1660e01b81526004016040805180830381865afa158015620030ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030f49190620059f6565b8152602001886001600160a01b031663235c36036040518163ffffffff1660e01b81526004016040805180830381865afa15801562003137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200315d9190620059f6565b8152602001876001600160a01b0316637c3d51666040518163ffffffff1660e01b81526004016040805180830381865afa158015620031a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031c69190620059f6565b90529050620017eb6065868360405160200162001121919062005224565b6001600160c01b031982166000908152600b6020526040812062000f0a9083620041c7565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200326e919062005405565b6001600160a01b0316336001600160a01b031614620032d05760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500604482015260640162000dee565b604080518082019091526001600160a01b03838116825282166020820152600f8054600180820183556000929092527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8026002820401805492909116600c026101000a6001600160601b03818102199093169287160291909117905562001e8062003358606490565b858360405160200162001121919081516001600160a01b039081168252602092830151169181019190915260400190565b6001600160c01b0319818116600081815260086020526040812054909260c09190911b161462000e82565b60405163012ebd8360e21b8152815160048201526020820151602482015260448101839052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af41580156200341a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003440919062005a15565b915091509250929050565b620034ee6040805161012081018252600080825260208083018290528284018290528351808501855282815280820183905260608401528351808501855282815280820183905260808401528351808501855282815280820183905260a08401528351808501855282815280820183905260c08401528351808501855282815280820183905260e084015283518085019094528184528301529061010082015290565b620034fa60656200128d565b80602001905181019062000e82919062005a3a565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003576919062005405565b6001600160a01b0316336001600160a01b031614806200360d5750306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620035d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035f8919062005405565b6001600160a01b0316336001600160a01b0316145b6200366d5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a42444c2d3030333a4e4f545f504f4f4c5f4f525f50524f445543604482015268545f5345525649434560b81b606482015260840162000dee565b6200064460dc838360405160200162000d3f919062004ad8565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620036c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036ee919062005405565b6001600160a01b0316336001600160a01b031614620037505760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000dee565b6200064460dc62001465565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690636ec3d9409073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620037d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037f9919062005486565b836040518363ffffffff1660e01b81526004016200381992919062005b0e565b600060405180830381600087803b1580156200383457600080fd5b505af115801562003849573d6000803e3d6000fd5b50505050505050565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690635dee47889073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620038c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038ef919062005486565b85846040518463ffffffff1660e01b8152600401620038199392919062005b29565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526060916001600160a01b0316906354f6127f9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003989573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039af919062005486565b6040518263ffffffff1660e01b8152600401620039ce91815260200190565b600060405180830381865afa158015620039ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f0a919081019062005b56565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526000916001600160a01b0316906338a699a49073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003a8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ab4919062005486565b6040518263ffffffff1660e01b815260040162003ad391815260200190565b602060405180830381865afa15801562003af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a919062005765565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b039091169063a238accd9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003b8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bb4919062005486565b6040516001600160e01b031960e084901b168152600481019190915260ff8416602482015260440162003819565b600062000e82825490565b604051636939560f60e11b815230600482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d272ac1e90602401602060405180830381865afa15801562003c57573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c7d919062005522565b90506001600160601b03811662003cb5577f000000000000000000000000000000000000000000000000000000000000000091505090565b60405163df33330b60e01b81526001600160601b03821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063df33330b90602401602060405180830381865afa15801562003d23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d49919062005405565b91505090565b604080516060810182526001600160c01b0319841681526020810183905260019181019190915262003d8181620040e9565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c648583836040516200206292919062005b8e565b600c54604051630bbdc8f160e31b81526001600160a01b0390911690635dee478890620038199085908790869060040162005b29565b600062000f0a836001600160a01b038416620041d5565b600062000f0a836001600160a01b038416620042d9565b600062003e2462000f11565b905062003e3181620012a9565b1562003e905760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b606482015260840162000dee565b6001541562003f5757600180546000919062003eae90829062005bb5565b8154811062003ec15762003ec1620056af565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff16905062003efb828262ffffff90811691161190565b62003f555760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b606482015260840162000dee565b505b600180548082018255600091909152600a8082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805462ffffff808616600394909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b0380861660208401528416908201526060810162003fe04290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890620020629083908690869062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b80516001600160c01b0319811660009081526008602090815260409091208351815467ffffffffffffffff191660c09190911c17815590830151839190600182019062004137908262005c21565b50604091909101516002909101805460ff19169115159190911790556200415e8162003389565b6200064457600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b600062000f0a83836200432b565b60008181526001830160205260408120548015620042ce576000620041fc60018362005bb5565b8554909150600090620042129060019062005bb5565b90508181146200427e576000866000018281548110620042365762004236620056af565b90600052602060002001549050808760000184815481106200425c576200425c620056af565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062004292576200429262005ced565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000e82565b600091505062000e82565b6000818152600183016020526040812054620043225750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000e82565b50600062000e82565b6000826000018281548110620043455762004345620056af565b9060005260206000200154905092915050565b60405180610100016040528060006001600160601b0316815260200162004392604051806040016040528060008152602001600081525090565b815260200160608152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6102aa8062005d0483390190565b600060208284031215620043f157600080fd5b81356001600160e01b03198116811462000f0a57600080fd5b6001600160601b03811681146200442057600080fd5b50565b8035620015e7816200440a565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156200446b576200446b62004430565b60405290565b60405161012081016001600160401b03811182821017156200446b576200446b62004430565b6040516101c081016001600160401b03811182821017156200446b576200446b62004430565b60405161010081016001600160401b03811182821017156200446b576200446b62004430565b604051601f8201601f191681016001600160401b03811182821017156200450e576200450e62004430565b604052919050565b6001600160a01b03811681146200442057600080fd5b8035620015e78162004516565b6000604082840312156200454c57600080fd5b6200455662004446565b9050813581526020820135602082015292915050565b6000808284036102008112156200458257600080fd5b83356200458f816200440a565b92506101e0601f1982011215620045a557600080fd5b50620045b062004471565b620045be6020850162004423565b8152620045ce6040850162004423565b6020820152620045e1606085016200452c565b6040820152620045f5856080860162004539565b6060820152620046098560c0860162004539565b60808201526101006200461f8682870162004539565b60a08301526200463486610140870162004539565b60c08301526200464986610180870162004539565b60e08301526200465e866101c0870162004539565b90820152919491935090915050565b6001600160c01b0319811681146200442057600080fd5b8035620015e7816200466d565b60006001600160401b03821115620046ad57620046ad62004430565b50601f01601f191660200190565b6000620046d2620046cc8462004691565b620044e3565b9050828152838383011115620046e757600080fd5b828260208301376000602084830101529392505050565b600082601f8301126200471057600080fd5b62000f0a83833560208501620046bb565b64ffffffffff811681146200442057600080fd5b8035620015e78162004721565b600080604083850312156200475657600080fd5b823562004763816200440a565b915060208301356001600160401b03808211156200478057600080fd5b908401906101c082870312156200479657600080fd5b620047a062004497565b620047ab8362004423565b8152620047bb6020840162004423565b6020820152620047ce6040840162004684565b6040820152620047e1606084016200452c565b6060820152620047f46080840162004684565b608082015260a083013560a082015260c083013560c082015260e083013560e082015261010080840135818301525061012080840135838111156200483857600080fd5b6200484689828701620046fe565b82840152505061014080840135838111156200486157600080fd5b6200486f89828701620046fe565b82840152505061016091506200488782840162004735565b8282015261018091506200489d82840162004735565b828201526101a09150620048b382840162004735565b828201528093505050509250929050565b600060208284031215620048d757600080fd5b5035919050565b60008060408385031215620048f257600080fd5b8235915060208301358060000b81146200490b57600080fd5b809150509250929050565b600080600080600080600080610100898b0312156200493457600080fd5b883562004941816200440a565b9750602089013562004953816200440a565b9650604089013562004965816200466d565b9550606089013562004977816200466d565b94506080890135935060a0890135925060c0890135915060e08901356200499e816200440a565b809150509295985092959890939650565b600060208284031215620049c257600080fd5b813562000f0a816200440a565b60005b83811015620049ec578181015183820152602001620049d2565b50506000910152565b6000815180845262004a0f816020860160208601620049cf565b601f01601f19169290920160200192915050565b60208152600062000f0a6020830184620049f5565b6000806040838503121562004a4c57600080fd5b823562004a59816200466d565b915060208301356001600160401b038082111562004a7657600080fd5b908401906040828703121562004a8b57600080fd5b62004a9562004446565b823562004aa2816200440a565b815260208301358281111562004ab757600080fd5b62004ac588828601620046fe565b6020830152508093505050509250929050565b602081526001600160601b0382511660208201526000602083015162004b0b604084018280518252602090810151910152565b50604083015161012080608085015262004b2a610140850183620049f5565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015162004b6461010086018264ffffffffff169052565b5060e085015164ffffffffff8116858301525b5090949350505050565b62ffffff811681146200442057600080fd5b60006020828403121562004ba657600080fd5b813562000f0a8162004b81565b60008060006060848603121562004bc957600080fd5b833562004bd68162004516565b9250602084013562004be88162004516565b915060408401356001600160401b0381111562004c0457600080fd5b62004c1286828701620046fe565b9150509250925092565b60ff811681146200442057600080fd5b6000806040838503121562004c4057600080fd5b823562004c4d816200440a565b915060208301356200490b8162004c1c565b60006020828403121562004c7257600080fd5b813562000f0a816200466d565b6000806040838503121562004c9357600080fd5b823562004c4d816200466d565b81518152602080830151908201526040810162000e82565b602081526001600160601b0382511660208201526000602083015160408084015262004ce86060840182620049f5565b949350505050565b600080600080600080600060e0888a03121562004d0c57600080fd5b873562004d19816200440a565b9650602088013562004d2b816200440a565b955062004d3c8960408a0162004539565b94506080880135935060a0880135925060c08801356001600160401b038082111562004d6757600080fd5b818a0191508a601f83011262004d7c57600080fd5b81358181111562004d8c57600080fd5b8b602082850101111562004d9f57600080fd5b60208301945080935050505092959891949750929550565b6000806040838503121562004dcb57600080fd5b823562004dd8816200440a565b915060208301356200490b816200440a565b60008060006060848603121562004e0057600080fd5b833562004e0d816200440a565b9250602084013562004e1f816200440a565b929592945050506040919091013590565b6000806040838503121562004e4457600080fd5b823562004e51816200466d565b915060208301356200490b8162004516565b6000806040838503121562004e7757600080fd5b8235915060208301356200490b8162004c1c565b60006020828403121562004e9e57600080fd5b81356001600160401b0381111562004eb557600080fd5b8201601f8101841362004ec757600080fd5b62004ce884823560208401620046bb565b60008060006060848603121562004eee57600080fd5b833562004efb816200466d565b9250602084013562004be8816200440a565b6020815262004f286020820183516001600160601b03169052565b6000602083015162004f4560408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160a01b03811660808401525060808301516001600160c01b0319811660a08401525060a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101c0610140818186015262004fd96101e0860184620049f5565b9250808601519050610160601f19868503018187015262004ffb8483620049f5565b9350808701519150506101806200501a8187018364ffffffffff169052565b86015190506101a0620050358682018364ffffffffff169052565b86015164ffffffffff811683870152905062004b77565b602080825282516001600160c01b03191682820152820151606060408301526000906200507d6080840182620049f5565b90506040840151151560608401528091505092915050565b60008060408385031215620050a957600080fd5b50508035926020909101359150565b80151581146200442057600080fd5b60008060408385031215620050db57600080fd5b8235620050e8816200466d565b915060208301356200490b81620050b8565b600080604083850312156200510e57600080fd5b82356200511b816200440a565b946020939093013593505050565b6000806000606084860312156200513f57600080fd5b83356200514c816200440a565b9250602084013562004e1f81620050b8565b6000806000606084860312156200517457600080fd5b8335620051818162004516565b92506020840135620051938162004516565b91506040840135620051a58162004516565b809150509250925092565b60008060408385031215620051c457600080fd5b82356200511b816200466d565b600080600060608486031215620051e757600080fd5b833562005181816200440a565b600080606083850312156200520857600080fd5b823591506200521b846020850162004539565b90509250929050565b81516001600160601b031681526020808301516101e083019162005252908401826001600160601b03169052565b5060408301516200526e60408401826001600160a01b03169052565b5060608301516200528c606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c0830151805161012084015260208101516101408401525060e0830151805161016084015260208101516101808401525061010083015180516101a084015260208101516101c084015262001958565b600080604083850312156200532157600080fd5b82356200532e816200440a565b915060208301356001600160401b03808211156200534b57600080fd5b9084019061012082870312156200536157600080fd5b6200536b620044bd565b620053768362004423565b815262005387876020850162004539565b60208201526060830135828111156200539f57600080fd5b620053ad88828601620046fe565b6040830152506080830135606082015260a0830135608082015260c083013560a0820152620053df60e0840162004735565b60c0820152620053f3610100840162004735565b60e08201528093505050509250929050565b6000602082840312156200541857600080fd5b815162000f0a8162004516565b60208082526021908201527f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b6000602082840312156200547957600080fd5b815162000f0a8162004c1c565b6000602082840312156200549957600080fd5b5051919050565b600060208284031215620054b357600080fd5b815162000f0a8162004b81565b8051620015e78162004516565b600060408284031215620054e057600080fd5b620054ea62004446565b8251620054f78162004516565b81526020830151620055098162004516565b60208201529392505050565b8051620015e7816200440a565b6000602082840312156200553557600080fd5b815162000f0a816200440a565b6000604082840312156200555557600080fd5b6200555f62004446565b9050815181526020820151602082015292915050565b600082601f8301126200558757600080fd5b815162005598620046cc8262004691565b818152846020838601011115620055ae57600080fd5b62004ce8826020830160208701620049cf565b8051620015e78162004721565b600060208284031215620055e157600080fd5b81516001600160401b0380821115620055f957600080fd5b9083019061012082860312156200560f57600080fd5b62005619620044bd565b620056248362005515565b815262005635866020850162005542565b60208201526060830151828111156200564d57600080fd5b6200565b8782860162005575565b6040830152506080830151606082015260a0830151608082015260c083015160a08201526200568d60e08401620055c1565b60c0820152620056a16101008401620055c1565b60e082015295945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215620056d857600080fd5b620056e262004446565b8251620056ef81620050b8565b81526020928301519281019290925250919050565b6000602082840312156200571757600080fd5b815162000f0a8162004721565b60208082526021908201527f4552524f523a42444c2d3030323a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b6000602082840312156200577857600080fd5b815162000f0a81620050b8565b60208082526017908201527f4552524f523a4143532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b8051620015e7816200466d565b600060208284031215620057dc57600080fd5b815162000f0a816200466d565b6020808252601f908201527f4552524f523a4143532d3030323a524f4c455f4e4f545f4558495354494e4700604082015260600190565b6001600160c01b03199390931683526001600160a01b039190911660208301521515604082015260600190565b6000602082840312156200586057600080fd5b81516001600160401b03808211156200587857600080fd5b908301906101c082860312156200588e57600080fd5b6200589862004497565b620058a38362005515565b8152620058b36020840162005515565b6020820152620058c660408401620057bc565b6040820152620058d960608401620054c0565b6060820152620058ec60808401620057bc565b608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012080840151838111156200593057600080fd5b6200593e8882870162005575565b82840152505061014080840151838111156200595957600080fd5b620059678882870162005575565b82840152505061016091506200597f828401620055c1565b82820152610180915062005995828401620055c1565b828201526101a09150620059ab828401620055c1565b91810191909152949350505050565b600181811c90821680620059cf57607f821691505b602082108103620059f057634e487b7160e01b600052602260045260246000fd5b50919050565b60006040828403121562005a0957600080fd5b62000f0a838362005542565b6000806040838503121562005a2957600080fd5b505080516020909101519092909150565b60006101e0828403121562005a4e57600080fd5b62005a5862004471565b62005a638362005515565b815262005a736020840162005515565b602082015262005a8660408401620054c0565b604082015262005a9a846060850162005542565b606082015262005aae8460a0850162005542565b608082015262005ac28460e0850162005542565b60a082015262005ad784610120850162005542565b60c082015262005aec84610160850162005542565b60e082015262005b01846101a0850162005542565b6101008201529392505050565b82815260406020820152600062004ce86040830184620049f5565b83815260ff8316602082015260606040820152600062005b4d6060830184620049f5565b95945050505050565b60006020828403121562005b6957600080fd5b81516001600160401b0381111562005b8057600080fd5b62004ce88482850162005575565b6001600160401b0360c01b8316815260406020820152600062004ce86040830184620049f5565b8181038181111562000e8257634e487b7160e01b600052601160045260246000fd5b601f8211156200084657600081815260208120601f850160051c8101602086101562005c005750805b601f850160051c820191505b8181101562001b445782815560010162005c0c565b81516001600160401b0381111562005c3d5762005c3d62004430565b62005c558162005c4e8454620059ba565b8462005bd7565b602080601f83116001811462005c8d576000841562005c745750858301515b600019600386901b1c1916600185901b17855562001b44565b600085815260208120601f198616915b8281101562005cbe5788860151825594840194600190910190840162005c9d565b508582101562005cdd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b506040516102aa3803806102aa83398101604081905261002f9161005b565b6001600160a01b03166c01000000000000000000000000026001600160601b03909116176000556100ad565b6000806040838503121561006e57600080fd5b82516001600160601b038116811461008557600080fd5b60208401519092506001600160a01b03811681146100a257600080fd5b809150509250929050565b6101ee806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c806251884a1461004557806321df0da71461006a578063beabacc814610095575b600080fd5b6000546040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b600054600160601b90046001600160a01b03166040516001600160a01b039091168152602001610061565b6100a86100a3366004610153565b6100aa565b005b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052600160601b909204909116906323b872dd906064016020604051808303816000875af115801561010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610131919061018f565b50505050565b80356001600160a01b038116811461014e57600080fd5b919050565b60008060006060848603121561016857600080fd5b61017184610137565b925061017f60208501610137565b9150604084013590509250925092565b6000602082840312156101a157600080fd5b815180151581146101b157600080fd5b939250505056fea264697066735822122098042a25f53a65deabe0e6f542a37f2241e6a3e8502eedd92fc64bb45d25bfc364736f6c63430008140033a26469706673582212203fea569f115940828fe2364d7cbf2a2b59bf09fb5f0c2e2059de68282105df6d64736f6c6343000814003360806040523480156200001157600080fd5b506200001c62000052565b6200002662000206565b620000306200033f565b6200003a620005a7565b600380546001600160a01b031916331790556200071d565b60dc600090815260208190527f5bd290414b404036f9d63146803dd83b59a8e1905062a5bfed8b0154d20a390d805460ff1916606417905560019081906200009860dc90565b60ff1660ff1681526020019081526020016000206000620000be620006eb60201b60201c565b60ff1660ff1681526020019081526020016000206000620000e4620006f560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200011760dc90565b60ff1660ff16815260200190815260200160002060006200013d620006f560201b60201c565b60ff1660ff168152602001908152602001600020600062000163620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200019660dc90565b60ff1660ff1681526020019081526020016000206000620001bc620006f560201b60201c565b60ff1660ff1681526020019081526020016000206000620001e2620006fa60201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f9db7038e59677010ca8f72fa448bad1b4f3c53346b666689163ccac31db467728054606460ff1991821681179092557f1a3062e9a24818c8281fcfb58ec4f3083a2f9a1314ac63f80d8d646661fdc5098054909116600190811790915560009182526020819052907f1bd07f61ef326b4de236f5b68f225f46ff76ee2c375ae31a06da201c49c70c12906200029a606e90565b60ff1660ff1681526020019081526020016000206000620002c0620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001908190620002f3606490565b60ff1660ff168152602001908152602001600020600062000319620006f560201b60201c565b60ff1660ff1681526020019081526020016000206000620001e2620006ff60201b60201c565b60d2600090815260208190527fc0d27dadfcf8ee0186a0f6fe9b5805a51e99869050491e4a3040efec012a214f805460ff1916600a17905560019081906200038560d290565b60ff1660ff1681526020019081526020016000206000620003ab6200070460201b60201c565b60ff1660ff1681526020019081526020016000206000620003d16200070960201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200040460d290565b60ff1660ff16815260200190815260200160002060006200042a6200070460201b60201c565b60ff1660ff1681526020019081526020016000206000620004506200070e60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200048360d290565b60ff1660ff1681526020019081526020016000206000620004a96200070460201b60201c565b60ff1660ff1681526020019081526020016000206000620004cf6200071360201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200050260d290565b60ff1660ff1681526020019081526020016000206000620005286200071360201b60201c565b60ff1660ff16815260200190815260200160002060006200054e620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200058160d290565b60ff1660ff1681526020019081526020016000206000620001bc620006eb60201b60201c565b60c8600090815260208190527fc5f2c791ab4e0b1a0b6c600884b07e98575b00ebd7c3166c4272a53bebf71403805460ff191660641790556001908190620005ed60c890565b60ff1660ff168152602001908152602001600020600062000613620006eb60201b60201c565b60ff1660ff168152602001908152602001600020600062000639620006f560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019081906200066c60c890565b60ff1660ff168152602001908152602001600020600062000692620006f560201b60201c565b60ff1660ff1681526020019081526020016000206000620006b8620006eb60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001908190620002f360c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b60006028620006f0565b611867806200072d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a238accd11610097578063b24133ec11610066578063b24133ec146102e1578063bf1db3f9146102f4578063e9e96c7014610307578063f48016ce1461034557600080fd5b8063a238accd146101ea578063a4dc7d86146101fd578063a5961b4c1461021d578063a8989675146102ce57600080fd5b806354f6127f116100d357806354f6127f146101825780635dee4788146101a25780636ec3d940146101b75780638eaa6ac0146101ca57600080fd5b806309648a9d146100fa5780630d3581811461013957806338a699a41461015f575b600080fd5b610122610108366004611234565b600090815260026020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61012261014736600461125f565b60ff9081166000908152602081905260409020541690565b61017261016d366004611234565b610366565b6040519015158152602001610130565b610195610190366004611234565b6103f7565b60405161013091906112c2565b6101b56101b0366004611378565b61049c565b005b6101b56101c53660046113d1565b610771565b6101dd6101d8366004611234565b610927565b6040516101309190611462565b6101b56101f8366004611496565b610a68565b61021061020b366004611234565b610cda565b60405161013091906114dc565b6102c161022b366004611234565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260026020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b60405161013091906114ea565b6101b56102dc3660046114f8565b610d88565b6101b56102ef366004611378565b610e7e565b61017261030236600461125f565b61115d565b6101726103153660046114f8565b60ff9283166000908152600160209081526040808320948616835293815283822092851682529190915220541690565b610358610353366004611553565b6111aa565b604051908152602001610130565b60008181526002602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af41580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190611581565b92915050565b6000818152600260205260409020600101805460609190610417906115a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610443906115a3565b80156104905780601f1061046557610100808354040283529160200191610490565b820191906000526020600020905b81548152906001019060200180831161047357829003601f168201915b50505050509050919050565b6003546001600160a01b031633146104cf5760405162461bcd60e51b81526004016104c6906115dd565b60405180910390fd5b60405163b2466acf60e01b815260ff8316600482015273__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015610521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105459190611581565b6105915760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e45440000000060448201526064016104c6565b600083815260026020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af41580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190611581565b61066a5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f4352454154454400000060448201526064016104c6565b334360006106778661115d565b610682576064610698565b60ff808716600090815260208190526040902054165b845460ff88811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526002602052604090209091506001016107228682611662565b507f0ccdf5d7cd4da66a6894cfa246e02d19253a3f7c4cb3b0daee0bc2bf1a7dd4ff61074d88610cda565b8285326040516107609493929190611722565b60405180910390a150505050505050565b6003546001600160a01b0316331461079b5760405162461bcd60e51b81526004016104c6906115dd565b600082815260026020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b9190611581565b6108775760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3033303a4e4f545f4558495354494e4700000000000060448201526064016104c6565b60008481526002602052604090206001016108928482611662565b508154620100003390810262010000600160b01b031983161784559063ffffffff600160b01b909104166108c34390565b845463ffffffff91909116600160b01b0263ffffffff60b01b1990911617845560006108ee87610cda565b90507f228147c3bb5d3f2e24432bc0abaa1541c1f3f4208a9ab759bf26567e983fbdb78185853286604051610760959493929190611758565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260026020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c082015292835260018101805491928401916109df906115a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0b906115a3565b8015610a585780601f10610a2d57610100808354040283529160200191610a58565b820191906000526020600020905b815481529060010190602001808311610a3b57829003601f168201915b5050505050815250509050919050565b6003546001600160a01b03163314610a925760405162461bcd60e51b81526004016104c6906115dd565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190611581565b610b545760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e454400000060448201526064016104c6565b600082815260026020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be49190611581565b610c305760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e4700000000000060448201526064016104c6565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b90910416610c744390565b845463ffffffff91909116600160b01b0263ffffffff60b01b199091161784556000610c9f87610cda565b90507feb640fdc9d45826fb47cd85fac116714d3d638f1409790b2b7c0ac824db13b728187868632876040516107609695949392919061179d565b604080518082019091526000808252602082015260405163526e3ec360e11b815260048101839052600090819073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063a4dc7d86906024016040805180830381865af4158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906117e9565b6040805180820190915260ff909216825260ff19166020820152949350505050565b60ff8381166000908152602081905260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190611581565b15610e1b57505050565b60ff808416600090815260016020908152604080832086851684528252808320858516845290915290205416610e7957604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016104c6565b505050565b6003546001600160a01b03163314610ea85760405162461bcd60e51b81526004016104c6906115dd565b60405163b2466acf60e01b815260ff8316600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e9190611581565b610f6a5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e454400000060448201526064016104c6565b600083815260026020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa9190611581565b6110465760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e4700000000000060448201526064016104c6565b60008581526002602052604090206001016110618482611662565b508154620100003390810262010000600160b01b031960ff88166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166110a64390565b845463ffffffff91909116600160b01b0263ffffffff60b01b1990911617845560006110d188610cda565b90507feb640fdc9d45826fb47cd85fac116714d3d638f1409790b2b7c0ac824db13b7281888686328760405161110c9695949392919061179d565b60405180910390a17f228147c3bb5d3f2e24432bc0abaa1541c1f3f4208a9ab759bf26567e983fbdb7818885328660405161114b959493929190611758565b60405180910390a15050505050505050565b60ff81811660009081526020819052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024016103b0565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce90604401602060405180830381865af4158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190611818565b9392505050565b60006020828403121561124657600080fd5b5035919050565b60ff8116811461125c57600080fd5b50565b60006020828403121561127157600080fd5b813561122d8161124d565b6000815180845260005b818110156112a257602081850181015186830182015201611286565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061122d602083018461127c565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126112fc57600080fd5b813567ffffffffffffffff80821115611317576113176112d5565b604051601f8301601f19908116603f0116810190828211818310171561133f5761133f6112d5565b8160405283815286602085880101111561135857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561138d57600080fd5b83359250602084013561139f8161124d565b9150604084013567ffffffffffffffff8111156113bb57600080fd5b6113c7868287016112eb565b9150509250925092565b600080604083850312156113e457600080fd5b82359150602083013567ffffffffffffffff81111561140257600080fd5b61140e858286016112eb565b9150509250929050565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152611474602082018351611418565b6000602083015160c08084015261148e60e084018261127c565b949350505050565b600080604083850312156114a957600080fd5b8235915060208301356114bb8161124d565b809150509250929050565b805160ff16825260209081015160ff1916910152565b604081016103f182846114c6565b60a081016103f18284611418565b60008060006060848603121561150d57600080fd5b83356115188161124d565b925060208401356115288161124d565b915060408401356115388161124d565b809150509250925092565b60ff198116811461125c57600080fd5b6000806040838503121561156657600080fd5b82356115718161124d565b915060208301356114bb81611543565b60006020828403121561159357600080fd5b8151801515811461122d57600080fd5b600181811c908216806115b757607f821691505b6020821081036115d757634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f4552524f523a4b56532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b601f821115610e7957600081815260208120601f850160051c8101602086101561163b5750805b601f850160051c820191505b8181101561165a57828155600101611647565b505050505050565b815167ffffffffffffffff81111561167c5761167c6112d5565b6116908161168a84546115a3565b84611614565b602080601f8311600181146116c557600084156116ad5750858301515b600019600386901b1c1916600185901b17855561165a565b600085815260208120601f198616915b828110156116f4578886015182559484019460019091019084016116d5565b50858210156117125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60a0810161173082876114c6565b60ff9490941660408201526001600160a01b0392831660608201529116608090910152919050565b60c0810161176682886114c6565b60ff9590951660408201526001600160a01b03938416606082015291909216608082015263ffffffff90911660a090910152919050565b60e081016117ab82896114c6565b60ff96871660408301529490951660608601526001600160a01b039283166080860152911660a084015263ffffffff1660c090920191909152919050565b600080604083850312156117fc57600080fd5b82516118078161124d565b60208401519092506114bb81611543565b60006020828403121561182a57600080fd5b505191905056fea2646970667358221220f939c446d2a8f4e906670f91871af4dbd5d1080e0e33cb50e0e6fc2a596aabeb64736f6c63430008140033",
2107
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620004755760003560e01c8063893d20e81162000259578063bd7d9d851162000149578063e1f64d7711620000c7578063ee0fdf711162000092578063ee0fdf711462000c8d578063f274e87d1462000ca4578063f2b246c31462000cd1578063fd143c761462000cf7578063fe1f18d61462000d0e57600080fd5b8063e1f64d771462000c31578063e26b857b1462000c48578063e79597401462000c5f578063ea5fa54b1462000c7657600080fd5b8063cf7a1d771162000114578063cf7a1d771462000bbe578063d250185c1462000bd5578063dad73bed1462000bec578063db70354c1462000c03578063e03eeb851462000c1a57600080fd5b8063bd7d9d851462000b49578063c2bf7d261462000b6f578063ca600b1c1462000b86578063cf5ccedb1462000b9857600080fd5b8063a5a4fbbc11620001d7578063b3c6501511620001a2578063b3c650151462000aca578063b88da7591462000aed578063b89010821462000b04578063b8c510671462000b1b578063b9f36dde1462000b3257600080fd5b8063a5a4fbbc1462000a85578063a745e3df1462000835578063a90be9071462000a9c578063af17d38a1462000ab357600080fd5b80639845743711620002245780639845743714620009ab57806399fd467714620009c25780639ae31ff51462000a0a578063a238accd1462000a39578063a310e2a31462000a5057600080fd5b8063893d20e8146200096a5780638d5d536e1462000974578063946dfcfe146200098b5780639675513d146200099457600080fd5b80634d459c90116200037557806369a44a1b11620002f35780637fec8b3111620002be5780637fec8b3114620008cf5780638125ea9214620008e657806383d3331914620008f057806387c5658614620008f9578063887b1fa9146200093157600080fd5b806369a44a1b14620008835780636b9bf08b146200089a5780636fa2985314620008ac5780637cef484214620008be57600080fd5b80635ab1bd5311620003405780635ab1bd53146200080e5780635b5b48f514620008355780635d4345cc146200084b578063644c45e01462000862578063674d0ccf146200086c57600080fd5b80634d459c9014620006805780634f42133314620007915780635312fdc214620007a857806357f80bbf14620007d957600080fd5b80631a9188761162000403578063349195f911620003ce578063349195f9146200060e5780633bc5de301462000617578063423eb9fa14620006335780634288121d14620006485780634793b4ab146200065a57600080fd5b80631a918876146200057d5780631aa3a00814620005ad578063278b381b14620005d057806331b62a3b14620005e757600080fd5b80630d0ccc5b11620004445780630d0ccc5b14620005195780630d8e6e2c146200053f5780630d9b998d146200055e57806315dae03e146200057557600080fd5b806301ffc9a7146200047a57806306a5298b14620004bf57806307af0dc014620004d857806309648a9d14620004ef575b600080fd5b620004aa6200048b366004620043de565b6001600160e01b03191660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b620004d6620004d03660046200456c565b62000d25565b005b620004d6620004e936600462004742565b62000d54565b6200050662000500366004620048c4565b62000e11565b60405160ff9091168152602001620004b6565b620005306200052a366004620048de565b62000e88565b604051908152602001620004b6565b6200054962000f11565b60405162ffffff9091168152602001620004b6565b620004d66200056f36600462004916565b62000f9e565b603262000506565b620005946200058e366004620049af565b62001141565b6040516001600160a01b039091168152602001620004b6565b620005b762001172565b6040516001600160601b039091168152602001620004b6565b620004aa620005e1366004620049af565b6200126d565b7f0000000000000000000000000000000000000000000000000000000000000000620005b7565b600f5462000530565b60408051602081018252600081529051620004b6919062004a23565b620004d66200064436600462004a38565b5050565b6006546001600160a01b031662000594565b620006716200066b366004620049af565b6200127c565b604051620004b6919062004ad8565b620007336200069136600462004b93565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525062ffffff90811660009081526020818152604091829020825160a0810184528154948516815263010000009094046001600160a01b03908116928501929092526001015490811691830191909152600160a01b810464ffffffffff166060830152600160c81b900463ffffffff16608082015290565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001620004b6565b620004aa620007a236600462004b93565b620012a9565b620007bf620007b9366004620048c4565b6200134d565b6040516001600160c01b03199091168152602001620004b6565b620007f0620007ea366004620049af565b6200138f565b604080518251151581526020928301519281019290925201620004b6565b7f000000000000000000000000000000000000000000000000000000000000000062000594565b620004d66200084636600462004bb3565b505050565b620004d66200085c36600462004c2c565b620013c4565b620005b76200146d565b620005306200087d36600462004c5f565b620014d5565b6200053062000894366004620049af565b620014f9565b6007546001600160a01b031662000594565b6004546001600160a01b031662000594565b620004d66200064436600462004c7f565b620005b7620008e0366004620048c4565b6200158a565b62000594620015d2565b60095462000530565b604080518082018252600080825260209182015281518083019092526013548252601454908201525b604051620004b6919062004ca0565b6200095b6200094236600462004c5f565b5060408051808201909152600081526060602082015290565b604051620004b6919062004cb8565b62000594620015ec565b620004d66200098536600462004cf0565b620015f8565b60015462000530565b62000530620009a536600462004db7565b620017f5565b620004d6620009bc36600462004dea565b6200195f565b620004aa620009d336600462004e30565b6001600160c01b031982166000908152600a602090815260408083206001600160a01b038516845290915290205460ff1692915050565b620005b762000a1b366004620049af565b6001600160601b039081166000908152601160205260409020541690565b620004d662000a4a36600462004e63565b62001adf565b6200059462000a61366004620049af565b6001600160601b03166000908152601260205260409020546001600160a01b031690565b6200059462000a96366004620049af565b62001b4c565b6200053062000aad366004620048c4565b62001b78565b620007bf62000ac436600462004e8b565b62001bb4565b62000ad462001d3d565b6040516001600160401b039091168152602001620004b6565b6200054962000afe366004620048c4565b62001d71565b620004d662000b1536600462004ed8565b62001db5565b620007bf62000b2c36600462004e8b565b62001e86565b620004d662000b4336600462004e30565b62001f06565b62000b6062000b5a366004620049af565b6200206f565b604051620004b6919062004f0d565b620004d662000b8036600462004e30565b62002100565b6005546001600160a01b031662000594565b62000baf62000ba936600462004c5f565b62002300565b604051620004b691906200504c565b620004d662000bcf36600462004bb3565b620023fe565b6200092262000be636600462005095565b6200240a565b620004d662000bfd366004620050c7565b62002499565b620005b762000c14366004620050fa565b620026b7565b620004d662000c2b36600462005129565b6200274e565b620004d662000c4236600462004dea565b6200278b565b620004d662000c593660046200515e565b620028d9565b6200059462000c70366004620051b0565b620031e4565b620004d662000c87366004620051d1565b62003209565b620004aa62000c9e36600462004c5f565b62003389565b62000cbb62000cb5366004620051f4565b620033b4565b60408051928352602083019190915201620004b6565b62000ce862000ce2366004620049af565b6200344b565b604051620004b6919062005224565b620004d662000d083660046200530d565b6200350f565b620004d662000d1f36600462004c2c565b62003687565b620006446065838360405160200162000d3f919062005224565b6040516020818303038152906040526200375c565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dbb919062005405565b6001600160a01b0316336001600160a01b03161462000df75760405162461bcd60e51b815260040162000dee9062005425565b60405180910390fd5b6200064460d2838360405160200162000d3f919062004f0d565b6003546040516309648a9d60e01b8152600481018390526000916001600160a01b0316906309648a9d90602401602060405180830381865afa15801562000e5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e82919062005466565b92915050565b604051631488c84560e01b815260048101839052600082810b60248301529073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__90631488c84590604401602060405180830381865af415801562000ee4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a919062005486565b9392505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801562000f73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f999190620054a0565b905090565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001005919062005405565b6001600160a01b0316336001600160a01b031614620010385760405162461bcd60e51b815260040162000dee9062005425565b6000604051806101c00160405280896001600160601b03168152602001836001600160601b03168152602001886001600160c01b031916815260200160006001600160a01b03168152602001876001600160c01b031916815260200186815260200185815260200160008152602001848152602001604051806020016040528060008152508152602001604051806020016040528060008152508152602001620010e0600090565b64ffffffffff168152602001600064ffffffffff168152602001600064ffffffffff16905290506200113660d28a8360405160200162001121919062004f0d565b60405160208183030381529060405262003852565b505050505050505050565b6000806200115260645b8462003911565b806020019051810190620011679190620054cd565b602001519392505050565b60006200117e620015ec565b6001600160a01b0316336001600160a01b031614620011e05760405162461bcd60e51b815260206004820152601760248201527f4552524f523a5247422d3030313a4e4f545f4f574e4552000000000000000000604482015260640162000dee565b604051632210724360e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634420e486906024016020604051808303816000875af115801562001247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f99919062005522565b600062000e8260658362003a16565b6200128662004358565b6200129460dc5b8362003911565b80602001905181019062000e829190620055ce565b62ffffff8116600090815260208190526040808220600101549051631bbffab160e21b8152600160c81b90910463ffffffff166004820152819073__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af415801562001320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001346919062005486565b1192915050565b600060098281548110620013655762001365620056af565b90600052602060002090600491828204019190066008029054906101000a900460c01b9050919050565b6040805180820190915260008082526020820152620013af608c6200128d565b80602001905181019062000e829190620056c5565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142b919062005405565b6001600160a01b0316336001600160a01b0316146200145e5760405162461bcd60e51b815260040162000dee9062005425565b6200064460d25b838362003b17565b604051636939560f60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d272ac1e90602401602060405180830381865afa15801562001247573d6000803e3d6000fd5b6001600160c01b031981166000908152600b6020526040812062000e829062003be2565b6001600160601b038116600090815260106020526040808220905163697d0f1b60e11b8152600481019190915273__$0dc988b1672de335b826773df9015af2da$__9063d2fa1e36906024015b602060405180830381865af415801562001564573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e82919062005486565b6000600f8281548110620015a257620015a2620056af565b9060005260206000209060029182820401919006600c029054906101000a90046001600160601b03169050919050565b600062000f996003546001600160a01b031690565b919050565b600062000f9962003bed565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001639573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200165f919062005405565b6001600160a01b0316336001600160a01b031614620016c15760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000dee565b6000604051806101000160405280886001600160601b0316815260200187815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820188905260408201526060810187905260800142604051631ded81af60e31b815264ffffffffff90911660048201526024810187905273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af415801562001792573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b8919062005704565b64ffffffffff168152602001600064ffffffffff1690529050620017eb60dc898360405160200162001121919062004ad8565b5050505050505050565b6000306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001838573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200185e919062005405565b6001600160a01b0316336001600160a01b031614620018915760405162461bcd60e51b815260040162000dee9062005724565b506001600160601b038083166000818152600e602090815260408083209486168352938152838220805490839055928252600d9052829020915163539eabab60e11b8152909173__$0dc988b1672de335b826773df9015af2da$__9163a73d575691620019149186906004019182526001600160601b0316602082015260400190565b602060405180830381865af415801562001932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001958919062005765565b5092915050565b6001600160601b03828116600090815260106020526040908190209051632bfdd6b960e01b81526004810182905291851660248301529073__$0dc988b1672de335b826773df9015af2da$__90632bfdd6b990604401602060405180830381865af4158015620019d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019f9919062005765565b1562001a525760405162461bcd60e51b815260206004820152602160248201527f4552524f523a504c2d3032303a42554e444c455f414c52454144595f414444456044820152601160fa1b606482015260840162000dee565b604051631461054360e31b8152600481018290526001600160601b038516602482015273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af415801562001ab2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ad8919062005765565b5050505050565b60035460405163a238accd60e01b81526004810184905260ff831660248201526001600160a01b039091169063a238accd90604401600060405180830381600087803b15801562001b2f57600080fd5b505af115801562001b44573d6000803e3d6000fd5b505050505050565b60008062001b5b60646200114b565b80602001905181019062001b709190620054cd565b519392505050565b6040516322f5db0f60e11b81526004810182905260009073__$fa7f345063a1bf0cf2bd14a32ccc1b6018$__906345ebb61e9060240162001546565b6000306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bf5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c1b919062005405565b6001600160a01b0316336001600160a01b03161462001c4e5760405162461bcd60e51b815260040162000dee9062005785565b60405163e14787cb60e01b815273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9062001c8790859060040162004a23565b602060405180830381865af415801562001ca5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ccb9190620057c9565b905062001cd88162003389565b1562001d315760405162461bcd60e51b815260206004820152602160248201527f4552524f523a4143532d3031303a524f4c455f414c52454144595f45584953546044820152605360f81b606482015260840162000dee565b620015e7818362003d4f565b600062000f997ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00546001600160401b031690565b60006001828154811062001d895762001d89620056af565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b604080518082019091526001600160601b03831681526020810182905262001e8060c86040516355ee627560e01b81526001600160c01b03198716600482015273__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801562001e32573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e58919062005486565b8360405160200162001e6b919062004cb8565b60405160208183030381529060405262003db4565b50505050565b60405163e14787cb60e01b815260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063e14787cb9062001ec290859060040162004a23565b602060405180830381865af415801562001ee0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e829190620057c9565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b161462001f4a5760405162461bcd60e51b815260040162000dee90620057e9565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001faf919062005405565b6001600160a01b0316336001600160a01b03161462001fe25760405162461bcd60e51b815260040162000dee9062005785565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19169055928252600b9052206200202b908362003dea565b507fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d1698754539668483836000604051620020629392919062005820565b60405180910390a1505050565b604080516101c08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201819052610140820152610160810182905261018081018290526101a0810191909152620020eb60d26200128d565b80602001905181019062000e8291906200584d565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620021445760405162461bcd60e51b815260040162000dee90620057e9565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021a9919062005405565b6001600160a01b0316336001600160a01b031614620021dc5760405162461bcd60e51b815260040162000dee9062005785565b6001600160c01b0319831660009081526008602052604090206002015460ff166200224a5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4143532d3034303a524f4c455f4e4f545f414354495645000000604482015260640162000dee565b6001600160c01b031983166000818152600a602090815260408083206001600160a01b03871684528252808320805460ff19166001179055928252600b90522062002296908362003e01565b506001600160c01b031983166000908152600a602090815260408083206001600160a01b0386168452909152908190205490517fab64a6bff51dad0663bf6702fca25a9e2751ecc0353d6fe92d169875453966849162002062918691869160ff9091169062005820565b6040805160608082018352600080835260208084018390528385018290526001600160c01b0319868116835260088252918590208551938401909552845460c01b909116825260018401805493949293918401916200235f90620059ba565b80601f01602080910402602001604051908101604052809291908181526020018280546200238d90620059ba565b8015620023de5780601f10620023b257610100808354040283529160200191620023de565b820191906000526020600020905b815481529060010190602001808311620023c057829003601f168201915b50505091835250506002919091015460ff16151560209091015292915050565b62000846838362003e18565b60408051808201825260008082526020820152905163638086fd60e11b8152600481018490526024810183905273__$a23651848365a6a5ca15f07b4331037f48$__9063c7010dfa906044016040805180830381865af415801562002473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a9190620059f6565b6001600160c01b0319828116600081815260086020526040902054849260c09190911b1614620024dd5760405162461bcd60e51b815260040162000dee90620057e9565b306001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200251c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002542919062005405565b6001600160a01b0316336001600160a01b031614620025755760405162461bcd60e51b815260040162000dee9062005785565b6001600160c01b03198084166000908152600860209081526040808320815160608101909252805460c01b9094168152600184018054939491939192840191620025bf90620059ba565b80601f0160208091040260200160405190810160405280929190818152602001828054620025ed90620059ba565b80156200263e5780601f1062002612576101008083540402835291602001916200263e565b820191906000526020600020905b8154815290600101906020018083116200262057829003601f168201915b50505091835250506002919091015460ff161515602090910152831515604082015290506200266d81620040e9565b604080516001600160c01b03198616815284151560208201527feaffaec948991ecc6e201ba4f67ba865fbf66aace3d2f2823dc5483cc9813fda910160405180910390a150505050565b6001600160601b038216600090815260106020526040808220905163e797d89960e01b815260048101919091526024810183905273__$0dc988b1672de335b826773df9015af2da$__9063e797d89990604401602060405180830381865af415801562002728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a919062005522565b60408051808201825283151580825260208083018581528451918201929092529051928101929092529062001e8090608c90869060600162001121565b306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620027cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027f2919062005405565b6001600160a01b0316336001600160a01b031614620028255760405162461bcd60e51b815260040162000dee9062005724565b6001600160601b038381166000818152600e60209081526040808320948716808452948252808320869055928252600d90528190209051631461054360e31b81526004810191909152602481019190915273__$0dc988b1672de335b826773df9015af2da$__9063a3082a1890604401602060405180830381865af4158015620028b3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e80919062005765565b6000836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200291a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002940919062005522565b90506000836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002983573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029a9919062005522565b90506000836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620029ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a12919062005522565b6040516330b8415f60e01b81526001600160601b038516600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562002a6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a94919062005765565b62002ae25760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5452532d3031303a50524f445543545f554e444546494e454400604482015260640162000dee565b6040516330b8415f60e01b81526001600160601b038316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801562002b3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b61919062005765565b62002baf5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a5452532d3031313a504f4f4c5f554e444546494e454400000000604482015260640162000dee565b6001600160601b0383166000908152601260205260409020546001600160a01b03161562002c375760405162461bcd60e51b815260206004820152602e60248201527f4552524f523a5452532d3031323a544f4b454e5f48414e444c45525f414c524560448201526d10511657d49151d254d51154915160921b606482015260840162000dee565b6001600160601b0382811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af415801562002ca3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc9919062005765565b62002d215760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5452532d3031333a504f4f4c5f414c52454144595f4c494e4b456044820152601160fa1b606482015260840162000dee565b6001600160601b0381811660009081526011602052604090819020549051630a4d29dd60e31b81529116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af415801562002d8d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002db3919062005765565b62002e135760405162461bcd60e51b815260206004820152602960248201527f4552524f523a5452532d3031343a434f4d50454e534154494f4e5f414c524541604482015268111657d3125392d15160ba1b606482015260840162000dee565b6000866001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002e54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e7a919062005405565b9050838160405162002e8c90620043d0565b6001600160601b0390921682526001600160a01b03166020820152604001604051809103906000f08015801562002ec7573d6000803e3d6000fd5b506001600160601b03858116600081815260126020908152604080832080546001600160a01b0319166001600160a01b039788161790558785168084526011835281842080546bffffffffffffffffffffffff199081168717909155958a16808552828520805490971690951790955580516101208101825293845290830193909352848416828401528251631380bf2360e01b815283519194929360608501938d1692631380bf239260048082019392918290030181865afa15801562002f93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fb99190620059f6565b8152602001896001600160a01b031663daafed406040518163ffffffff1660e01b81526004016040805180830381865afa15801562002ffc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030229190620059f6565b8152602001886001600160a01b0316636741fad26040518163ffffffff1660e01b81526004016040805180830381865afa15801562003065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200308b9190620059f6565b8152602001886001600160a01b0316634b270a466040518163ffffffff1660e01b81526004016040805180830381865afa158015620030ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030f49190620059f6565b8152602001886001600160a01b031663235c36036040518163ffffffff1660e01b81526004016040805180830381865afa15801562003137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200315d9190620059f6565b8152602001876001600160a01b0316637c3d51666040518163ffffffff1660e01b81526004016040805180830381865afa158015620031a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031c69190620059f6565b90529050620017eb6065868360405160200162001121919062005224565b6001600160c01b031982166000908152600b6020526040812062000f0a9083620041c7565b306001600160a01b0316636fa298536040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200326e919062005405565b6001600160a01b0316336001600160a01b031614620032d05760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a434d502d3030313a4e4f545f4f574e45525f5345525649434500604482015260640162000dee565b604080518082019091526001600160a01b03838116825282166020820152600f8054600180820183556000929092527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8026002820401805492909116600c026101000a6001600160601b03818102199093169287160291909117905562001e8062003358606490565b858360405160200162001121919081516001600160a01b039081168252602092830151169181019190915260400190565b6001600160c01b0319818116600081815260086020526040812054909260c09190911b161462000e82565b60405163012ebd8360e21b8152815160048201526020820151602482015260448101839052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af41580156200341a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003440919062005a15565b915091509250929050565b620034ee6040805161012081018252600080825260208083018290528284018290528351808501855282815280820183905260608401528351808501855282815280820183905260808401528351808501855282815280820183905260a08401528351808501855282815280820183905260c08401528351808501855282815280820183905260e084015283518085019094528184528301529061010082015290565b620034fa60656200128d565b80602001905181019062000e82919062005a3a565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003550573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003576919062005405565b6001600160a01b0316336001600160a01b031614806200360d5750306001600160a01b0316634288121d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620035d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035f8919062005405565b6001600160a01b0316336001600160a01b0316145b6200366d5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a42444c2d3030333a4e4f545f504f4f4c5f4f525f50524f445543604482015268545f5345525649434560b81b606482015260840162000dee565b6200064460dc838360405160200162000d3f919062004ad8565b306001600160a01b0316636b9bf08b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620036c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036ee919062005405565b6001600160a01b0316336001600160a01b031614620037505760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a42444c2d3030313a4e4f545f504f4f4c5f534552564943450000604482015260640162000dee565b6200064460dc62001465565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690636ec3d9409073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620037d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037f9919062005486565b836040518363ffffffff1660e01b81526004016200381992919062005b0e565b600060405180830381600087803b1580156200383457600080fd5b505af115801562003849573d6000803e3d6000fd5b50505050505050565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b0390911690635dee47889073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af4158015620038c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038ef919062005486565b85846040518463ffffffff1660e01b8152600401620038199392919062005b29565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526060916001600160a01b0316906354f6127f9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003989573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039af919062005486565b6040518263ffffffff1660e01b8152600401620039ce91815260200190565b600060405180830381865afa158015620039ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f0a919081019062005b56565b600c54604051630711349960e31b81526001600160601b038316600482015260ff841660248201526000916001600160a01b0316906338a699a49073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003a8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ab4919062005486565b6040518263ffffffff1660e01b815260040162003ad391815260200190565b602060405180830381865afa15801562003af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f0a919062005765565b600c54604051630711349960e31b81526001600160601b038416600482015260ff851660248201526001600160a01b039091169063a238accd9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401602060405180830381865af415801562003b8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bb4919062005486565b6040516001600160e01b031960e084901b168152600481019190915260ff8416602482015260440162003819565b600062000e82825490565b604051636939560f60e11b815230600482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d272ac1e90602401602060405180830381865afa15801562003c57573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c7d919062005522565b90506001600160601b03811662003cb5577f000000000000000000000000000000000000000000000000000000000000000091505090565b60405163df33330b60e01b81526001600160601b03821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063df33330b90602401602060405180830381865afa15801562003d23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d49919062005405565b91505090565b604080516060810182526001600160c01b0319841681526020810183905260019181019190915262003d8181620040e9565b7f34e1f82fc40bf14028ae2a3150f074e7715e20ed8e30e250f8789cee718c648583836040516200206292919062005b8e565b600c54604051630bbdc8f160e31b81526001600160a01b0390911690635dee478890620038199085908790869060040162005b29565b600062000f0a836001600160a01b038416620041d5565b600062000f0a836001600160a01b038416620042d9565b600062003e2462000f11565b905062003e3181620012a9565b1562003e905760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b606482015260840162000dee565b6001541562003f5757600180546000919062003eae90829062005bb5565b8154811062003ec15762003ec1620056af565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff16905062003efb828262ffffff90811691161190565b62003f555760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b606482015260840162000dee565b505b600180548082018255600091909152600a8082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805462ffffff808616600394909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b0380861660208401528416908201526060810162003fe04290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890620020629083908690869062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b80516001600160c01b0319811660009081526008602090815260409091208351815467ffffffffffffffff191660c09190911c17815590830151839190600182019062004137908262005c21565b50604091909101516002909101805460ff19169115159190911790556200415e8162003389565b6200064457600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600482040180546001600160401b0360039093166008026101000a928302191660c09390931c9190910291909117905550565b600062000f0a83836200432b565b60008181526001830160205260408120548015620042ce576000620041fc60018362005bb5565b8554909150600090620042129060019062005bb5565b90508181146200427e576000866000018281548110620042365762004236620056af565b90600052602060002001549050808760000184815481106200425c576200425c620056af565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062004292576200429262005ced565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000e82565b600091505062000e82565b6000818152600183016020526040812054620043225750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000e82565b50600062000e82565b6000826000018281548110620043455762004345620056af565b9060005260206000200154905092915050565b60405180610100016040528060006001600160601b0316815260200162004392604051806040016040528060008152602001600081525090565b815260200160608152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6102aa8062005d0483390190565b600060208284031215620043f157600080fd5b81356001600160e01b03198116811462000f0a57600080fd5b6001600160601b03811681146200442057600080fd5b50565b8035620015e7816200440a565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156200446b576200446b62004430565b60405290565b60405161012081016001600160401b03811182821017156200446b576200446b62004430565b6040516101c081016001600160401b03811182821017156200446b576200446b62004430565b60405161010081016001600160401b03811182821017156200446b576200446b62004430565b604051601f8201601f191681016001600160401b03811182821017156200450e576200450e62004430565b604052919050565b6001600160a01b03811681146200442057600080fd5b8035620015e78162004516565b6000604082840312156200454c57600080fd5b6200455662004446565b9050813581526020820135602082015292915050565b6000808284036102008112156200458257600080fd5b83356200458f816200440a565b92506101e0601f1982011215620045a557600080fd5b50620045b062004471565b620045be6020850162004423565b8152620045ce6040850162004423565b6020820152620045e1606085016200452c565b6040820152620045f5856080860162004539565b6060820152620046098560c0860162004539565b60808201526101006200461f8682870162004539565b60a08301526200463486610140870162004539565b60c08301526200464986610180870162004539565b60e08301526200465e866101c0870162004539565b90820152919491935090915050565b6001600160c01b0319811681146200442057600080fd5b8035620015e7816200466d565b60006001600160401b03821115620046ad57620046ad62004430565b50601f01601f191660200190565b6000620046d2620046cc8462004691565b620044e3565b9050828152838383011115620046e757600080fd5b828260208301376000602084830101529392505050565b600082601f8301126200471057600080fd5b62000f0a83833560208501620046bb565b64ffffffffff811681146200442057600080fd5b8035620015e78162004721565b600080604083850312156200475657600080fd5b823562004763816200440a565b915060208301356001600160401b03808211156200478057600080fd5b908401906101c082870312156200479657600080fd5b620047a062004497565b620047ab8362004423565b8152620047bb6020840162004423565b6020820152620047ce6040840162004684565b6040820152620047e1606084016200452c565b6060820152620047f46080840162004684565b608082015260a083013560a082015260c083013560c082015260e083013560e082015261010080840135818301525061012080840135838111156200483857600080fd5b6200484689828701620046fe565b82840152505061014080840135838111156200486157600080fd5b6200486f89828701620046fe565b82840152505061016091506200488782840162004735565b8282015261018091506200489d82840162004735565b828201526101a09150620048b382840162004735565b828201528093505050509250929050565b600060208284031215620048d757600080fd5b5035919050565b60008060408385031215620048f257600080fd5b8235915060208301358060000b81146200490b57600080fd5b809150509250929050565b600080600080600080600080610100898b0312156200493457600080fd5b883562004941816200440a565b9750602089013562004953816200440a565b9650604089013562004965816200466d565b9550606089013562004977816200466d565b94506080890135935060a0890135925060c0890135915060e08901356200499e816200440a565b809150509295985092959890939650565b600060208284031215620049c257600080fd5b813562000f0a816200440a565b60005b83811015620049ec578181015183820152602001620049d2565b50506000910152565b6000815180845262004a0f816020860160208601620049cf565b601f01601f19169290920160200192915050565b60208152600062000f0a6020830184620049f5565b6000806040838503121562004a4c57600080fd5b823562004a59816200466d565b915060208301356001600160401b038082111562004a7657600080fd5b908401906040828703121562004a8b57600080fd5b62004a9562004446565b823562004aa2816200440a565b815260208301358281111562004ab757600080fd5b62004ac588828601620046fe565b6020830152508093505050509250929050565b602081526001600160601b0382511660208201526000602083015162004b0b604084018280518252602090810151910152565b50604083015161012080608085015262004b2a610140850183620049f5565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015162004b6461010086018264ffffffffff169052565b5060e085015164ffffffffff8116858301525b5090949350505050565b62ffffff811681146200442057600080fd5b60006020828403121562004ba657600080fd5b813562000f0a8162004b81565b60008060006060848603121562004bc957600080fd5b833562004bd68162004516565b9250602084013562004be88162004516565b915060408401356001600160401b0381111562004c0457600080fd5b62004c1286828701620046fe565b9150509250925092565b60ff811681146200442057600080fd5b6000806040838503121562004c4057600080fd5b823562004c4d816200440a565b915060208301356200490b8162004c1c565b60006020828403121562004c7257600080fd5b813562000f0a816200466d565b6000806040838503121562004c9357600080fd5b823562004c4d816200466d565b81518152602080830151908201526040810162000e82565b602081526001600160601b0382511660208201526000602083015160408084015262004ce86060840182620049f5565b949350505050565b600080600080600080600060e0888a03121562004d0c57600080fd5b873562004d19816200440a565b9650602088013562004d2b816200440a565b955062004d3c8960408a0162004539565b94506080880135935060a0880135925060c08801356001600160401b038082111562004d6757600080fd5b818a0191508a601f83011262004d7c57600080fd5b81358181111562004d8c57600080fd5b8b602082850101111562004d9f57600080fd5b60208301945080935050505092959891949750929550565b6000806040838503121562004dcb57600080fd5b823562004dd8816200440a565b915060208301356200490b816200440a565b60008060006060848603121562004e0057600080fd5b833562004e0d816200440a565b9250602084013562004e1f816200440a565b929592945050506040919091013590565b6000806040838503121562004e4457600080fd5b823562004e51816200466d565b915060208301356200490b8162004516565b6000806040838503121562004e7757600080fd5b8235915060208301356200490b8162004c1c565b60006020828403121562004e9e57600080fd5b81356001600160401b0381111562004eb557600080fd5b8201601f8101841362004ec757600080fd5b62004ce884823560208401620046bb565b60008060006060848603121562004eee57600080fd5b833562004efb816200466d565b9250602084013562004be8816200440a565b6020815262004f286020820183516001600160601b03169052565b6000602083015162004f4560408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160a01b03811660808401525060808301516001600160c01b0319811660a08401525060a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101c0610140818186015262004fd96101e0860184620049f5565b9250808601519050610160601f19868503018187015262004ffb8483620049f5565b9350808701519150506101806200501a8187018364ffffffffff169052565b86015190506101a0620050358682018364ffffffffff169052565b86015164ffffffffff811683870152905062004b77565b602080825282516001600160c01b03191682820152820151606060408301526000906200507d6080840182620049f5565b90506040840151151560608401528091505092915050565b60008060408385031215620050a957600080fd5b50508035926020909101359150565b80151581146200442057600080fd5b60008060408385031215620050db57600080fd5b8235620050e8816200466d565b915060208301356200490b81620050b8565b600080604083850312156200510e57600080fd5b82356200511b816200440a565b946020939093013593505050565b6000806000606084860312156200513f57600080fd5b83356200514c816200440a565b9250602084013562004e1f81620050b8565b6000806000606084860312156200517457600080fd5b8335620051818162004516565b92506020840135620051938162004516565b91506040840135620051a58162004516565b809150509250925092565b60008060408385031215620051c457600080fd5b82356200511b816200466d565b600080600060608486031215620051e757600080fd5b833562005181816200440a565b600080606083850312156200520857600080fd5b823591506200521b846020850162004539565b90509250929050565b81516001600160601b031681526020808301516101e083019162005252908401826001600160601b03169052565b5060408301516200526e60408401826001600160a01b03169052565b5060608301516200528c606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c0830151805161012084015260208101516101408401525060e0830151805161016084015260208101516101808401525061010083015180516101a084015260208101516101c084015262001958565b600080604083850312156200532157600080fd5b82356200532e816200440a565b915060208301356001600160401b03808211156200534b57600080fd5b9084019061012082870312156200536157600080fd5b6200536b620044bd565b620053768362004423565b815262005387876020850162004539565b60208201526060830135828111156200539f57600080fd5b620053ad88828601620046fe565b6040830152506080830135606082015260a0830135608082015260c083013560a0820152620053df60e0840162004735565b60c0820152620053f3610100840162004735565b60e08201528093505050509250929050565b6000602082840312156200541857600080fd5b815162000f0a8162004516565b60208082526021908201527f4552524f523a504f4c2d3030313a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b6000602082840312156200547957600080fd5b815162000f0a8162004c1c565b6000602082840312156200549957600080fd5b5051919050565b600060208284031215620054b357600080fd5b815162000f0a8162004b81565b8051620015e78162004516565b600060408284031215620054e057600080fd5b620054ea62004446565b8251620054f78162004516565b81526020830151620055098162004516565b60208201529392505050565b8051620015e7816200440a565b6000602082840312156200553557600080fd5b815162000f0a816200440a565b6000604082840312156200555557600080fd5b6200555f62004446565b9050815181526020820151602082015292915050565b600082601f8301126200558757600080fd5b815162005598620046cc8262004691565b818152846020838601011115620055ae57600080fd5b62004ce8826020830160208701620049cf565b8051620015e78162004721565b600060208284031215620055e157600080fd5b81516001600160401b0380821115620055f957600080fd5b9083019061012082860312156200560f57600080fd5b62005619620044bd565b620056248362005515565b815262005635866020850162005542565b60208201526060830151828111156200564d57600080fd5b6200565b8782860162005575565b6040830152506080830151606082015260a0830151608082015260c083015160a08201526200568d60e08401620055c1565b60c0820152620056a16101008401620055c1565b60e082015295945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215620056d857600080fd5b620056e262004446565b8251620056ef81620050b8565b81526020928301519281019290925250919050565b6000602082840312156200571757600080fd5b815162000f0a8162004721565b60208082526021908201527f4552524f523a42444c2d3030323a4e4f545f50524f445543545f5345525649436040820152604560f81b606082015260800190565b6000602082840312156200577857600080fd5b815162000f0a81620050b8565b60208082526017908201527f4552524f523a4143532d3030313a4e4f545f4f574e4552000000000000000000604082015260600190565b8051620015e7816200466d565b600060208284031215620057dc57600080fd5b815162000f0a816200466d565b6020808252601f908201527f4552524f523a4143532d3030323a524f4c455f4e4f545f4558495354494e4700604082015260600190565b6001600160c01b03199390931683526001600160a01b039190911660208301521515604082015260600190565b6000602082840312156200586057600080fd5b81516001600160401b03808211156200587857600080fd5b908301906101c082860312156200588e57600080fd5b6200589862004497565b620058a38362005515565b8152620058b36020840162005515565b6020820152620058c660408401620057bc565b6040820152620058d960608401620054c0565b6060820152620058ec60808401620057bc565b608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012080840151838111156200593057600080fd5b6200593e8882870162005575565b82840152505061014080840151838111156200595957600080fd5b620059678882870162005575565b82840152505061016091506200597f828401620055c1565b82820152610180915062005995828401620055c1565b828201526101a09150620059ab828401620055c1565b91810191909152949350505050565b600181811c90821680620059cf57607f821691505b602082108103620059f057634e487b7160e01b600052602260045260246000fd5b50919050565b60006040828403121562005a0957600080fd5b62000f0a838362005542565b6000806040838503121562005a2957600080fd5b505080516020909101519092909150565b60006101e0828403121562005a4e57600080fd5b62005a5862004471565b62005a638362005515565b815262005a736020840162005515565b602082015262005a8660408401620054c0565b604082015262005a9a846060850162005542565b606082015262005aae8460a0850162005542565b608082015262005ac28460e0850162005542565b60a082015262005ad784610120850162005542565b60c082015262005aec84610160850162005542565b60e082015262005b01846101a0850162005542565b6101008201529392505050565b82815260406020820152600062004ce86040830184620049f5565b83815260ff8316602082015260606040820152600062005b4d6060830184620049f5565b95945050505050565b60006020828403121562005b6957600080fd5b81516001600160401b0381111562005b8057600080fd5b62004ce88482850162005575565b6001600160401b0360c01b8316815260406020820152600062004ce86040830184620049f5565b8181038181111562000e8257634e487b7160e01b600052601160045260246000fd5b601f8211156200084657600081815260208120601f850160051c8101602086101562005c005750805b601f850160051c820191505b8181101562001b445782815560010162005c0c565b81516001600160401b0381111562005c3d5762005c3d62004430565b62005c558162005c4e8454620059ba565b8462005bd7565b602080601f83116001811462005c8d576000841562005c745750858301515b600019600386901b1c1916600185901b17855562001b44565b600085815260208120601f198616915b8281101562005cbe5788860151825594840194600190910190840162005c9d565b508582101562005cdd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b506040516102aa3803806102aa83398101604081905261002f9161005b565b6001600160a01b03166c01000000000000000000000000026001600160601b03909116176000556100ad565b6000806040838503121561006e57600080fd5b82516001600160601b038116811461008557600080fd5b60208401519092506001600160a01b03811681146100a257600080fd5b809150509250929050565b6101ee806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c806251884a1461004557806321df0da71461006a578063beabacc814610095575b600080fd5b6000546040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b600054600160601b90046001600160a01b03166040516001600160a01b039091168152602001610061565b6100a86100a3366004610153565b6100aa565b005b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052600160601b909204909116906323b872dd906064016020604051808303816000875af115801561010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610131919061018f565b50505050565b80356001600160a01b038116811461014e57600080fd5b919050565b60008060006060848603121561016857600080fd5b61017184610137565b925061017f60208501610137565b9150604084013590509250925092565b6000602082840312156101a157600080fd5b815180151581146101b157600080fd5b939250505056fea264697066735822122098042a25f53a65deabe0e6f542a37f2241e6a3e8502eedd92fc64bb45d25bfc364736f6c63430008140033a26469706673582212203fea569f115940828fe2364d7cbf2a2b59bf09fb5f0c2e2059de68282105df6d64736f6c63430008140033",
2695
+ "bytecode": "0x60806040523480156200001157600080fd5b50620000546301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600280546001600160a01b031916331790556200007062000094565b6200007a6200024b565b6200008462000385565b6200008e620005f2565b6200076b565b60dc600090815260036020527fa093975c0a88af8b2bf4799c5b4be14d42fc326c2a331b9f3fb3caecbaa5104f805460ff19166064179055600190600490620000db60dc90565b60ff1660ff1681526020019081526020016000206000620001016200073960201b60201c565b60ff1660ff1681526020019081526020016000206000620001276200074360201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200015b60dc90565b60ff1660ff1681526020019081526020016000206000620001816200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620001a76200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620001db60dc90565b60ff1660ff1681526020019081526020016000206000620002016200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620002276200074860201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f6b16ef514f22b74729cbea5cc7babfecbdc2309e530ca716643d11fe929eed2e8054606460ff1991821681179092557fd95a7ca9e147710ebdb88338ab2e67ddd90cff367c512f0cd93015f31f62adca8054909116600190811790915560009182526004602052907f083fc81be30b6287dea23aa60f8ffaf268f507cdeac82ed9644e506b59c54ff090620002df606e90565b60ff1660ff1681526020019081526020016000206000620003056200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000339606490565b60ff1660ff16815260200190815260200160002060006200035f6200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620002276200074d60201b60201c565b60d2600090815260036020527f4a3d8eec916edb195dbc0ca8a0f405ba03a38efbebf3c35851ce877e52911169805460ff1916600a179055600190600490620003cc60d290565b60ff1660ff1681526020019081526020016000206000620003f26200075260201b60201c565b60ff1660ff1681526020019081526020016000206000620004186200075760201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200044c60d290565b60ff1660ff1681526020019081526020016000206000620004726200075260201b60201c565b60ff1660ff1681526020019081526020016000206000620004986200075c60201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620004cc60d290565b60ff1660ff1681526020019081526020016000206000620004f26200075260201b60201c565b60ff1660ff1681526020019081526020016000206000620005186200076160201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200054c60d290565b60ff1660ff1681526020019081526020016000206000620005726200076160201b60201c565b60ff1660ff1681526020019081526020016000206000620005986200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620005cc60d290565b60ff1660ff1681526020019081526020016000206000620002016200073960201b60201c565b60c8600090815260036020527f4ee5ee9bffee16640c2540fd7f6965fdc66a7e5f780f34dcd70130941a3eae07805460ff191660641790556001906004906200063960c890565b60ff1660ff16815260200190815260200160002060006200065f6200073960201b60201c565b60ff1660ff1681526020019081526020016000206000620006856200074360201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600490620006b960c890565b60ff1660ff1681526020019081526020016000206000620006df6200074360201b60201c565b60ff1660ff1681526020019081526020016000206000620007056200073960201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906004906200033960c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b600060286200073e565b614680806200077b6000396000f3fe608060405234801561001057600080fd5b50600436106103db5760003560e01c8063893d20e81161020a578063bd5947e311610125578063e1033e7d116100b8578063f48016ce11610087578063f48016ce146108f0578063f7bc431c14610903578063f8b648ac1461055b578063fe1f18d614610916578063fed3d63f1461092957600080fd5b8063e1033e7d14610897578063e7cd37d41461089f578063e8951ee6146104e5578063e9e96c70146108b257600080fd5b8063ca600b1c116100f4578063ca600b1c14610869578063d2f21a2914610871578063d5b221bd14610500578063dee326231461088457600080fd5b8063bd5947e31461083b578063bf1db3f91461084e578063bf7e214f14610861578063c2f1a2d21461050057600080fd5b80639df0280b1161019d578063a89896751161016c578063a898967514610802578063a9cea14214610815578063b68ec1461461055b578063bc8d40001461082857600080fd5b80639df0280b146104e5578063a13df2ab1461072b578063a5961b4c1461073e578063a76ee018146107ef57600080fd5b806391ff6eaa116101d957806391ff6eaa146106df578063976b0a77146106f25780639a960d52146107055780639d7421f41461071857600080fd5b8063893d20e8146106965780638dc77f42146104e55780638eaa6ac01461069e5780638fb36037146106be57600080fd5b8063422c9d00116102fa57806361f5f4201161028d5780637a4158021161025c5780637a415802146105005780637a9e5e4b146106705780637cef48421461068357806382f65adb1461055b57600080fd5b806361f5f42014610619578063644c45e01461062a5780636b9bf08b1461065557806375c827761461065d57600080fd5b80635ab1bd53116102c95780635ab1bd53146105e25780635d4345cc146104e55780636071a68e146105f357806360aa32aa1461060657600080fd5b8063422c9d00146105945780634288121d146105a7578063468a1867146105af57806354f6127f146105c257600080fd5b8063138461e01161037257806333bb0a971161034157806333bb0a971461055b57806338a699a41461056e5780633fc5ab981461058157806340529b0f146104e557600080fd5b8063138461e0146104f85780631c45fe7a146105005780631eff4b22146105135780632f61088a1461054857600080fd5b80630d358181116103ae5780630d358181146104965780630f526f7d146104bc5780630fec111c146104cf57806310203d2c146104e557600080fd5b806301ffc9a7146103e057806302cd30711461042257806309648a9d146104475780630b24cf5f14610481575b600080fd5b61040d6103ee366004612e8c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b039091168152602001610419565b61046f610455366004612eb6565b600090815260056020526040902054610100900460ff1690565b60405160ff9091168152602001610419565b61049461048f3660046130c0565b610931565b005b61046f6104a4366004613105565b60ff9081166000908152600360205260409020541690565b6104946104ca366004613122565b610975565b6104d7610992565b6040516104199291906131ab565b6104946104f3366004613122565b610b14565b610494610b29565b61049461050e36600461337a565b610d4b565b61053a7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610419565b610494610556366004613469565b610d8c565b6104946105693660046134b8565b610e27565b61040d61057c366004612eb6565b610e52565b61049461058f3660046135d0565b610ee3565b6104946105a2366004613633565b610f09565b61042f611046565b61053a6105bd366004613650565b6110cc565b6105d56105d0366004612eb6565b611165565b604051610419919061366d565b6001546001600160a01b031661042f565b610494610601366004613680565b61120a565b61049461061436600461377b565b611230565b6007546001600160a01b031661042f565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610419565b61042f611258565b61049461066b3660046137ff565b611273565b61049461067e366004613633565b611299565b610494610691366004613857565b61131c565b61042f6113a6565b6106b16106ac366004612eb6565b611483565b60405161041991906138bf565b6106c66115c4565b6040516001600160e01b03199091168152602001610419565b6104946106ed3660046139eb565b6115fd565b610494610700366004613a19565b611625565b610494610713366004613bb7565b611765565b610494610726366004613bfe565b61178b565b61053a610739366004613650565b6117b1565b6107e261074c366004612eb6565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260056020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104199190613c55565b6104946107fd366004613c63565b6117de565b610494610810366004613caa565b611879565b610494610823366004613cea565b61196a565b610494610836366004613d2b565b611992565b610494610849366004613d70565b6119b8565b61040d61085c366004613105565b6119e0565b61042f611a2d565b61042f611a49565b61049461087f366004613122565b611a64565b610494610892366004613122565b611a7b565b61042f611a92565b6104946108ad366004613db0565b611aad565b61040d6108c0366004613caa565b60ff9283166000908152600460209081526040808320948616835293815283822092851682529190915220541690565b61053a6108fe366004613dee565b611ad5565b610494610911366004613633565b611b60565b610494610924366004613122565b611c4d565b61042f611c62565b61093e335b600036611c7d565b61097161094c836078611d83565b8260405160200161095d9190613e1c565b604051602081830303815290604052611dcf565b5050565b61097e33610936565b61097161098c83608c611d83565b82611dd9565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280610a156001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610a5d6113a6565b6001600160a01b03168152602001826001018054610a7a90613e7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa690613e7c565b8015610af35780601f10610ac857610100808354040283529160200191610af3565b820191906000526020600020905b815481529060010190602001808311610ad657829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b610b1d33610936565b61097161098c836110cc565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baf9190613eb6565b15610bf6576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610c1f5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190613eb6565b610cb4576040516372657a5160e01b81526001600160a01b0382166004820152602401610bed565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d229190613ed3565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610d5433610936565b610d86610d60856110cc565b83604051602001610d719190613ef0565b60405160208183030381529060405283611de3565b50505050565b610d9533610936565b6040516355ee627560e01b81526001600160c01b0319831660048201526109719073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e169190613f43565b8260405160200161095d9190613f5c565b610e3033610936565b610e4d610e3c846110cc565b8260405160200161095d9190613ef0565b505050565b60008181526005602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613eb6565b92915050565b610eec33610936565b610e4d610ef8846117b1565b83604051602001610d719190613f8a565b610f1233610936565b6007546001600160a01b031615610f625760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610bed565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fce919061403e565b6001600160a01b0316146110245760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610bed565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff9091166004820152600360248201526044015b602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061403e565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611141573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613f43565b600081815260056020526040902060010180546060919061118590613e7c565b80601f01602080910402602001604051908101604052809291908181526020018280546111b190613e7c565b80156111fe5780601f106111d3576101008083540402835291602001916111fe565b820191906000526020600020905b8154815290600101906020018083116111e157829003601f168201915b50505050509050919050565b61121333610936565b61097161121f836117b1565b8260405160200161095d9190613f8a565b61123933610936565b610e4d61124784608c611d83565b83604051602001610d71919061405b565b6001546000906001600160a01b031663d39e6043608c61105d565b61127c33610936565b610d86611288856110cc565b83604051602001610d71919061411b565b336112a2611a2d565b6001600160a01b0316816001600160a01b0316146112dd5760405162d1953b60e31b81526001600160a01b0382166004820152602401610bed565b816001600160a01b03163b600003611313576040516361798f2f60e11b81526001600160a01b0383166004820152602401610bed565b61097182611dee565b61132533610936565b6040516355ee627560e01b81526001600160c01b0319831660048201526109719073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611382573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098c9190613f43565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190613eb6565b1561147357600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401611086565b506002546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260056020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019161153b90613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461156790613e7c565b80156115b45780601f10611589576101008083540402835291602001916115b4565b820191906000526020600020905b81548152906001019060200180831161159757829003601f168201915b5050505050815250509050919050565b60008051602061462b833981519152805460009190600160a01b900460ff166115ee5760006115f7565b638fb3603760e01b5b91505090565b61160633610936565b61097161161483606e611d83565b8260405160200161095d919061414b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561166a5750825b90506000826001600160401b031660011480156116865750303b155b905081158015611694575080155b156116b25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116dc57845460ff60401b1916600160401b1785555b6116e589611e4f565b6117048888604660008a60405180602001604052806000815250611e63565b611714635df034a560e11b611f38565b831561175a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61176e33610936565b610e4d61177a846110cc565b83604051602001610d719190614275565b61179433610936565b610e4d6117a0846110cc565b8260405160200161095d919061411b565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6110f5565b6117e733610936565b6040516355ee627560e01b81526001600160c01b031984166004820152610e4d9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118689190613f43565b83604051602001610d719190613f5c565b60ff8381166000908152600360205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af41580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190613eb6565b1561190c57505050565b60ff808416600090815260046020908152604080832086851684528252808320858516845290915290205416610e4d57604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610bed565b61197333610936565b610e4d61198184606e611d83565b83604051602001610d71919061414b565b61199b33610936565b6109716119a7836110cc565b8260405160200161095d9190614275565b6119c133610936565b610e4d6119cf846078611d83565b83604051602001610d719190613e1c565b60ff81811660009081526003602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401610e9c565b60008051602061462b833981519152546001600160a01b031690565b6001546000906001600160a01b031663d39e6043607861105d565b611a6d33610936565b61097161098c836078611d83565b611a8433610936565b61097161098c83606e611d83565b6001546000906001600160a01b031663d39e604360d261105d565b611ab633610936565b610971611ac483608c611d83565b8260405160200161095d919061405b565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af4158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b599190613f43565b9392505050565b611b6933610936565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd5919061403e565b6001600160a01b031614611c2b5760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610bed565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611c5633610936565b61097161098c836117b1565b6001546000906001600160a01b031663d39e604360dc61105d565b60008051602061462b833981519152600080611cb8611c9a611a2d565b8730611caa600460008a8c6143b6565b611cb3916143e0565b611f5d565b9150915081611d7b5763ffffffff811615611d5857825460ff60a01b1916600160a01b178355611ce6611a2d565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611d1593929190614410565b600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b5050845460ff60a01b1916855550611d7b9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610bed565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401611b18565b6109718282612069565b610971828261248b565b610e4d8383836127bf565b60008051602061462b83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611e57612c5a565b611e6081612ca5565b50565b611ea46301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b611eae8287612cb6565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101611f1e8382614496565b50611f2f6303fb044760e21b611f38565b50505050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251611fcc9190614555565b600060405180830381855afa9150503d8060008114612007576040519150601f19603f3d011682016040523d82523d6000602084013e61200c565b606091505b5091509150811561205e57604081511061203e57808060200190518101906120349190614571565b909450925061205e565b602081511061205e578080602001905181019061205b9190613eb6565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e091906145a0565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613eb6565b6121a55760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610bed565b600083815260056020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801561220e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122329190613eb6565b61227e5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610bed565b3343600061228b856119e0565b6122965760646122ac565b60ff808616600090815260036020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526005602052604090209091506001016123368782614496565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd91906145a0565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561241d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244191906145bd565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156124dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125019190613eb6565b61254d5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610bed565b600082815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190613eb6565b6126295760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610bed565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661266d4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156126ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272391906145a0565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612773573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279791906145bd565b87868632876040516127af97969594939291906145da565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128359190613eb6565b6128815760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610bed565b600083815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156128ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129119190613eb6565b61295d5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610bed565b60008581526005602052604090206001016129788582614496565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166129bd4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7391906145a0565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae791906145bd565b8786863287604051612aff97969594939291906145da565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9d91906145a0565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1191906145bd565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c00161247a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612ca357604051631afcd79f60e31b815260040160405180910390fd5b565b612cad612c5a565b611e6081611dee565b6001600160a01b038216612d0c5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610bed565b600280546001600160a01b0319166001600160a01b038416179055610971816001546001600160a01b031615612d645760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610bed565b6001600160a01b038116612d8b5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003612dc15760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610bed565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526316c8f9ff60e01b60048201526301ffc9a790602401602060405180830381865afa925050508015612e3b575060408051601f3d908101601f19168201909252612e3891810190613eb6565b60015b612e635760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610bed565b806109715760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610bed565b600060208284031215612e9e57600080fd5b81356001600160e01b031981168114611b5957600080fd5b600060208284031215612ec857600080fd5b5035919050565b6001600160601b0381168114611e6057600080fd5b8035612eef81612ecf565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405290565b604051608081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405161012081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405161018081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405161020081016001600160401b0381118282101715612f2c57612f2c612ef4565b6001600160a01b0381168114611e6057600080fd5b8035612eef81612fbd565b600060408284031215612fef57600080fd5b612ff7612f0a565b9050813581526020820135602082015292915050565b8015158114611e6057600080fd5b8035612eef8161300d565b600060c0828403121561303857600080fd5b60405160a081018181106001600160401b038211171561305a5761305a612ef4565b604052905080823561306b81612ecf565b8152602083013561307b81612fbd565b602082015261308d8460408501612fdd565b604082015260808301356130a08161300d565b606082015260a08301356130b381612fbd565b6080919091015292915050565b60008060e083850312156130d357600080fd5b82356130de81612ecf565b91506130ed8460208501613026565b90509250929050565b60ff81168114611e6057600080fd5b60006020828403121561311757600080fd5b8135611b59816130f6565b6000806040838503121561313557600080fd5b823561314081612ecf565b91506020830135613150816130f6565b809150509250929050565b60005b8381101561317657818101518382015260200161315e565b50506000910152565b6000815180845261319781602086016020860161315b565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff604085015116608083015260608401516131ef60a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015261323561012084018261317f565b90508281036020840152613249818561317f565b95945050505050565b63ffffffff81168114611e6057600080fd5b600082601f83011261327557600080fd5b81356001600160401b038082111561328f5761328f612ef4565b604051601f8301601f19908116603f011681019082821181831017156132b7576132b7612ef4565b816040528381528660208588010111156132d057600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff81168114612eef57600080fd5b60006080828403121561331757600080fd5b61331f612f32565b9050813561332c81613252565b81526020828101359082015260408201356001600160401b0381111561335157600080fd5b61335d84828501613264565b60408301525061336f606083016132f0565b606082015292915050565b6000806000806080858703121561339057600080fd5b843561339b81612ecf565b935060208501356133ab81613252565b925060408501356001600160401b038111156133c657600080fd5b6133d287828801613305565b92505060608501356133e3816130f6565b939692955090935050565b6001600160c01b031981168114611e6057600080fd5b8035612eef816133ee565b60006040828403121561342157600080fd5b613429612f0a565b9050813561343681612ecf565b815260208201356001600160401b0381111561345157600080fd5b61345d84828501613264565b60208301525092915050565b6000806040838503121561347c57600080fd5b8235613487816133ee565b915060208301356001600160401b038111156134a257600080fd5b6134ae8582860161340f565b9150509250929050565b6000806000606084860312156134cd57600080fd5b83356134d881612ecf565b925060208401356134e881613252565b915060408401356001600160401b0381111561350357600080fd5b61350f86828701613305565b9150509250925092565b6000610140828403121561352c57600080fd5b613534612f54565b905061353f82612ee4565b815261354e8360208401612fdd565b602082015260608201356001600160401b0381111561356c57600080fd5b61357884828501613264565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c08201526101006135b48184016132f0565b60e08301526135c661012084016132f0565b9082015292915050565b6000806000606084860312156135e557600080fd5b83356135f081612ecf565b925060208401356001600160401b0381111561360b57600080fd5b61361786828701613519565b9250506040840135613628816130f6565b809150509250925092565b60006020828403121561364557600080fd5b8135611b5981612fbd565b60006020828403121561366257600080fd5b8135611b5981612ecf565b602081526000611b59602083018461317f565b6000806040838503121561369357600080fd5b823561369e81612ecf565b915060208301356001600160401b038111156136b957600080fd5b6134ae85828601613519565b600061018082840312156136d857600080fd5b6136e0612f54565b90506136eb82612ee4565b81526136f960208301612fd2565b6020820152604082013560408201526137158360608401612fdd565b60608201526137278360a08401612fdd565b60808201526137398360e08401612fdd565b60a082015261374b610120830161301b565b60c082015261375d610140830161301b565b60e082015261376f6101608301612fd2565b61010082015292915050565b60008060006101c0848603121561379157600080fd5b833561379c81612ecf565b92506137ab85602086016136c5565b91506101a0840135613628816130f6565b6000608082840312156137ce57600080fd5b6137d6612f32565b9050813581526020820135602082015260408201356001600160401b0381111561335157600080fd5b6000806000806080858703121561381557600080fd5b843561382081612ecf565b9350602085013561383081613252565b925060408501356001600160401b0381111561384b57600080fd5b6133d2878288016137bc565b6000806040838503121561386a57600080fd5b8235613140816133ee565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526138d1602082018351613875565b6000602083015160c0808401526138eb60e084018261317f565b949350505050565b6000610240828403121561390657600080fd5b61390e612f77565b905061391982612fd2565b815261392760208301612fd2565b602082015261393860408301612ee4565b604082015261394960608301612ee4565b606082015261395b8360808401612fdd565b608082015261396d8360c08401612fdd565b60a082015261010061398184828501612fdd565b60c083015261014061399585828601612fdd565b60e08401526139a8856101808601612fdd565b828401526139ba856101c08601612fdd565b6101208401526139cd610200850161301b565b90830152506139df6102208301612fd2565b61016082015292915050565b60008061026083850312156139ff57600080fd5b8235613a0a81612ecf565b91506130ed84602085016138f3565b60008060008060808587031215613a2f57600080fd5b8435613a3a81612fbd565b93506020850135613a4a81612fbd565b92506040850135613a5a81612ecf565b915060608501356133e381612fbd565b803561ffff81168114612eef57600080fd5b60006102008284031215613a8f57600080fd5b613a97612f9a565b9050613aa282612ee4565b8152613ab060208301612ee4565b6020820152613ac160408301613404565b6040820152613ad260608301613404565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115613b1b57600080fd5b613b2786838701613264565b83850152610120925082850135915080821115613b4357600080fd5b50613b5085828601613264565b828401525050610140613b64818401613a6a565b90820152610160613b76838201613a6a565b9082015261018082810135908201526101a0613b938184016132f0565b908201526101c0613ba58382016132f0565b908201526101e06135c68382016132f0565b600080600060608486031215613bcc57600080fd5b8335613bd781612ecf565b925060208401356001600160401b03811115613bf257600080fd5b61361786828701613a7c565b600080600060608486031215613c1357600080fd5b8335613c1e81612ecf565b92506020840135613c2e81613252565b915060408401356001600160401b03811115613c4957600080fd5b61350f868287016137bc565b60a08101610edd8284613875565b600080600060608486031215613c7857600080fd5b8335613c83816133ee565b925060208401356001600160401b03811115613c9e57600080fd5b6136178682870161340f565b600080600060608486031215613cbf57600080fd5b8335613cca816130f6565b92506020840135613cda816130f6565b91506040840135613628816130f6565b60008060006102808486031215613d0057600080fd5b8335613d0b81612ecf565b9250613d1a85602086016138f3565b9150610260840135613628816130f6565b60008060408385031215613d3e57600080fd5b8235613d4981612ecf565b915060208301356001600160401b03811115613d6457600080fd5b6134ae85828601613a7c565b60008060006101008486031215613d8657600080fd5b8335613d9181612ecf565b9250613da08560208601613026565b915060e0840135613628816130f6565b6000806101a08385031215613dc457600080fd5b8235613dcf81612ecf565b91506130ed84602085016136c5565b60ff1981168114611e6057600080fd5b60008060408385031215613e0157600080fd5b8235613e0c816130f6565b9150602083013561315081613dde565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c90821680613e9057607f821691505b602082108103613eb057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613ec857600080fd5b8151611b598161300d565b600060208284031215613ee557600080fd5b8151611b5981612ecf565b6020815263ffffffff8251166020820152602082015160408201526000604083015160806060840152613f2660a084018261317f565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215613f5557600080fd5b5051919050565b602081526001600160601b038251166020820152600060208301516040808401526138eb606084018261317f565b60208152613fa46020820183516001600160601b03169052565b60006020830151613fc2604084018280518252602090810151910152565b506040830151610140806080850152613fdf61016085018361317f565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e0870151915061402761012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b60006020828403121561405057600080fd5b8151611b5981612fbd565b81516001600160601b03168152602080830151610180830191614088908401826001600160a01b03169052565b506040830151604083015260608301516140af606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b0381166101608401525b5092915050565b6020815281516020820152602082015160408201526000604083015160806060840152613f2660a084018261317f565b81516001600160a01b031681526102408101602083015161417760208401826001600160a01b03169052565b50604083015161419260408401826001600160601b03169052565b5060608301516141ad60608401826001600160601b03169052565b5060808301516141ca608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c08301516101006142008185018380518252602090810151910152565b60e085015191506101406142208186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152614114565b6020815261428f6020820183516001600160601b03169052565b600060208301516142ab60408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100818185015280850151915050610200610120818186015261432361022086018461317f565b9250808601519050610140601f198685030181870152614343848361317f565b93508087015191505061016061435e8187018361ffff169052565b86015190506101806143758682018361ffff169052565b8601516101a08681019190915286015190506101c061439c8187018364ffffffffff169052565b86015190506101e06140278682018364ffffffffff169052565b600080858511156143c657600080fd5b838611156143d357600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156144085780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f821115610e4d57600081815260208120601f850160051c810160208610156144775750805b601f850160051c820191505b81811015611d7b57828155600101614483565b81516001600160401b038111156144af576144af612ef4565b6144c3816144bd8454613e7c565b84614450565b602080601f8311600181146144f857600084156144e05750858301515b600019600386901b1c1916600185901b178555611d7b565b600085815260208120601f198616915b8281101561452757888601518255948401946001909101908401614508565b50858210156145455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161456781846020870161315b565b9190910192915050565b6000806040838503121561458457600080fd5b825161458f8161300d565b602084015190925061315081613252565b6000602082840312156145b257600080fd5b8151611b59816130f6565b6000602082840312156145cf57600080fd5b8151611b5981613dde565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220cdf82ad18b75e35ea1785709ba9db1682e420da1c52338f5f8698fd1574c8d2e64736f6c63430008140033",
2696
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103db5760003560e01c8063893d20e81161020a578063bd5947e311610125578063e1033e7d116100b8578063f48016ce11610087578063f48016ce146108f0578063f7bc431c14610903578063f8b648ac1461055b578063fe1f18d614610916578063fed3d63f1461092957600080fd5b8063e1033e7d14610897578063e7cd37d41461089f578063e8951ee6146104e5578063e9e96c70146108b257600080fd5b8063ca600b1c116100f4578063ca600b1c14610869578063d2f21a2914610871578063d5b221bd14610500578063dee326231461088457600080fd5b8063bd5947e31461083b578063bf1db3f91461084e578063bf7e214f14610861578063c2f1a2d21461050057600080fd5b80639df0280b1161019d578063a89896751161016c578063a898967514610802578063a9cea14214610815578063b68ec1461461055b578063bc8d40001461082857600080fd5b80639df0280b146104e5578063a13df2ab1461072b578063a5961b4c1461073e578063a76ee018146107ef57600080fd5b806391ff6eaa116101d957806391ff6eaa146106df578063976b0a77146106f25780639a960d52146107055780639d7421f41461071857600080fd5b8063893d20e8146106965780638dc77f42146104e55780638eaa6ac01461069e5780638fb36037146106be57600080fd5b8063422c9d00116102fa57806361f5f4201161028d5780637a4158021161025c5780637a415802146105005780637a9e5e4b146106705780637cef48421461068357806382f65adb1461055b57600080fd5b806361f5f42014610619578063644c45e01461062a5780636b9bf08b1461065557806375c827761461065d57600080fd5b80635ab1bd53116102c95780635ab1bd53146105e25780635d4345cc146104e55780636071a68e146105f357806360aa32aa1461060657600080fd5b8063422c9d00146105945780634288121d146105a7578063468a1867146105af57806354f6127f146105c257600080fd5b8063138461e01161037257806333bb0a971161034157806333bb0a971461055b57806338a699a41461056e5780633fc5ab981461058157806340529b0f146104e557600080fd5b8063138461e0146104f85780631c45fe7a146105005780631eff4b22146105135780632f61088a1461054857600080fd5b80630d358181116103ae5780630d358181146104965780630f526f7d146104bc5780630fec111c146104cf57806310203d2c146104e557600080fd5b806301ffc9a7146103e057806302cd30711461042257806309648a9d146104475780630b24cf5f14610481575b600080fd5b61040d6103ee366004612e8c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b039091168152602001610419565b61046f610455366004612eb6565b600090815260056020526040902054610100900460ff1690565b60405160ff9091168152602001610419565b61049461048f3660046130c0565b610931565b005b61046f6104a4366004613105565b60ff9081166000908152600360205260409020541690565b6104946104ca366004613122565b610975565b6104d7610992565b6040516104199291906131ab565b6104946104f3366004613122565b610b14565b610494610b29565b61049461050e36600461337a565b610d4b565b61053a7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610419565b610494610556366004613469565b610d8c565b6104946105693660046134b8565b610e27565b61040d61057c366004612eb6565b610e52565b61049461058f3660046135d0565b610ee3565b6104946105a2366004613633565b610f09565b61042f611046565b61053a6105bd366004613650565b6110cc565b6105d56105d0366004612eb6565b611165565b604051610419919061366d565b6001546001600160a01b031661042f565b610494610601366004613680565b61120a565b61049461061436600461377b565b611230565b6007546001600160a01b031661042f565b600154600160a01b90046001600160601b03166040516001600160601b039091168152602001610419565b61042f611258565b61049461066b3660046137ff565b611273565b61049461067e366004613633565b611299565b610494610691366004613857565b61131c565b61042f6113a6565b6106b16106ac366004612eb6565b611483565b60405161041991906138bf565b6106c66115c4565b6040516001600160e01b03199091168152602001610419565b6104946106ed3660046139eb565b6115fd565b610494610700366004613a19565b611625565b610494610713366004613bb7565b611765565b610494610726366004613bfe565b61178b565b61053a610739366004613650565b6117b1565b6107e261074c366004612eb6565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260056020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104199190613c55565b6104946107fd366004613c63565b6117de565b610494610810366004613caa565b611879565b610494610823366004613cea565b61196a565b610494610836366004613d2b565b611992565b610494610849366004613d70565b6119b8565b61040d61085c366004613105565b6119e0565b61042f611a2d565b61042f611a49565b61049461087f366004613122565b611a64565b610494610892366004613122565b611a7b565b61042f611a92565b6104946108ad366004613db0565b611aad565b61040d6108c0366004613caa565b60ff9283166000908152600460209081526040808320948616835293815283822092851682529190915220541690565b61053a6108fe366004613dee565b611ad5565b610494610911366004613633565b611b60565b610494610924366004613122565b611c4d565b61042f611c62565b61093e335b600036611c7d565b61097161094c836078611d83565b8260405160200161095d9190613e1c565b604051602081830303815290604052611dcf565b5050565b61097e33610936565b61097161098c83608c611d83565b82611dd9565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280610a156001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610a5d6113a6565b6001600160a01b03168152602001826001018054610a7a90613e7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa690613e7c565b8015610af35780601f10610ac857610100808354040283529160200191610af3565b820191906000526020600020905b815481529060010190602001808311610ad657829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b610b1d33610936565b61097161098c836110cc565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baf9190613eb6565b15610bf6576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610c1f5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190613eb6565b610cb4576040516372657a5160e01b81526001600160a01b0382166004820152602401610bed565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d229190613ed3565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610d5433610936565b610d86610d60856110cc565b83604051602001610d719190613ef0565b60405160208183030381529060405283611de3565b50505050565b610d9533610936565b6040516355ee627560e01b81526001600160c01b0319831660048201526109719073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e169190613f43565b8260405160200161095d9190613f5c565b610e3033610936565b610e4d610e3c846110cc565b8260405160200161095d9190613ef0565b505050565b60008181526005602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613eb6565b92915050565b610eec33610936565b610e4d610ef8846117b1565b83604051602001610d719190613f8a565b610f1233610936565b6007546001600160a01b031615610f625760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610bed565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fce919061403e565b6001600160a01b0316146110245760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610bed565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff9091166004820152600360248201526044015b602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061403e565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015611141573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190613f43565b600081815260056020526040902060010180546060919061118590613e7c565b80601f01602080910402602001604051908101604052809291908181526020018280546111b190613e7c565b80156111fe5780601f106111d3576101008083540402835291602001916111fe565b820191906000526020600020905b8154815290600101906020018083116111e157829003601f168201915b50505050509050919050565b61121333610936565b61097161121f836117b1565b8260405160200161095d9190613f8a565b61123933610936565b610e4d61124784608c611d83565b83604051602001610d71919061405b565b6001546000906001600160a01b031663d39e6043608c61105d565b61127c33610936565b610d86611288856110cc565b83604051602001610d71919061411b565b336112a2611a2d565b6001600160a01b0316816001600160a01b0316146112dd5760405162d1953b60e31b81526001600160a01b0382166004820152602401610bed565b816001600160a01b03163b600003611313576040516361798f2f60e11b81526001600160a01b0383166004820152602401610bed565b61097182611dee565b61132533610936565b6040516355ee627560e01b81526001600160c01b0319831660048201526109719073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611382573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098c9190613f43565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190613eb6565b1561147357600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401611086565b506002546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260056020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019161153b90613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461156790613e7c565b80156115b45780601f10611589576101008083540402835291602001916115b4565b820191906000526020600020905b81548152906001019060200180831161159757829003601f168201915b5050505050815250509050919050565b60008051602061462b833981519152805460009190600160a01b900460ff166115ee5760006115f7565b638fb3603760e01b5b91505090565b61160633610936565b61097161161483606e611d83565b8260405160200161095d919061414b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561166a5750825b90506000826001600160401b031660011480156116865750303b155b905081158015611694575080155b156116b25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116dc57845460ff60401b1916600160401b1785555b6116e589611e4f565b6117048888604660008a60405180602001604052806000815250611e63565b611714635df034a560e11b611f38565b831561175a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61176e33610936565b610e4d61177a846110cc565b83604051602001610d719190614275565b61179433610936565b610e4d6117a0846110cc565b8260405160200161095d919061411b565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6110f5565b6117e733610936565b6040516355ee627560e01b81526001600160c01b031984166004820152610e4d9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118689190613f43565b83604051602001610d719190613f5c565b60ff8381166000908152600360205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af41580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190613eb6565b1561190c57505050565b60ff808416600090815260046020908152604080832086851684528252808320858516845290915290205416610e4d57604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610bed565b61197333610936565b610e4d61198184606e611d83565b83604051602001610d71919061414b565b61199b33610936565b6109716119a7836110cc565b8260405160200161095d9190614275565b6119c133610936565b610e4d6119cf846078611d83565b83604051602001610d719190613e1c565b60ff81811660009081526003602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401610e9c565b60008051602061462b833981519152546001600160a01b031690565b6001546000906001600160a01b031663d39e6043607861105d565b611a6d33610936565b61097161098c836078611d83565b611a8433610936565b61097161098c83606e611d83565b6001546000906001600160a01b031663d39e604360d261105d565b611ab633610936565b610971611ac483608c611d83565b8260405160200161095d919061405b565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af4158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b599190613f43565b9392505050565b611b6933610936565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd5919061403e565b6001600160a01b031614611c2b5760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610bed565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611c5633610936565b61097161098c836117b1565b6001546000906001600160a01b031663d39e604360dc61105d565b60008051602061462b833981519152600080611cb8611c9a611a2d565b8730611caa600460008a8c6143b6565b611cb3916143e0565b611f5d565b9150915081611d7b5763ffffffff811615611d5857825460ff60a01b1916600160a01b178355611ce6611a2d565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611d1593929190614410565b600060405180830381600087803b158015611d2f57600080fd5b505af1158015611d43573d6000803e3d6000fd5b5050845460ff60a01b1916855550611d7b9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610bed565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c890604401611b18565b6109718282612069565b610971828261248b565b610e4d8383836127bf565b60008051602061462b83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611e57612c5a565b611e6081612ca5565b50565b611ea46301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b611eae8287612cb6565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101611f1e8382614496565b50611f2f6303fb044760e21b611f38565b50505050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251611fcc9190614555565b600060405180830381855afa9150503d8060008114612007576040519150601f19603f3d011682016040523d82523d6000602084013e61200c565b606091505b5091509150811561205e57604081511061203e57808060200190518101906120349190614571565b909450925061205e565b602081511061205e578080602001905181019061205b9190613eb6565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e091906145a0565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613eb6565b6121a55760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610bed565b600083815260056020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801561220e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122329190613eb6565b61227e5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610bed565b3343600061228b856119e0565b6122965760646122ac565b60ff808616600090815260036020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526005602052604090209091506001016123368782614496565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd91906145a0565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561241d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244191906145bd565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156124dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125019190613eb6565b61254d5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610bed565b600082815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156125b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125dd9190613eb6565b6126295760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610bed565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661266d4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156126ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272391906145a0565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612773573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279791906145bd565b87868632876040516127af97969594939291906145da565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128359190613eb6565b6128815760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610bed565b600083815260056020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156128ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129119190613eb6565b61295d5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610bed565b60008581526005602052604090206001016129788582614496565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166129bd4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7391906145a0565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae791906145bd565b8786863287604051612aff97969594939291906145da565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9d91906145a0565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1191906145bd565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c00161247a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612ca357604051631afcd79f60e31b815260040160405180910390fd5b565b612cad612c5a565b611e6081611dee565b6001600160a01b038216612d0c5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610bed565b600280546001600160a01b0319166001600160a01b038416179055610971816001546001600160a01b031615612d645760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610bed565b6001600160a01b038116612d8b5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003612dc15760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610bed565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526316c8f9ff60e01b60048201526301ffc9a790602401602060405180830381865afa925050508015612e3b575060408051601f3d908101601f19168201909252612e3891810190613eb6565b60015b612e635760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610bed565b806109715760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610bed565b600060208284031215612e9e57600080fd5b81356001600160e01b031981168114611b5957600080fd5b600060208284031215612ec857600080fd5b5035919050565b6001600160601b0381168114611e6057600080fd5b8035612eef81612ecf565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405290565b604051608081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405161012081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405161018081016001600160401b0381118282101715612f2c57612f2c612ef4565b60405161020081016001600160401b0381118282101715612f2c57612f2c612ef4565b6001600160a01b0381168114611e6057600080fd5b8035612eef81612fbd565b600060408284031215612fef57600080fd5b612ff7612f0a565b9050813581526020820135602082015292915050565b8015158114611e6057600080fd5b8035612eef8161300d565b600060c0828403121561303857600080fd5b60405160a081018181106001600160401b038211171561305a5761305a612ef4565b604052905080823561306b81612ecf565b8152602083013561307b81612fbd565b602082015261308d8460408501612fdd565b604082015260808301356130a08161300d565b606082015260a08301356130b381612fbd565b6080919091015292915050565b60008060e083850312156130d357600080fd5b82356130de81612ecf565b91506130ed8460208501613026565b90509250929050565b60ff81168114611e6057600080fd5b60006020828403121561311757600080fd5b8135611b59816130f6565b6000806040838503121561313557600080fd5b823561314081612ecf565b91506020830135613150816130f6565b809150509250929050565b60005b8381101561317657818101518382015260200161315e565b50506000910152565b6000815180845261319781602086016020860161315b565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff604085015116608083015260608401516131ef60a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e061010084015261323561012084018261317f565b90508281036020840152613249818561317f565b95945050505050565b63ffffffff81168114611e6057600080fd5b600082601f83011261327557600080fd5b81356001600160401b038082111561328f5761328f612ef4565b604051601f8301601f19908116603f011681019082821181831017156132b7576132b7612ef4565b816040528381528660208588010111156132d057600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff81168114612eef57600080fd5b60006080828403121561331757600080fd5b61331f612f32565b9050813561332c81613252565b81526020828101359082015260408201356001600160401b0381111561335157600080fd5b61335d84828501613264565b60408301525061336f606083016132f0565b606082015292915050565b6000806000806080858703121561339057600080fd5b843561339b81612ecf565b935060208501356133ab81613252565b925060408501356001600160401b038111156133c657600080fd5b6133d287828801613305565b92505060608501356133e3816130f6565b939692955090935050565b6001600160c01b031981168114611e6057600080fd5b8035612eef816133ee565b60006040828403121561342157600080fd5b613429612f0a565b9050813561343681612ecf565b815260208201356001600160401b0381111561345157600080fd5b61345d84828501613264565b60208301525092915050565b6000806040838503121561347c57600080fd5b8235613487816133ee565b915060208301356001600160401b038111156134a257600080fd5b6134ae8582860161340f565b9150509250929050565b6000806000606084860312156134cd57600080fd5b83356134d881612ecf565b925060208401356134e881613252565b915060408401356001600160401b0381111561350357600080fd5b61350f86828701613305565b9150509250925092565b6000610140828403121561352c57600080fd5b613534612f54565b905061353f82612ee4565b815261354e8360208401612fdd565b602082015260608201356001600160401b0381111561356c57600080fd5b61357884828501613264565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c08201526101006135b48184016132f0565b60e08301526135c661012084016132f0565b9082015292915050565b6000806000606084860312156135e557600080fd5b83356135f081612ecf565b925060208401356001600160401b0381111561360b57600080fd5b61361786828701613519565b9250506040840135613628816130f6565b809150509250925092565b60006020828403121561364557600080fd5b8135611b5981612fbd565b60006020828403121561366257600080fd5b8135611b5981612ecf565b602081526000611b59602083018461317f565b6000806040838503121561369357600080fd5b823561369e81612ecf565b915060208301356001600160401b038111156136b957600080fd5b6134ae85828601613519565b600061018082840312156136d857600080fd5b6136e0612f54565b90506136eb82612ee4565b81526136f960208301612fd2565b6020820152604082013560408201526137158360608401612fdd565b60608201526137278360a08401612fdd565b60808201526137398360e08401612fdd565b60a082015261374b610120830161301b565b60c082015261375d610140830161301b565b60e082015261376f6101608301612fd2565b61010082015292915050565b60008060006101c0848603121561379157600080fd5b833561379c81612ecf565b92506137ab85602086016136c5565b91506101a0840135613628816130f6565b6000608082840312156137ce57600080fd5b6137d6612f32565b9050813581526020820135602082015260408201356001600160401b0381111561335157600080fd5b6000806000806080858703121561381557600080fd5b843561382081612ecf565b9350602085013561383081613252565b925060408501356001600160401b0381111561384b57600080fd5b6133d2878288016137bc565b6000806040838503121561386a57600080fd5b8235613140816133ee565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526138d1602082018351613875565b6000602083015160c0808401526138eb60e084018261317f565b949350505050565b6000610240828403121561390657600080fd5b61390e612f77565b905061391982612fd2565b815261392760208301612fd2565b602082015261393860408301612ee4565b604082015261394960608301612ee4565b606082015261395b8360808401612fdd565b608082015261396d8360c08401612fdd565b60a082015261010061398184828501612fdd565b60c083015261014061399585828601612fdd565b60e08401526139a8856101808601612fdd565b828401526139ba856101c08601612fdd565b6101208401526139cd610200850161301b565b90830152506139df6102208301612fd2565b61016082015292915050565b60008061026083850312156139ff57600080fd5b8235613a0a81612ecf565b91506130ed84602085016138f3565b60008060008060808587031215613a2f57600080fd5b8435613a3a81612fbd565b93506020850135613a4a81612fbd565b92506040850135613a5a81612ecf565b915060608501356133e381612fbd565b803561ffff81168114612eef57600080fd5b60006102008284031215613a8f57600080fd5b613a97612f9a565b9050613aa282612ee4565b8152613ab060208301612ee4565b6020820152613ac160408301613404565b6040820152613ad260608301613404565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115613b1b57600080fd5b613b2786838701613264565b83850152610120925082850135915080821115613b4357600080fd5b50613b5085828601613264565b828401525050610140613b64818401613a6a565b90820152610160613b76838201613a6a565b9082015261018082810135908201526101a0613b938184016132f0565b908201526101c0613ba58382016132f0565b908201526101e06135c68382016132f0565b600080600060608486031215613bcc57600080fd5b8335613bd781612ecf565b925060208401356001600160401b03811115613bf257600080fd5b61361786828701613a7c565b600080600060608486031215613c1357600080fd5b8335613c1e81612ecf565b92506020840135613c2e81613252565b915060408401356001600160401b03811115613c4957600080fd5b61350f868287016137bc565b60a08101610edd8284613875565b600080600060608486031215613c7857600080fd5b8335613c83816133ee565b925060208401356001600160401b03811115613c9e57600080fd5b6136178682870161340f565b600080600060608486031215613cbf57600080fd5b8335613cca816130f6565b92506020840135613cda816130f6565b91506040840135613628816130f6565b60008060006102808486031215613d0057600080fd5b8335613d0b81612ecf565b9250613d1a85602086016138f3565b9150610260840135613628816130f6565b60008060408385031215613d3e57600080fd5b8235613d4981612ecf565b915060208301356001600160401b03811115613d6457600080fd5b6134ae85828601613a7c565b60008060006101008486031215613d8657600080fd5b8335613d9181612ecf565b9250613da08560208601613026565b915060e0840135613628816130f6565b6000806101a08385031215613dc457600080fd5b8235613dcf81612ecf565b91506130ed84602085016136c5565b60ff1981168114611e6057600080fd5b60008060408385031215613e0157600080fd5b8235613e0c816130f6565b9150602083013561315081613dde565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c90821680613e9057607f821691505b602082108103613eb057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613ec857600080fd5b8151611b598161300d565b600060208284031215613ee557600080fd5b8151611b5981612ecf565b6020815263ffffffff8251166020820152602082015160408201526000604083015160806060840152613f2660a084018261317f565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215613f5557600080fd5b5051919050565b602081526001600160601b038251166020820152600060208301516040808401526138eb606084018261317f565b60208152613fa46020820183516001600160601b03169052565b60006020830151613fc2604084018280518252602090810151910152565b506040830151610140806080850152613fdf61016085018361317f565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e0870151915061402761012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b60006020828403121561405057600080fd5b8151611b5981612fbd565b81516001600160601b03168152602080830151610180830191614088908401826001600160a01b03169052565b506040830151604083015260608301516140af606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b0381166101608401525b5092915050565b6020815281516020820152602082015160408201526000604083015160806060840152613f2660a084018261317f565b81516001600160a01b031681526102408101602083015161417760208401826001600160a01b03169052565b50604083015161419260408401826001600160601b03169052565b5060608301516141ad60608401826001600160601b03169052565b5060808301516141ca608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c08301516101006142008185018380518252602090810151910152565b60e085015191506101406142208186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152614114565b6020815261428f6020820183516001600160601b03169052565b600060208301516142ab60408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100818185015280850151915050610200610120818186015261432361022086018461317f565b9250808601519050610140601f198685030181870152614343848361317f565b93508087015191505061016061435e8187018361ffff169052565b86015190506101806143758682018361ffff169052565b8601516101a08681019190915286015190506101c061439c8187018364ffffffffff169052565b86015190506101e06140278682018364ffffffffff169052565b600080858511156143c657600080fd5b838611156143d357600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156144085780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f821115610e4d57600081815260208120601f850160051c810160208610156144775750805b601f850160051c820191505b81811015611d7b57828155600101614483565b81516001600160401b038111156144af576144af612ef4565b6144c3816144bd8454613e7c565b84614450565b602080601f8311600181146144f857600084156144e05750858301515b600019600386901b1c1916600185901b178555611d7b565b600085815260208120601f198616915b8281101561452757888601518255948401946001909101908401614508565b50858210156145455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161456781846020870161315b565b9190910192915050565b6000806040838503121561458457600080fd5b825161458f8161300d565b602084015190925061315081613252565b6000602082840312156145b257600080fd5b8151611b59816130f6565b6000602082840312156145cf57600080fd5b8151611b5981613dde565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220cdf82ad18b75e35ea1785709ba9db1682e420da1c52338f5f8698fd1574c8d2e64736f6c63430008140033",
2108
2697
  "linkReferences": {
2109
- "contracts/types/Blocknumber.sol": {
2110
- "BlocknumberLib": [
2111
- {
2112
- "length": 20,
2113
- "start": 3103
2114
- },
2115
- {
2116
- "length": 20,
2117
- "start": 9531
2118
- }
2119
- ]
2120
- },
2121
- "contracts/types/Fee.sol": {
2122
- "FeeLib": [
2123
- {
2124
- "length": 20,
2125
- "start": 13967
2126
- },
2127
- {
2128
- "length": 20,
2129
- "start": 17974
2130
- }
2131
- ]
2132
- },
2133
2698
  "contracts/types/Key32.sol": {
2134
2699
  "Key32Lib": [
2135
2700
  {
2136
2701
  "length": 20,
2137
- "start": 34415
2702
+ "start": 8821
2138
2703
  },
2139
2704
  {
2140
2705
  "length": 20,
2141
- "start": 35637
2142
- }
2143
- ]
2144
- },
2145
- "contracts/types/NftId.sol": {
2146
- "NftIdLib": [
2147
- {
2148
- "length": 20,
2149
- "start": 15497
2706
+ "start": 10237
2150
2707
  },
2151
2708
  {
2152
2709
  "length": 20,
2153
- "start": 15702
2710
+ "start": 10986
2154
2711
  },
2155
2712
  {
2156
2713
  "length": 20,
2157
- "start": 16062
2714
+ "start": 11102
2158
2715
  },
2159
2716
  {
2160
2717
  "length": 20,
2161
- "start": 16296
2718
+ "start": 11840
2162
2719
  },
2163
2720
  {
2164
2721
  "length": 20,
2165
- "start": 18926
2722
+ "start": 11956
2166
2723
  },
2167
2724
  {
2168
2725
  "length": 20,
2169
- "start": 19172
2726
+ "start": 12688
2170
2727
  },
2171
2728
  {
2172
2729
  "length": 20,
2173
- "start": 19364
2730
+ "start": 12804
2174
2731
  },
2175
2732
  {
2176
2733
  "length": 20,
2177
- "start": 19625
2734
+ "start": 12986
2178
2735
  },
2179
2736
  {
2180
2737
  "length": 20,
2181
- "start": 19881
2738
+ "start": 13102
2182
2739
  }
2183
2740
  ]
2184
2741
  },
2185
- "contracts/types/NftIdSet.sol": {
2186
- "LibNftIdSet": [
2187
- {
2188
- "length": 20,
2189
- "start": 10110
2190
- },
2742
+ "contracts/types/NftId.sol": {
2743
+ "NftIdLib": [
2191
2744
  {
2192
2745
  "length": 20,
2193
- "start": 11055
2746
+ "start": 4812
2194
2747
  },
2195
2748
  {
2196
2749
  "length": 20,
2197
- "start": 11246
2750
+ "start": 6219
2198
2751
  },
2199
2752
  {
2200
2753
  "length": 20,
2201
- "start": 11469
2754
+ "start": 6988
2202
2755
  },
2203
2756
  {
2204
2757
  "length": 20,
2205
- "start": 14659
2758
+ "start": 7984
2206
2759
  },
2207
2760
  {
2208
2761
  "length": 20,
2209
- "start": 15054
2762
+ "start": 9512
2210
2763
  }
2211
2764
  ]
2212
2765
  },
@@ -2214,7 +2767,7 @@
2214
2767
  "ObjectTypeLib": [
2215
2768
  {
2216
2769
  "length": 20,
2217
- "start": 32333
2770
+ "start": 10358
2218
2771
  }
2219
2772
  ]
2220
2773
  },
@@ -2222,35 +2775,15 @@
2222
2775
  "RiskIdLib": [
2223
2776
  {
2224
2777
  "length": 20,
2225
- "start": 12365
2226
- }
2227
- ]
2228
- },
2229
- "contracts/types/RoleId.sol": {
2230
- "RoleIdLib": [
2231
- {
2232
- "length": 20,
2233
- "start": 2431
2778
+ "start": 5427
2234
2779
  },
2235
2780
  {
2236
2781
  "length": 20,
2237
- "start": 2691
2782
+ "start": 6851
2238
2783
  },
2239
2784
  {
2240
2785
  "length": 20,
2241
- "start": 2780
2242
- },
2243
- {
2244
- "length": 20,
2245
- "start": 2872
2246
- },
2247
- {
2248
- "length": 20,
2249
- "start": 11955
2250
- },
2251
- {
2252
- "length": 20,
2253
- "start": 12526
2786
+ "start": 8069
2254
2787
  }
2255
2788
  ]
2256
2789
  },
@@ -2258,97 +2791,81 @@
2258
2791
  "StateIdLib": [
2259
2792
  {
2260
2793
  "length": 20,
2261
- "start": 31992
2262
- },
2263
- {
2264
- "length": 20,
2265
- "start": 32550
2794
+ "start": 5625
2266
2795
  },
2267
2796
  {
2268
2797
  "length": 20,
2269
- "start": 33075
2798
+ "start": 8223
2270
2799
  },
2271
2800
  {
2272
2801
  "length": 20,
2273
- "start": 33808
2802
+ "start": 8582
2274
2803
  },
2275
2804
  {
2276
2805
  "length": 20,
2277
- "start": 34028
2806
+ "start": 10575
2278
2807
  },
2279
2808
  {
2280
2809
  "length": 20,
2281
- "start": 34585
2810
+ "start": 11294
2282
2811
  },
2283
2812
  {
2284
2813
  "length": 20,
2285
- "start": 34854
2814
+ "start": 11514
2286
2815
  },
2287
2816
  {
2288
2817
  "length": 20,
2289
- "start": 35074
2818
+ "start": 12114
2290
2819
  },
2291
2820
  {
2292
2821
  "length": 20,
2293
- "start": 35566
2822
+ "start": 12334
2294
2823
  }
2295
2824
  ]
2296
- },
2297
- "contracts/types/Timestamp.sol": {
2298
- "TimestampLib": [
2825
+ }
2826
+ },
2827
+ "deployedLinkReferences": {
2828
+ "contracts/types/Key32.sol": {
2829
+ "Key32Lib": [
2299
2830
  {
2300
2831
  "length": 20,
2301
- "start": 10669
2302
- }
2303
- ]
2304
- },
2305
- "contracts/types/UFixed.sol": {
2306
- "UFixedMathLib": [
2832
+ "start": 6906
2833
+ },
2307
2834
  {
2308
2835
  "length": 20,
2309
- "start": 8447
2836
+ "start": 8322
2310
2837
  },
2311
2838
  {
2312
2839
  "length": 20,
2313
- "start": 11751
2314
- }
2315
- ]
2316
- },
2317
- "contracts/types/Version.sol": {
2318
- "VersionLib": [
2840
+ "start": 9071
2841
+ },
2319
2842
  {
2320
2843
  "length": 20,
2321
- "start": 1901
2844
+ "start": 9187
2322
2845
  },
2323
2846
  {
2324
2847
  "length": 20,
2325
- "start": 2946
2848
+ "start": 9925
2326
2849
  },
2327
2850
  {
2328
2851
  "length": 20,
2329
- "start": 8590
2330
- }
2331
- ]
2332
- }
2333
- },
2334
- "deployedLinkReferences": {
2335
- "contracts/types/Blocknumber.sol": {
2336
- "BlocknumberLib": [
2852
+ "start": 10041
2853
+ },
2337
2854
  {
2338
2855
  "length": 20,
2339
- "start": 4837
2340
- }
2341
- ]
2342
- },
2343
- "contracts/types/Fee.sol": {
2344
- "FeeLib": [
2856
+ "start": 10773
2857
+ },
2345
2858
  {
2346
2859
  "length": 20,
2347
- "start": 9273
2860
+ "start": 10889
2348
2861
  },
2349
2862
  {
2350
2863
  "length": 20,
2351
- "start": 13280
2864
+ "start": 11071
2865
+ },
2866
+ {
2867
+ "length": 20,
2868
+ "start": 11187
2352
2869
  }
2353
2870
  ]
2354
2871
  },
@@ -2356,115 +2873,83 @@
2356
2873
  "NftIdLib": [
2357
2874
  {
2358
2875
  "length": 20,
2359
- "start": 10803
2876
+ "start": 2897
2360
2877
  },
2361
2878
  {
2362
2879
  "length": 20,
2363
- "start": 11008
2880
+ "start": 4304
2364
2881
  },
2365
2882
  {
2366
2883
  "length": 20,
2367
- "start": 11368
2884
+ "start": 5073
2368
2885
  },
2369
2886
  {
2370
2887
  "length": 20,
2371
- "start": 11602
2888
+ "start": 6069
2372
2889
  },
2373
2890
  {
2374
2891
  "length": 20,
2375
- "start": 14232
2376
- },
2892
+ "start": 7597
2893
+ }
2894
+ ]
2895
+ },
2896
+ "contracts/types/ObjectType.sol": {
2897
+ "ObjectTypeLib": [
2377
2898
  {
2378
2899
  "length": 20,
2379
- "start": 14478
2380
- },
2900
+ "start": 8443
2901
+ }
2902
+ ]
2903
+ },
2904
+ "contracts/types/RiskId.sol": {
2905
+ "RiskIdLib": [
2381
2906
  {
2382
2907
  "length": 20,
2383
- "start": 14670
2908
+ "start": 3512
2384
2909
  },
2385
2910
  {
2386
2911
  "length": 20,
2387
- "start": 14931
2912
+ "start": 4936
2388
2913
  },
2389
2914
  {
2390
2915
  "length": 20,
2391
- "start": 15187
2916
+ "start": 6154
2392
2917
  }
2393
2918
  ]
2394
2919
  },
2395
- "contracts/types/NftIdSet.sol": {
2396
- "LibNftIdSet": [
2920
+ "contracts/types/StateId.sol": {
2921
+ "StateIdLib": [
2397
2922
  {
2398
2923
  "length": 20,
2399
- "start": 5416
2924
+ "start": 3710
2400
2925
  },
2401
2926
  {
2402
2927
  "length": 20,
2403
- "start": 6361
2928
+ "start": 6308
2404
2929
  },
2405
2930
  {
2406
2931
  "length": 20,
2407
- "start": 6552
2932
+ "start": 6667
2408
2933
  },
2409
2934
  {
2410
2935
  "length": 20,
2411
- "start": 6775
2936
+ "start": 8660
2412
2937
  },
2413
2938
  {
2414
2939
  "length": 20,
2415
- "start": 9965
2940
+ "start": 9379
2416
2941
  },
2417
2942
  {
2418
2943
  "length": 20,
2419
- "start": 10360
2420
- }
2421
- ]
2422
- },
2423
- "contracts/types/RiskId.sol": {
2424
- "RiskIdLib": [
2425
- {
2426
- "length": 20,
2427
- "start": 7671
2428
- }
2429
- ]
2430
- },
2431
- "contracts/types/RoleId.sol": {
2432
- "RoleIdLib": [
2433
- {
2434
- "length": 20,
2435
- "start": 7261
2944
+ "start": 9599
2436
2945
  },
2437
2946
  {
2438
2947
  "length": 20,
2439
- "start": 7832
2440
- }
2441
- ]
2442
- },
2443
- "contracts/types/Timestamp.sol": {
2444
- "TimestampLib": [
2445
- {
2446
- "length": 20,
2447
- "start": 5975
2448
- }
2449
- ]
2450
- },
2451
- "contracts/types/UFixed.sol": {
2452
- "UFixedMathLib": [
2453
- {
2454
- "length": 20,
2455
- "start": 3753
2948
+ "start": 10199
2456
2949
  },
2457
2950
  {
2458
2951
  "length": 20,
2459
- "start": 7057
2460
- }
2461
- ]
2462
- },
2463
- "contracts/types/Version.sol": {
2464
- "VersionLib": [
2465
- {
2466
- "length": 20,
2467
- "start": 3896
2952
+ "start": 10419
2468
2953
  }
2469
2954
  ]
2470
2955
  }