@etherisc/gif-next 0.0.2-ec436bf-674 → 0.0.2-ed1536c-164

Sign up to get free protection for your applications and to get access to all the features.
Files changed (552) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3052
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +504 -322
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +524 -352
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -108
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +294 -361
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -0
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +257 -288
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +340 -195
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +434 -194
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +429 -261
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +499 -338
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +320 -140
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -0
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -109
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +196 -216
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +625 -0
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  182. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  184. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  185. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
  186. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  187. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  188. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  190. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  191. package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
  192. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
  194. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  195. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
  196. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
  198. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  200. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
  202. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  204. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  206. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  208. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  210. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  212. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  218. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  220. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  221. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  222. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  224. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  226. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  228. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  230. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  234. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  236. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  238. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  240. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  242. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  244. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  246. package/contracts/distribution/Distribution.sol +263 -0
  247. package/contracts/distribution/DistributionService.sol +298 -0
  248. package/contracts/distribution/DistributionServiceManager.sol +54 -0
  249. package/contracts/distribution/IDistributionComponent.sol +66 -0
  250. package/contracts/distribution/IDistributionService.sol +81 -0
  251. package/contracts/instance/BundleManager.sol +126 -0
  252. package/contracts/instance/IInstance.sol +62 -24
  253. package/contracts/instance/IInstanceService.sol +66 -13
  254. package/contracts/instance/Instance.sol +151 -366
  255. package/contracts/instance/InstanceAccessManager.sol +432 -177
  256. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  257. package/contracts/instance/InstanceReader.sol +143 -83
  258. package/contracts/instance/InstanceService.sol +309 -124
  259. package/contracts/instance/InstanceServiceManager.sol +12 -24
  260. package/contracts/instance/InstanceStore.sol +260 -0
  261. package/contracts/instance/base/BalanceStore.sol +118 -0
  262. package/contracts/instance/base/Cloneable.sol +51 -0
  263. package/contracts/instance/base/ObjectManager.sol +82 -0
  264. package/contracts/instance/module/IAccess.sol +37 -21
  265. package/contracts/instance/module/IBundle.sol +8 -8
  266. package/contracts/instance/module/IComponents.sol +52 -0
  267. package/contracts/instance/module/IDistribution.sol +7 -4
  268. package/contracts/instance/module/IPolicy.sol +56 -17
  269. package/contracts/instance/module/IRisk.sol +1 -1
  270. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  271. package/contracts/pool/BundleService.sol +296 -0
  272. package/contracts/pool/BundleServiceManager.sol +42 -0
  273. package/contracts/pool/IBundleService.sol +106 -0
  274. package/contracts/pool/IPoolComponent.sol +112 -0
  275. package/contracts/pool/IPoolService.sol +147 -0
  276. package/contracts/pool/Pool.sol +299 -0
  277. package/contracts/pool/PoolService.sol +424 -0
  278. package/contracts/pool/PoolServiceManager.sol +42 -0
  279. package/contracts/product/ApplicationService.sol +254 -0
  280. package/contracts/product/ApplicationServiceManager.sol +38 -0
  281. package/contracts/product/ClaimService.sol +437 -0
  282. package/contracts/product/ClaimServiceManager.sol +38 -0
  283. package/contracts/product/IApplicationService.sol +62 -0
  284. package/contracts/product/IClaimService.sol +93 -0
  285. package/contracts/product/IPolicyService.sol +78 -0
  286. package/contracts/product/IPricingService.sol +39 -0
  287. package/contracts/product/IProductComponent.sol +42 -0
  288. package/contracts/product/IProductService.sol +33 -0
  289. package/contracts/product/PolicyService.sol +473 -0
  290. package/contracts/product/PolicyServiceManager.sol +42 -0
  291. package/contracts/product/PricingService.sol +301 -0
  292. package/contracts/product/PricingServiceManager.sol +42 -0
  293. package/contracts/product/Product.sol +377 -0
  294. package/contracts/product/ProductService.sol +124 -0
  295. package/contracts/product/ProductServiceManager.sol +42 -0
  296. package/contracts/registry/ChainNft.sol +14 -0
  297. package/contracts/registry/IRegistry.sol +76 -45
  298. package/contracts/registry/IRegistryService.sol +51 -16
  299. package/contracts/registry/ITransferInterceptor.sol +1 -0
  300. package/contracts/registry/Registry.sol +358 -269
  301. package/contracts/registry/RegistryAccessManager.sol +196 -0
  302. package/contracts/registry/RegistryService.sol +126 -259
  303. package/contracts/registry/RegistryServiceManager.sol +34 -42
  304. package/contracts/registry/ReleaseManager.sol +563 -0
  305. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  306. package/contracts/registry/TokenRegistry.sol +300 -57
  307. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  308. package/contracts/shared/Component.sol +286 -0
  309. package/contracts/shared/ComponentService.sol +595 -0
  310. package/contracts/shared/ComponentServiceManager.sol +35 -0
  311. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  312. package/contracts/shared/ERC165.sol +14 -12
  313. package/contracts/shared/IComponent.sol +74 -0
  314. package/contracts/shared/IComponentService.sol +91 -0
  315. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  316. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  317. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  318. package/contracts/shared/INftOwnable.sol +12 -11
  319. package/contracts/shared/IPolicyHolder.sol +45 -0
  320. package/contracts/shared/IRegisterable.sol +4 -6
  321. package/contracts/shared/IRegistryLinked.sol +11 -0
  322. package/contracts/shared/IService.sol +7 -4
  323. package/contracts/shared/IVersionable.sol +5 -48
  324. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  325. package/contracts/shared/KeyValueStore.sol +130 -0
  326. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  327. package/contracts/shared/NftIdSetManager.sol +65 -0
  328. package/contracts/shared/NftOwnable.sol +65 -83
  329. package/contracts/shared/PolicyHolder.sol +101 -0
  330. package/contracts/shared/ProxyManager.sol +126 -25
  331. package/contracts/shared/Registerable.sol +26 -41
  332. package/contracts/shared/RegistryLinked.sol +43 -0
  333. package/contracts/shared/Service.sol +45 -23
  334. package/contracts/shared/TokenHandler.sol +37 -6
  335. package/contracts/shared/Versionable.sol +4 -92
  336. package/contracts/staking/IStaking.sol +152 -0
  337. package/contracts/staking/IStakingManager.sol +15 -0
  338. package/contracts/staking/IStakingService.sol +162 -0
  339. package/contracts/staking/IStakingStore.sol +130 -0
  340. package/contracts/staking/StakeManagerLib.sol +156 -0
  341. package/contracts/staking/Staking.sol +502 -0
  342. package/contracts/staking/StakingManager.sol +65 -0
  343. package/contracts/staking/StakingReader.sol +147 -0
  344. package/contracts/staking/StakingService.sol +375 -0
  345. package/contracts/staking/StakingServiceManager.sol +44 -0
  346. package/contracts/staking/StakingStore.sol +329 -0
  347. package/contracts/staking/TargetManagerLib.sol +179 -0
  348. package/contracts/type/Amount.sol +114 -0
  349. package/contracts/{types → type}/Blocknumber.sol +20 -2
  350. package/contracts/type/ClaimId.sol +75 -0
  351. package/contracts/{types → type}/DistributorType.sol +2 -2
  352. package/contracts/{types → type}/Fee.sol +32 -22
  353. package/contracts/{types → type}/NftId.sol +17 -11
  354. package/contracts/type/NftIdSet.sol +62 -0
  355. package/contracts/{types → type}/ObjectType.sol +26 -9
  356. package/contracts/type/PayoutId.sol +82 -0
  357. package/contracts/{types → type}/Referral.sol +4 -0
  358. package/contracts/type/RoleId.sol +143 -0
  359. package/contracts/type/Seconds.sol +71 -0
  360. package/contracts/{types → type}/StateId.sol +24 -6
  361. package/contracts/{types → type}/Timestamp.sol +18 -13
  362. package/contracts/{types → type}/UFixed.sol +1 -0
  363. package/contracts/{types → type}/Version.sol +1 -0
  364. package/package.json +3 -3
  365. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  366. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  367. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  368. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  370. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  371. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  372. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  373. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  374. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  375. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  376. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  377. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  378. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  379. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  380. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  382. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  384. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  386. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  387. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  388. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  389. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  390. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  391. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  392. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  394. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  395. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  396. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  397. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  398. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  399. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  400. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  403. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  405. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  407. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  409. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  411. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  413. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  415. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  417. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  419. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  420. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  421. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  422. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  423. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  424. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  425. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  426. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  427. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  428. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  429. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  430. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  431. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  433. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  434. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  435. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  436. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  438. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  440. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -448
  442. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  445. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -855
  449. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  450. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  451. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  452. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  453. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  454. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  455. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  456. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  457. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  458. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  459. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  460. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  461. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  462. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  463. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  464. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  465. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  466. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  467. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  468. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  469. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  470. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  471. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  472. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  473. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  474. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  476. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  477. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  479. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  480. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  481. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  482. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  483. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  484. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  485. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  486. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  488. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  489. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  490. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  491. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  496. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  497. package/contracts/components/BaseComponent.sol +0 -91
  498. package/contracts/components/Distribution.sol +0 -160
  499. package/contracts/components/IBaseComponent.sol +0 -25
  500. package/contracts/components/IDistributionComponent.sol +0 -44
  501. package/contracts/components/IPoolComponent.sol +0 -62
  502. package/contracts/components/IProductComponent.sol +0 -35
  503. package/contracts/components/Pool.sol +0 -243
  504. package/contracts/components/Product.sol +0 -297
  505. package/contracts/experiment/cloning/Cloner.sol +0 -47
  506. package/contracts/experiment/errors/Require.sol +0 -38
  507. package/contracts/experiment/errors/Revert.sol +0 -44
  508. package/contracts/experiment/inheritance/A.sol +0 -53
  509. package/contracts/experiment/inheritance/B.sol +0 -28
  510. package/contracts/experiment/inheritance/C.sol +0 -34
  511. package/contracts/experiment/inheritance/IA.sol +0 -13
  512. package/contracts/experiment/inheritance/IB.sol +0 -10
  513. package/contracts/experiment/inheritance/IC.sol +0 -12
  514. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  515. package/contracts/experiment/statemachine/ISM.sol +0 -25
  516. package/contracts/experiment/statemachine/SM.sol +0 -57
  517. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  518. package/contracts/experiment/types/TypeA.sol +0 -47
  519. package/contracts/experiment/types/TypeB.sol +0 -29
  520. package/contracts/instance/AccessManagedSimple.sol +0 -115
  521. package/contracts/instance/AccessManagerSimple.sol +0 -692
  522. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  523. package/contracts/instance/base/ComponentServiceBase.sol +0 -118
  524. package/contracts/instance/base/IInstanceBase.sol +0 -23
  525. package/contracts/instance/base/KeyValueStore.sol +0 -172
  526. package/contracts/instance/module/ISetup.sol +0 -44
  527. package/contracts/instance/module/ITreasury.sol +0 -23
  528. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  529. package/contracts/instance/service/DistributionService.sol +0 -87
  530. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  531. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  532. package/contracts/instance/service/IDistributionService.sol +0 -12
  533. package/contracts/instance/service/IPoolService.sol +0 -37
  534. package/contracts/instance/service/IProductService.sol +0 -107
  535. package/contracts/instance/service/PoolService.sol +0 -193
  536. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  537. package/contracts/shared/ContractDeployerLib.sol +0 -72
  538. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  539. package/contracts/test/TestFee.sol +0 -25
  540. package/contracts/test/TestRegisterable.sol +0 -18
  541. package/contracts/test/TestRoleId.sol +0 -14
  542. package/contracts/test/TestService.sol +0 -24
  543. package/contracts/test/TestToken.sol +0 -26
  544. package/contracts/test/TestVersion.sol +0 -44
  545. package/contracts/test/TestVersionable.sol +0 -17
  546. package/contracts/types/ChainId.sol +0 -38
  547. package/contracts/types/NftIdSet.sol +0 -60
  548. package/contracts/types/NumberId.sol +0 -52
  549. package/contracts/types/RoleId.sol +0 -89
  550. /package/contracts/{types → type}/AddressSet.sol +0 -0
  551. /package/contracts/{types → type}/Key32.sol +0 -0
  552. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,1151 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ReleaseManager",
4
+ "sourceName": "contracts/registry/ReleaseManager.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "gifAdmin",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "gifManager",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "registry",
21
+ "type": "address"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "address",
31
+ "name": "authority",
32
+ "type": "address"
33
+ }
34
+ ],
35
+ "name": "AccessManagedInvalidAuthority",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [
40
+ {
41
+ "internalType": "address",
42
+ "name": "caller",
43
+ "type": "address"
44
+ },
45
+ {
46
+ "internalType": "uint32",
47
+ "name": "delay",
48
+ "type": "uint32"
49
+ }
50
+ ],
51
+ "name": "AccessManagedRequiredDelay",
52
+ "type": "error"
53
+ },
54
+ {
55
+ "inputs": [
56
+ {
57
+ "internalType": "address",
58
+ "name": "caller",
59
+ "type": "address"
60
+ }
61
+ ],
62
+ "name": "AccessManagedUnauthorized",
63
+ "type": "error"
64
+ },
65
+ {
66
+ "inputs": [],
67
+ "name": "ERC1167FailedCreateClone",
68
+ "type": "error"
69
+ },
70
+ {
71
+ "inputs": [
72
+ {
73
+ "internalType": "ObjectType",
74
+ "name": "objectType",
75
+ "type": "uint8"
76
+ },
77
+ {
78
+ "internalType": "StateId",
79
+ "name": "fromStateId",
80
+ "type": "uint8"
81
+ },
82
+ {
83
+ "internalType": "StateId",
84
+ "name": "toStateId",
85
+ "type": "uint8"
86
+ }
87
+ ],
88
+ "name": "ErrorInvalidStateTransition",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [
93
+ {
94
+ "internalType": "NftId",
95
+ "name": "nftId",
96
+ "type": "uint96"
97
+ },
98
+ {
99
+ "internalType": "ObjectType",
100
+ "name": "objectType",
101
+ "type": "uint8"
102
+ }
103
+ ],
104
+ "name": "ErrorNoLifecycle",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [
109
+ {
110
+ "internalType": "StateId",
111
+ "name": "currentStateId",
112
+ "type": "uint8"
113
+ }
114
+ ],
115
+ "name": "ErrorReleaseManagerActivationDisallowed",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "ErrorReleaseManagerNoServiceRegistrationExpected",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [
125
+ {
126
+ "internalType": "address",
127
+ "name": "registry",
128
+ "type": "address"
129
+ }
130
+ ],
131
+ "name": "ErrorReleaseManagerNotRegistry",
132
+ "type": "error"
133
+ },
134
+ {
135
+ "inputs": [
136
+ {
137
+ "internalType": "contract IService",
138
+ "name": "service",
139
+ "type": "address"
140
+ }
141
+ ],
142
+ "name": "ErrorReleaseManagerNotService",
143
+ "type": "error"
144
+ },
145
+ {
146
+ "inputs": [
147
+ {
148
+ "internalType": "VersionPart",
149
+ "name": "releaseVersion",
150
+ "type": "uint8"
151
+ }
152
+ ],
153
+ "name": "ErrorReleaseManagerReleaseAlreadyActivated",
154
+ "type": "error"
155
+ },
156
+ {
157
+ "inputs": [
158
+ {
159
+ "internalType": "VersionPart",
160
+ "name": "version",
161
+ "type": "uint8"
162
+ }
163
+ ],
164
+ "name": "ErrorReleaseManagerReleaseAlreadyCreated",
165
+ "type": "error"
166
+ },
167
+ {
168
+ "inputs": [
169
+ {
170
+ "internalType": "StateId",
171
+ "name": "currentStateId",
172
+ "type": "uint8"
173
+ }
174
+ ],
175
+ "name": "ErrorReleaseManagerReleaseCreationDisallowed",
176
+ "type": "error"
177
+ },
178
+ {
179
+ "inputs": [],
180
+ "name": "ErrorReleaseManagerReleaseEmpty",
181
+ "type": "error"
182
+ },
183
+ {
184
+ "inputs": [
185
+ {
186
+ "internalType": "VersionPart",
187
+ "name": "releaseVersion",
188
+ "type": "uint8"
189
+ }
190
+ ],
191
+ "name": "ErrorReleaseManagerReleaseNotCreated",
192
+ "type": "error"
193
+ },
194
+ {
195
+ "inputs": [
196
+ {
197
+ "internalType": "StateId",
198
+ "name": "currentStateId",
199
+ "type": "uint8"
200
+ }
201
+ ],
202
+ "name": "ErrorReleaseManagerReleasePreparationDisallowed",
203
+ "type": "error"
204
+ },
205
+ {
206
+ "inputs": [
207
+ {
208
+ "internalType": "VersionPart",
209
+ "name": "releaseVersion",
210
+ "type": "uint8"
211
+ },
212
+ {
213
+ "internalType": "uint256",
214
+ "name": "awaitingRegistration",
215
+ "type": "uint256"
216
+ }
217
+ ],
218
+ "name": "ErrorReleaseManagerReleaseRegistrationNotFinished",
219
+ "type": "error"
220
+ },
221
+ {
222
+ "inputs": [
223
+ {
224
+ "internalType": "contract IService",
225
+ "name": "given",
226
+ "type": "address"
227
+ },
228
+ {
229
+ "internalType": "address",
230
+ "name": "expected",
231
+ "type": "address"
232
+ }
233
+ ],
234
+ "name": "ErrorReleaseManagerServiceAddressInvalid",
235
+ "type": "error"
236
+ },
237
+ {
238
+ "inputs": [
239
+ {
240
+ "internalType": "contract IService",
241
+ "name": "service",
242
+ "type": "address"
243
+ },
244
+ {
245
+ "internalType": "address",
246
+ "name": "expected",
247
+ "type": "address"
248
+ }
249
+ ],
250
+ "name": "ErrorReleaseManagerServiceInfoAddressInvalid",
251
+ "type": "error"
252
+ },
253
+ {
254
+ "inputs": [
255
+ {
256
+ "internalType": "contract IService",
257
+ "name": "service",
258
+ "type": "address"
259
+ },
260
+ {
261
+ "internalType": "bool",
262
+ "name": "isInterceptor",
263
+ "type": "bool"
264
+ }
265
+ ],
266
+ "name": "ErrorReleaseManagerServiceInfoInterceptorInvalid",
267
+ "type": "error"
268
+ },
269
+ {
270
+ "inputs": [
271
+ {
272
+ "internalType": "contract IService",
273
+ "name": "service",
274
+ "type": "address"
275
+ },
276
+ {
277
+ "internalType": "address",
278
+ "name": "expected",
279
+ "type": "address"
280
+ },
281
+ {
282
+ "internalType": "address",
283
+ "name": "found",
284
+ "type": "address"
285
+ }
286
+ ],
287
+ "name": "ErrorReleaseManagerServiceInfoOwnerInvalid",
288
+ "type": "error"
289
+ },
290
+ {
291
+ "inputs": [
292
+ {
293
+ "internalType": "contract IService",
294
+ "name": "service",
295
+ "type": "address"
296
+ },
297
+ {
298
+ "internalType": "ObjectType",
299
+ "name": "expected",
300
+ "type": "uint8"
301
+ },
302
+ {
303
+ "internalType": "ObjectType",
304
+ "name": "found",
305
+ "type": "uint8"
306
+ }
307
+ ],
308
+ "name": "ErrorReleaseManagerServiceInfoTypeInvalid",
309
+ "type": "error"
310
+ },
311
+ {
312
+ "inputs": [
313
+ {
314
+ "internalType": "contract IService",
315
+ "name": "service",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "internalType": "address",
320
+ "name": "owner",
321
+ "type": "address"
322
+ }
323
+ ],
324
+ "name": "ErrorReleaseManagerServiceOwnerRegistered",
325
+ "type": "error"
326
+ },
327
+ {
328
+ "inputs": [
329
+ {
330
+ "internalType": "StateId",
331
+ "name": "currentStateId",
332
+ "type": "uint8"
333
+ }
334
+ ],
335
+ "name": "ErrorReleaseManagerServiceRegistrationDisallowed",
336
+ "type": "error"
337
+ },
338
+ {
339
+ "inputs": [
340
+ {
341
+ "internalType": "contract IService",
342
+ "name": "service",
343
+ "type": "address"
344
+ },
345
+ {
346
+ "internalType": "address",
347
+ "name": "serviceAuthority",
348
+ "type": "address"
349
+ },
350
+ {
351
+ "internalType": "address",
352
+ "name": "releaseAuthority",
353
+ "type": "address"
354
+ }
355
+ ],
356
+ "name": "ErrorReleaseManagerServiceReleaseAuthorityMismatch",
357
+ "type": "error"
358
+ },
359
+ {
360
+ "inputs": [
361
+ {
362
+ "internalType": "contract IService",
363
+ "name": "service",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "internalType": "VersionPart",
368
+ "name": "serviceVersion",
369
+ "type": "uint8"
370
+ },
371
+ {
372
+ "internalType": "VersionPart",
373
+ "name": "releaseVersion",
374
+ "type": "uint8"
375
+ }
376
+ ],
377
+ "name": "ErrorReleaseManagerServiceReleaseVersionMismatch",
378
+ "type": "error"
379
+ },
380
+ {
381
+ "inputs": [
382
+ {
383
+ "internalType": "address",
384
+ "name": "service",
385
+ "type": "address"
386
+ },
387
+ {
388
+ "internalType": "RoleId",
389
+ "name": "role",
390
+ "type": "uint64"
391
+ }
392
+ ],
393
+ "name": "ErrorReleaseManagerServiceRoleInvalid",
394
+ "type": "error"
395
+ },
396
+ {
397
+ "inputs": [
398
+ {
399
+ "internalType": "contract IService",
400
+ "name": "service",
401
+ "type": "address"
402
+ }
403
+ ],
404
+ "name": "ErrorReleaseManagerServiceSelfRegistration",
405
+ "type": "error"
406
+ },
407
+ {
408
+ "inputs": [
409
+ {
410
+ "internalType": "address",
411
+ "name": "stakingAddress",
412
+ "type": "address"
413
+ }
414
+ ],
415
+ "name": "ErrorReleaseManagerStakingAlreadySet",
416
+ "type": "error"
417
+ },
418
+ {
419
+ "inputs": [],
420
+ "name": "InvalidInitialization",
421
+ "type": "error"
422
+ },
423
+ {
424
+ "inputs": [],
425
+ "name": "NotInitializing",
426
+ "type": "error"
427
+ },
428
+ {
429
+ "anonymous": false,
430
+ "inputs": [
431
+ {
432
+ "indexed": false,
433
+ "internalType": "address",
434
+ "name": "authority",
435
+ "type": "address"
436
+ }
437
+ ],
438
+ "name": "AuthorityUpdated",
439
+ "type": "event"
440
+ },
441
+ {
442
+ "anonymous": false,
443
+ "inputs": [
444
+ {
445
+ "indexed": false,
446
+ "internalType": "uint64",
447
+ "name": "version",
448
+ "type": "uint64"
449
+ }
450
+ ],
451
+ "name": "Initialized",
452
+ "type": "event"
453
+ },
454
+ {
455
+ "anonymous": false,
456
+ "inputs": [
457
+ {
458
+ "indexed": false,
459
+ "internalType": "VersionPart",
460
+ "name": "version",
461
+ "type": "uint8"
462
+ }
463
+ ],
464
+ "name": "LogReleaseActivation",
465
+ "type": "event"
466
+ },
467
+ {
468
+ "anonymous": false,
469
+ "inputs": [
470
+ {
471
+ "indexed": false,
472
+ "internalType": "VersionPart",
473
+ "name": "version",
474
+ "type": "uint8"
475
+ },
476
+ {
477
+ "indexed": false,
478
+ "internalType": "bytes32",
479
+ "name": "salt",
480
+ "type": "bytes32"
481
+ },
482
+ {
483
+ "indexed": false,
484
+ "internalType": "contract AccessManagerUpgradeableInitializeable",
485
+ "name": "accessManager",
486
+ "type": "address"
487
+ }
488
+ ],
489
+ "name": "LogReleaseCreation",
490
+ "type": "event"
491
+ },
492
+ {
493
+ "inputs": [],
494
+ "name": "INITIAL_GIF_VERSION",
495
+ "outputs": [
496
+ {
497
+ "internalType": "uint256",
498
+ "name": "",
499
+ "type": "uint256"
500
+ }
501
+ ],
502
+ "stateMutability": "view",
503
+ "type": "function"
504
+ },
505
+ {
506
+ "inputs": [],
507
+ "name": "_accessManager",
508
+ "outputs": [
509
+ {
510
+ "internalType": "contract RegistryAccessManager",
511
+ "name": "",
512
+ "type": "address"
513
+ }
514
+ ],
515
+ "stateMutability": "view",
516
+ "type": "function"
517
+ },
518
+ {
519
+ "inputs": [],
520
+ "name": "_registry",
521
+ "outputs": [
522
+ {
523
+ "internalType": "contract Registry",
524
+ "name": "",
525
+ "type": "address"
526
+ }
527
+ ],
528
+ "stateMutability": "view",
529
+ "type": "function"
530
+ },
531
+ {
532
+ "inputs": [],
533
+ "name": "activateNextRelease",
534
+ "outputs": [],
535
+ "stateMutability": "nonpayable",
536
+ "type": "function"
537
+ },
538
+ {
539
+ "inputs": [],
540
+ "name": "authority",
541
+ "outputs": [
542
+ {
543
+ "internalType": "address",
544
+ "name": "",
545
+ "type": "address"
546
+ }
547
+ ],
548
+ "stateMutability": "view",
549
+ "type": "function"
550
+ },
551
+ {
552
+ "inputs": [],
553
+ "name": "createNextRelease",
554
+ "outputs": [
555
+ {
556
+ "internalType": "VersionPart",
557
+ "name": "version",
558
+ "type": "uint8"
559
+ }
560
+ ],
561
+ "stateMutability": "nonpayable",
562
+ "type": "function"
563
+ },
564
+ {
565
+ "inputs": [
566
+ {
567
+ "internalType": "ObjectType",
568
+ "name": "objectType",
569
+ "type": "uint8"
570
+ }
571
+ ],
572
+ "name": "getInitialState",
573
+ "outputs": [
574
+ {
575
+ "internalType": "StateId",
576
+ "name": "stateId",
577
+ "type": "uint8"
578
+ }
579
+ ],
580
+ "stateMutability": "view",
581
+ "type": "function"
582
+ },
583
+ {
584
+ "inputs": [],
585
+ "name": "getInitialVersion",
586
+ "outputs": [
587
+ {
588
+ "internalType": "VersionPart",
589
+ "name": "",
590
+ "type": "uint8"
591
+ }
592
+ ],
593
+ "stateMutability": "view",
594
+ "type": "function"
595
+ },
596
+ {
597
+ "inputs": [],
598
+ "name": "getLatestVersion",
599
+ "outputs": [
600
+ {
601
+ "internalType": "VersionPart",
602
+ "name": "",
603
+ "type": "uint8"
604
+ }
605
+ ],
606
+ "stateMutability": "view",
607
+ "type": "function"
608
+ },
609
+ {
610
+ "inputs": [],
611
+ "name": "getNextVersion",
612
+ "outputs": [
613
+ {
614
+ "internalType": "VersionPart",
615
+ "name": "",
616
+ "type": "uint8"
617
+ }
618
+ ],
619
+ "stateMutability": "view",
620
+ "type": "function"
621
+ },
622
+ {
623
+ "inputs": [],
624
+ "name": "getRegistry",
625
+ "outputs": [
626
+ {
627
+ "internalType": "contract IRegistry",
628
+ "name": "",
629
+ "type": "address"
630
+ }
631
+ ],
632
+ "stateMutability": "view",
633
+ "type": "function"
634
+ },
635
+ {
636
+ "inputs": [],
637
+ "name": "getRegistryAccessManager",
638
+ "outputs": [
639
+ {
640
+ "internalType": "contract RegistryAccessManager",
641
+ "name": "",
642
+ "type": "address"
643
+ }
644
+ ],
645
+ "stateMutability": "view",
646
+ "type": "function"
647
+ },
648
+ {
649
+ "inputs": [],
650
+ "name": "getRegistryAddress",
651
+ "outputs": [
652
+ {
653
+ "internalType": "address",
654
+ "name": "",
655
+ "type": "address"
656
+ }
657
+ ],
658
+ "stateMutability": "view",
659
+ "type": "function"
660
+ },
661
+ {
662
+ "inputs": [
663
+ {
664
+ "internalType": "VersionPart",
665
+ "name": "version",
666
+ "type": "uint8"
667
+ }
668
+ ],
669
+ "name": "getReleaseAccessManager",
670
+ "outputs": [
671
+ {
672
+ "internalType": "contract AccessManagerUpgradeableInitializeable",
673
+ "name": "",
674
+ "type": "address"
675
+ }
676
+ ],
677
+ "stateMutability": "view",
678
+ "type": "function"
679
+ },
680
+ {
681
+ "inputs": [
682
+ {
683
+ "internalType": "VersionPart",
684
+ "name": "version",
685
+ "type": "uint8"
686
+ }
687
+ ],
688
+ "name": "getReleaseInfo",
689
+ "outputs": [
690
+ {
691
+ "components": [
692
+ {
693
+ "internalType": "VersionPart",
694
+ "name": "version",
695
+ "type": "uint8"
696
+ },
697
+ {
698
+ "internalType": "address[]",
699
+ "name": "addresses",
700
+ "type": "address[]"
701
+ },
702
+ {
703
+ "internalType": "RoleId[][]",
704
+ "name": "serviceRoles",
705
+ "type": "uint64[][]"
706
+ },
707
+ {
708
+ "internalType": "RoleId[][]",
709
+ "name": "functionRoles",
710
+ "type": "uint64[][]"
711
+ },
712
+ {
713
+ "internalType": "bytes4[][][]",
714
+ "name": "selectors",
715
+ "type": "bytes4[][][]"
716
+ },
717
+ {
718
+ "internalType": "ObjectType[]",
719
+ "name": "domains",
720
+ "type": "uint8[]"
721
+ },
722
+ {
723
+ "internalType": "Timestamp",
724
+ "name": "activatedAt",
725
+ "type": "uint40"
726
+ }
727
+ ],
728
+ "internalType": "struct IRegistry.ReleaseInfo",
729
+ "name": "",
730
+ "type": "tuple"
731
+ }
732
+ ],
733
+ "stateMutability": "view",
734
+ "type": "function"
735
+ },
736
+ {
737
+ "inputs": [],
738
+ "name": "getRemainingServicesToRegister",
739
+ "outputs": [
740
+ {
741
+ "internalType": "uint256",
742
+ "name": "services",
743
+ "type": "uint256"
744
+ }
745
+ ],
746
+ "stateMutability": "view",
747
+ "type": "function"
748
+ },
749
+ {
750
+ "inputs": [],
751
+ "name": "getState",
752
+ "outputs": [
753
+ {
754
+ "internalType": "StateId",
755
+ "name": "stateId",
756
+ "type": "uint8"
757
+ }
758
+ ],
759
+ "stateMutability": "view",
760
+ "type": "function"
761
+ },
762
+ {
763
+ "inputs": [
764
+ {
765
+ "internalType": "ObjectType",
766
+ "name": "objectType",
767
+ "type": "uint8"
768
+ }
769
+ ],
770
+ "name": "hasLifecycle",
771
+ "outputs": [
772
+ {
773
+ "internalType": "bool",
774
+ "name": "",
775
+ "type": "bool"
776
+ }
777
+ ],
778
+ "stateMutability": "view",
779
+ "type": "function"
780
+ },
781
+ {
782
+ "inputs": [
783
+ {
784
+ "internalType": "address",
785
+ "name": "service",
786
+ "type": "address"
787
+ }
788
+ ],
789
+ "name": "isActiveRegistryService",
790
+ "outputs": [
791
+ {
792
+ "internalType": "bool",
793
+ "name": "",
794
+ "type": "bool"
795
+ }
796
+ ],
797
+ "stateMutability": "view",
798
+ "type": "function"
799
+ },
800
+ {
801
+ "inputs": [],
802
+ "name": "isConsumingScheduledOp",
803
+ "outputs": [
804
+ {
805
+ "internalType": "bytes4",
806
+ "name": "",
807
+ "type": "bytes4"
808
+ }
809
+ ],
810
+ "stateMutability": "view",
811
+ "type": "function"
812
+ },
813
+ {
814
+ "inputs": [
815
+ {
816
+ "internalType": "VersionPart",
817
+ "name": "version",
818
+ "type": "uint8"
819
+ }
820
+ ],
821
+ "name": "isValidRelease",
822
+ "outputs": [
823
+ {
824
+ "internalType": "bool",
825
+ "name": "",
826
+ "type": "bool"
827
+ }
828
+ ],
829
+ "stateMutability": "view",
830
+ "type": "function"
831
+ },
832
+ {
833
+ "inputs": [
834
+ {
835
+ "internalType": "ObjectType",
836
+ "name": "objectType",
837
+ "type": "uint8"
838
+ },
839
+ {
840
+ "internalType": "StateId",
841
+ "name": "fromId",
842
+ "type": "uint8"
843
+ },
844
+ {
845
+ "internalType": "StateId",
846
+ "name": "toId",
847
+ "type": "uint8"
848
+ }
849
+ ],
850
+ "name": "isValidTransition",
851
+ "outputs": [
852
+ {
853
+ "internalType": "bool",
854
+ "name": "isValid",
855
+ "type": "bool"
856
+ }
857
+ ],
858
+ "stateMutability": "view",
859
+ "type": "function"
860
+ },
861
+ {
862
+ "inputs": [
863
+ {
864
+ "internalType": "address",
865
+ "name": "implementation",
866
+ "type": "address"
867
+ },
868
+ {
869
+ "internalType": "bytes32",
870
+ "name": "salt",
871
+ "type": "bytes32"
872
+ },
873
+ {
874
+ "internalType": "address",
875
+ "name": "deployer",
876
+ "type": "address"
877
+ }
878
+ ],
879
+ "name": "predictDeterministicAddress",
880
+ "outputs": [
881
+ {
882
+ "internalType": "address",
883
+ "name": "predicted",
884
+ "type": "address"
885
+ }
886
+ ],
887
+ "stateMutability": "pure",
888
+ "type": "function"
889
+ },
890
+ {
891
+ "inputs": [
892
+ {
893
+ "internalType": "address[]",
894
+ "name": "addresses",
895
+ "type": "address[]"
896
+ },
897
+ {
898
+ "internalType": "RoleId[][]",
899
+ "name": "serviceRoles",
900
+ "type": "uint64[][]"
901
+ },
902
+ {
903
+ "internalType": "RoleId[][]",
904
+ "name": "functionRoles",
905
+ "type": "uint64[][]"
906
+ },
907
+ {
908
+ "internalType": "bytes4[][][]",
909
+ "name": "selectors",
910
+ "type": "bytes4[][][]"
911
+ },
912
+ {
913
+ "internalType": "bytes32",
914
+ "name": "salt",
915
+ "type": "bytes32"
916
+ }
917
+ ],
918
+ "name": "prepareNextRelease",
919
+ "outputs": [
920
+ {
921
+ "internalType": "address",
922
+ "name": "releaseAccessManagerAddress",
923
+ "type": "address"
924
+ },
925
+ {
926
+ "internalType": "VersionPart",
927
+ "name": "version",
928
+ "type": "uint8"
929
+ },
930
+ {
931
+ "internalType": "bytes32",
932
+ "name": "releaseSalt",
933
+ "type": "bytes32"
934
+ }
935
+ ],
936
+ "stateMutability": "nonpayable",
937
+ "type": "function"
938
+ },
939
+ {
940
+ "inputs": [
941
+ {
942
+ "internalType": "contract IService",
943
+ "name": "service",
944
+ "type": "address"
945
+ }
946
+ ],
947
+ "name": "registerService",
948
+ "outputs": [
949
+ {
950
+ "internalType": "NftId",
951
+ "name": "nftId",
952
+ "type": "uint96"
953
+ }
954
+ ],
955
+ "stateMutability": "nonpayable",
956
+ "type": "function"
957
+ },
958
+ {
959
+ "inputs": [
960
+ {
961
+ "internalType": "address",
962
+ "name": "stakingAddress",
963
+ "type": "address"
964
+ }
965
+ ],
966
+ "name": "registerStaking",
967
+ "outputs": [],
968
+ "stateMutability": "nonpayable",
969
+ "type": "function"
970
+ },
971
+ {
972
+ "inputs": [
973
+ {
974
+ "internalType": "address",
975
+ "name": "newAuthority",
976
+ "type": "address"
977
+ }
978
+ ],
979
+ "name": "setAuthority",
980
+ "outputs": [],
981
+ "stateMutability": "nonpayable",
982
+ "type": "function"
983
+ }
984
+ ],
985
+ "bytecode": "0x60e06040523480156200001157600080fd5b50604051620081dc380380620081dc8339810160408190526200003491620004e5565b336200004081620002a2565b506200004c81620002f6565b6200007a576040516358374b4160e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b03811660a052604051839083906200009990620004bf565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620000cd573d6000803e3d6000fd5b506001600160a01b031660808190526040805163bf7e214f60e01b8152905162000149929163bf7e214f9160048083019260209291908290030181865afa1580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014391906200052f565b62000411565b604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af41580156200019a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c0919062000554565b60ff1660c05273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__638e4ad86c620001ee6001600362000579565b6040518263ffffffff1660e01b81526004016200020d91815260200190565b602060405180830381865af41580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000251919062000554565b6006805460ff929092166101000261ff00199092169190911790556200027f62000279600190565b62000491565b600660026101000a81548160ff021916908360ff160217905550505050620005ea565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b60006001600160a01b0382166200030f57506000919050565b604051636939560f60e11b81526001600160a01b038316600482018190529063d272ac1e90602401602060405180830381865afa15801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b91906200059b565b604051630a4d29dd60e31b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015620003d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fb9190620005c6565b156200040957506000919050565b506001919050565b60005433906001600160a01b031681146200044a5760405162d1953b60e31b81526001600160a01b038216600482015260240162000071565b816001600160a01b03163b60000362000482576040516361798f2f60e11b81526001600160a01b038316600482015260240162000071565b6200048d82620002a2565b5050565b6000620004a0826001620004af565b15620004aa575060015b919050565b60ff828116908216145b92915050565b6145928062003c4a83390190565b80516001600160a01b0381168114620004aa57600080fd5b600080600060608486031215620004fb57600080fd5b6200050684620004cd565b92506200051660208501620004cd565b91506200052660408501620004cd565b90509250925092565b6000602082840312156200054257600080fd5b6200054d82620004cd565b9392505050565b6000602082840312156200056757600080fd5b815160ff811681146200054d57600080fd5b81810381811115620004b957634e487b7160e01b600052601160045260246000fd5b600060208284031215620005ae57600080fd5b81516001600160601b03811681146200054d57600080fd5b600060208284031215620005d957600080fd5b815180151581146200054d57600080fd5b60805160a05160c0516135ff6200064b60003960006101e20152600081816102a4015281816102df0152818161066d0152818161087f0152818161184a01526125060152600081816102800152818161034a015261123a01526135ff6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806393a7e711116100f9578063bf7e214f11610097578063e9e96c7011610071578063e9e96c701461044b578063f21de1e8146102a2578063f40d7c301461045e578063fdd9ec7d1461046e57600080fd5b8063bf7e214f146103e0578063d2213b5b146103f1578063d5264d7a1461041157600080fd5b80639ef6ddc9116100d35780639ef6ddc914610376578063a2844824146103b2578063a52ec529146103ba578063bf1db3f9146103cd57600080fd5b806393a7e711146103355780639941314e1461034857806399a228e51461036e57600080fd5b806319d1478b1161016657806371ed16e41161014057806371ed16e4146102c857806379cbc5fa146102da5780637a9e5e4b146103015780638fb360371461031457600080fd5b806319d1478b146102375780632892cd3a1461027b5780635ab1bd53146102a257600080fd5b80630af43fe1146101ae5780630d358181146101cd5780630e41142e146101e05780630e6d1de9146102065780631865c57d14610211578063186664d814610222575b600080fd5b6101b6610499565b60405160ff90911681526020015b60405180910390f35b6101b66101db36600461294b565b610626565b7f00000000000000000000000000000000000000000000000000000000000000006101b6565b60065460ff166101b6565b60065462010000900460ff166101b6565b61023561023036600461297d565b610643565b005b61026361024536600461294b565b60ff166000908152600360205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020016101c4565b6102637f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610263565b6007545b6040519081526020016101c4565b6102637f000000000000000000000000000000000000000000000000000000000000000081565b61023561030f36600461297d565b610722565b61031c61079c565b6040516001600160e01b031990911681526020016101c4565b61026361034336600461299a565b6107c2565b7f0000000000000000000000000000000000000000000000000000000000000000610263565b6102cc600381565b6103a261038436600461297d565b6001600160a01b031660009081526005602052604090205460ff1690565b60405190151581526020016101c4565b610235610823565b6103a26103c836600461294b565b610b64565b6103a26103db36600461294b565b610bf9565b6000546001600160a01b0316610263565b6104046103ff36600461294b565b610c06565b6040516101c49190612baa565b61042461041f366004612f7e565b611008565b604080516001600160a01b03909416845260ff9092166020840152908201526060016101c4565b6103a2610459366004613090565b61139a565b600654610100900460ff166101b6565b61048161047c36600461297d565b611498565b6040516001600160601b0390911681526020016101c4565b60006104a8335b60003661192b565b6104c1600160065462010000900460ff16610459600290565b6104f1576006546040516319ddc69560e21b81526201000090910460ff1660048201526024015b60405180910390fd5b600654604051632b10f60d60e21b815261010090910460ff16600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90829063ac43d83490602401602060405180830381865af4158015610553573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057791906130d0565b6105829060016130ff565b6040518263ffffffff1660e01b81526004016105a091815260200190565b602060405180830381865af41580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e1919061311d565b6006805460ff929092166101000261ff00199092169190911790556000600755610609600290565b600660026101000a81548160ff021916908360ff16021790555090565b6000610633826001611a2b565b1561063e5760015b90505b919050565b61064c336104a0565b60405163030ccc9b60e31b81526001600160a01b03808316600483015282917f00000000000000000000000000000000000000000000000000000000000000009091169063186664d890602401600060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b50505050806001600160a01b031663138461e06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561070657600080fd5b505af115801561071a573d6000803e3d6000fd5b505050505050565b60005433906001600160a01b031681146107595760405162d1953b60e31b81526001600160a01b03821660048201526024016104e8565b816001600160a01b03163b60000361078f576040516361798f2f60e11b81526001600160a01b03831660048201526024016104e8565b61079882611a3b565b5050565b60008054600160a01b900460ff166107b45750600090565b638fb3603760e01b5b905090565b604051603881018290526f5af43d82803e903d91602b57fd5bf3ff602482015260148101849052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018390526037600c820120607882015260556043909101205b9392505050565b61082c336104a0565b610845600160065462010000900460ff16610459600490565b6108705760065460405163efcc379960e01b81526201000090910460ff1660048201526024016104e8565b600654610100900460ff1660007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d39e60436108b4602890565b6040516001600160e01b031960e084901b16815260ff91821660048201529085166024820152604401602060405180830381865afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e9190613145565b90506001600160a01b03811661094c57604051638047661960e01b815260ff831660048201526024016104e8565b6007541561097d5760075460405163c90aac6160e01b815260ff8416600482015260248101919091526044016104e8565b60ff8216600090815260046020819052604091829020600601549151638d38cd4b60e01b815264ffffffffff9092169082015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af41580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190613172565b15610a3357604051630e5e66b360e21b815260ff831660048201526024016104e8565b6006805460ff191660ff8416179055610a4a600490565b6006805460ff92909216620100000262ff0000199092169190911790556001600160a01b038116600090815260056020908152604091829020805460ff1916600117905581516356db0c1960e11b8152915173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb618329260048083019391928290030181865af4158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd919061318d565b60ff8316600081815260046020908152604091829020600601805464ffffffffff191664ffffffffff9590951694909417909355519081527fb7defc6b4b34e4db6f0265bb8cc2606e513beda1e68095b668932471417561d4910160405180910390a15050565b60ff81166000908152600460208190526040808320600601549051638d38cd4b60e01b815264ffffffffff9091169181019190915273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af4158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190613172565b600061063b826001611a2b565b610c506040518060e00160405280600060ff1681526020016060815260200160608152602001606081526020016060815260200160608152602001600064ffffffffff1681525090565b60ff808316600090815260046020908152604091829020825160e08101845281549094168452600181018054845181850281018501909552808552919385840193909290830182828015610ccd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610caf575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610d9957600084815260209081902083018054604080518285028101850190915281815292830182828015610d8557602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610d425790505b505050505081526020019060010190610cfb565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610e6457600084815260209081902083018054604080518285028101850190915281815292830182828015610e5057602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610e0d5790505b505050505081526020019060010190610dc6565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610f7157838290600052602060002001805480602002602001604051908101604052809291908181526020016000905b82821015610f5e57600084815260209081902083018054604080518285028101850190915281815292830182828015610f4a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f0c5790505b505050505081526020019060010190610ec5565b5050505081526020019060010190610e91565b50505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610fe657602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610fb75790505b50505091835250506006919091015464ffffffffff1660209091015292915050565b60008080611015336104a0565b61102f60015b60065462010000900460ff16610459600390565b61105a576006546040516313e3076760e31b81526201000090910460ff1660048201526024016104e8565b875160000361107c576040516357e3390360e01b815260040160405180910390fd5b600754156110a257604051638a25989560e01b815260ff831660048201526024016104e8565b6110ae88888888611a8f565b600654610100900460ff166000818152600460209081526040909120805460ff1916831781558a519294506110eb926001909101918b01906125a8565b5060ff821660009081526004602090815260409091208851611115926002909201918a019061260d565b5060ff82166000908152600460209081526040909120875161113f9260039092019189019061260d565b5060ff82166000908152600460208181526040909220875161116993919092019190880190612666565b50875160075560036006805462ff000019166201000060ff938416021790819055610100900416604051632b10f60d60e21b815260ff8216600482015290925073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__9063ac43d83490602401602060405180830381865af41580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906130d0565b60408051602081019290925281018590526060016040516020818303038152906040528051906020012090506112c07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190613145565b82611b90565b60ff83166000908152600360205260409081902080546001600160a01b0319166001600160a01b038416908117909155905163189acdbd60e31b8152306004820152919450849163c4d66de890602401600060405180830381600087803b15801561132a57600080fd5b505af115801561133e573d6000803e3d6000fd5b50506040805160ff87168152602081018690526001600160a01b0385168183015290517f6529cb4b9a24b8de97cbd0802b1c3d02a8c8aed37388204e2f5bc3013793977e9350908190036060019150a150955095509592505050565b60006113af8460015b60ff9081169116141590565b156113bc5750600061081c565b6113c7836001611a2b565b80156113d957506113d9826002611a2b565b156113e65750600161081c565b6113f1836002611a2b565b80156114035750611403826003611a2b565b156114105750600161081c565b61141b836003611a2b565b801561142d575061142d826002611a2b565b1561143a5750600161081c565b611445836003611a2b565b80156114575750611457826003611a2b565b156114645750600161081c565b61146f836003611a2b565b80156114815750611481826004611a2b565b1561148e5750600161081c565b5060009392505050565b60006114a3336104a0565b6114ad600161101b565b6114d8576006546040516316997edd60e11b81526201000090910460ff1660048201526024016104e8565b60008060006114e685611bfe565b92509250925060075460000361150f57604051630a7d531760e31b815260040160405180910390fd5b6000600160075461152091906131b4565b60ff83166000908152600460205260408120600101805492935090918390811061154c5761154c6131c7565b600091825260208083209091015460ff8616835260038252604080842054600490935290922060020180546001600160a01b0393841694506117d89392909216918a9190869081106115a0576115a06131c7565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561162657602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116115e35790505b50505060ff8916600090815260046020526040902060030180549092508891508110611654576116546131c7565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156116da57602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116116975790505b5050505050600460008960ff1660ff168152602001908152602001600020600401878154811061170c5761170c6131c7565b90600052602060002001805480602002602001604051908101604052809291908181526020016000905b828210156117cf576000848152602090819020830180546040805182850281018501909152818152928301828280156117bb57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161177d5790505b505050505081526020019060010190611736565b50505050611f9e565b60078290556006805462ff000019166203000017905560ff83811660009081526004602081815260408084206005018054600181018255908552938290209184049091018054601f9094166101000a8086021990941694891693909302939093179091559051635382852b60e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163a7050a569161188991899188918a910161322d565b6020604051808303816000875af11580156118a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cc91906132eb565b9550866001600160a01b031663138461e06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050505050505050919050565b6000806119616119436000546001600160a01b031690565b863061195360046000898b613306565b61195c91613330565b612209565b9150915081611a245763ffffffff811615611a01576000805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee906119bc90889088908890600401613360565b600060405180830381600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b50506000805460ff60a01b1916905550611a249050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016104e8565b5050505050565b60ff828116908216145b92915050565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b60005b8451811015611a245760005b848281518110611ab057611ab06131c7565b602002602001015151811015611b7d576000858381518110611ad457611ad46131c7565b60200260200101518281518110611aed57611aed6131c7565b60200260200101519050611b1481611b03612315565b6001600160401b0390811691161490565b15611b6a57868381518110611b2b57611b2b6131c7565b60209081029190910101516040516313f9006960e01b81526001600160a01b0390911660048201526001600160401b03821660248201526044016104e8565b5080611b75816133a0565b915050611a9e565b5080611b88816133a0565b915050611a92565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116611a35576040516330be1a3d60e21b815260040160405180910390fd5b6040805160e08101825260008082526020820181905281830181905260608083018290526080830182905260a0830182905260c083015291516301ffc9a760e01b815263b68d180960e01b600482015290919081906001600160a01b038516906301ffc9a790602401602060405180830381865afa158015611c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca89190613172565b611cd057604051631fdf992160e01b81526001600160a01b03851660048201526024016104e8565b60003390506000856001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d399190613145565b9050856001600160a01b0316630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d91906133b9565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e16919061311d565b9250856001600160a01b031663b68d18096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a919061311d565b9350856001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611eba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee29190810190613441565b9450611eef86868461238c565b600654610100900460ff166000818152600360205260409020546001600160a01b039081169083168114611f515760405163179dce5160e11b81526001600160a01b03808a1660048301528085166024830152821660448201526064016104e8565b60ff80861690831614611f9357604051632dd6635560e21b81526001600160a01b038916600482015260ff8087166024830152831660448201526064016104e8565b505050509193909250565b60005b82518110156120d157856001600160a01b03166308d6122d86848481518110611fcc57611fcc6131c7565b6020026020010151868581518110611fe657611fe66131c7565b6020908102919091010151604051631517388760e21b81526001600160401b03909116600482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af415801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613513565b6040518463ffffffff1660e01b815260040161208c93929190613530565b600060405180830381600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b5050505080806120c9906133a0565b915050611fa1565b5060005b835181101561071a57856001600160a01b03166325c471a08583815181106120ff576120ff6131c7565b6020908102919091010151604051631517388760e21b81526001600160401b03909116600482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af4158015612163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121879190613513565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038816602482015260006044820152606401600060405180830381600087803b1580156121de57600080fd5b505af11580156121f2573d6000803e3d6000fd5b505050508080612201906133a0565b9150506120d5565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612278919061356d565b600060405180830381855afa9150503d80600081146122b3576040519150601f19603f3d011682016040523d82523d6000602084013e6122b8565b606091505b5091509150811561230a5760408151106122ea57808060200190518101906122e09190613589565b909450925061230a565b602081511061230a57808060200190518101906123079190613172565b93505b505094509492505050565b6040516368aebf7b60e01b81526000600482018190529073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401602060405180830381865af4158015612368573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190613513565b826001600160a01b031682608001516001600160a01b0316146123d45760405163396d48c960e11b81526001600160a01b0384166004820181905260248201526044016104e8565b60608201511561240f5760608201516040516376d381b160e01b81526001600160a01b038516600482015290151560248201526044016104e8565b61241f82604001516113a3603c90565b1561245e576040828101519051630c6c87c560e41b81526001600160a01b0385166004820152603c602482015260ff90911660448201526064016104e8565b60a08201516001600160a01b03808216908316146124aa576040516314cc941d60e01b81526001600160a01b0380861660048301528084166024830152821660448201526064016104e8565b836001600160a01b0316816001600160a01b0316036124e75760405163f80468a760e01b81526001600160a01b03851660048201526024016104e8565b60405163c3c5a54760e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c3c5a54790602401602060405180830381865afa15801561254d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125719190613172565b156125a25760405163976310fb60e01b81526001600160a01b038086166004830152821660248201526044016104e8565b50505050565b8280548282559060005260206000209081019282156125fd579160200282015b828111156125fd57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906125c8565b506126099291506126bf565b5090565b82805482825590600052602060002090810192821561265a579160200282015b8281111561265a578251805161264a9184916020909101906126d4565b509160200191906001019061262d565b50612609929150612787565b8280548282559060005260206000209081019282156126b3579160200282015b828111156126b357825180516126a39184916020909101906127a4565b5091602001919060010190612686565b506126099291506127fd565b5b8082111561260957600081556001016126c0565b828054828255906000526020600020906003016004900481019282156125fd5791602002820160005b8382111561274757835183826101000a8154816001600160401b0302191690836001600160401b0316021790555092602001926008016020816007010492830192600103026126fd565b801561277a5782816101000a8154906001600160401b030219169055600801602081600701049283019260010302612747565b50506126099291506126bf565b8082111561260957600061279b828261281a565b50600101612787565b8280548282559060005260206000209081019282156127f1579160200282015b828111156127f157825180516127e1918491602090910190612842565b50916020019190600101906127c4565b506126099291506128dc565b8082111561260957600061281182826128f9565b506001016127fd565b50805460008255600301600490049060005260206000209081019061283f91906126bf565b50565b828054828255906000526020600020906007016008900481019282156125fd5791602002820160005b838211156128ac57835183826101000a81548163ffffffff021916908360e01c0217905550926020019260040160208160030104928301926001030261286b565b801561277a5782816101000a81549063ffffffff02191690556004016020816003010492830192600103026128ac565b808211156126095760006128f08282612917565b506001016128dc565b508054600082559060005260206000209081019061283f91906128dc565b50805460008255600701600890049060005260206000209081019061283f91906126bf565b60ff8116811461283f57600080fd5b60006020828403121561295d57600080fd5b813561081c8161293c565b6001600160a01b038116811461283f57600080fd5b60006020828403121561298f57600080fd5b813561081c81612968565b6000806000606084860312156129af57600080fd5b83356129ba81612968565b92506020840135915060408401356129d181612968565b809150509250925092565b600081518084526020808501945080840160005b83811015612a155781516001600160a01b0316875295820195908201906001016129f0565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b86811015612a97578385038a52825180518087529087019087870190845b81811015612a825783516001600160401b031683529289019291890191600101612a5d565b50509a87019a95505091850191600101612a3f565b509298975050505050505050565b600081518084526020808501945080840160005b83811015612a155781516001600160e01b03191687529582019590820190600101612ab9565b600081518084526020808501808196506005915083821b81018387016000805b87811015612b68578484038b5282518051808652908801908886019080891b87018a01855b82811015612b5257601f19898303018452612b40828651612aa5565b948c0194938c01939150600101612b24565b509d8a019d965050509287019250600101612aff565b50919998505050505050505050565b600081518084526020808501945080840160005b83811015612a1557815160ff1687529582019590820190600101612b8b565b6020815260ff82511660208201526000602083015160e06040840152612bd46101008401826129dc565b90506040840151601f1980858403016060860152612bf28383612a20565b92506060860151915080858403016080860152612c0f8383612a20565b925060808601519150808584030160a0860152612c2c8383612adf565b925060a08601519150808584030160c086015250612c4a8282612b77565b91505060c0840151612c6560e085018264ffffffffff169052565b509392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612ca557612ca5612c6d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612cd357612cd3612c6d565b604052919050565b60006001600160401b03821115612cf457612cf4612c6d565b5060051b60200190565b6001600160401b038116811461283f57600080fd5b600082601f830112612d2457600080fd5b81356020612d39612d3483612cdb565b612cab565b828152600592831b8501820192828201919087851115612d5857600080fd5b8387015b85811015612df75780356001600160401b03811115612d7b5760008081fd5b8801603f81018a13612d8d5760008081fd5b858101356040612d9f612d3483612cdb565b82815291851b8301810191888101908d841115612dbc5760008081fd5b938201935b83851015612de65784359250612dd683612cfe565b8282529389019390890190612dc1565b885250505093850193508401612d5c565b5090979650505050505050565b600082601f830112612e1557600080fd5b612e22612d348335612cdb565b82358082526020808301929160051b85010185811115612e4157600080fd5b602085015b81811015612f73576001600160401b0381351115612e6357600080fd5b8035860187603f820112612e7657600080fd5b6020810135612e87612d3482612cdb565b81815260059190911b82016040019060208101908a831115612ea857600080fd5b604084015b83811015612f5d576001600160401b0381351115612eca57600080fd5b803585018c605f820112612edd57600080fd5b6040810135612eee612d3482612cdb565b81815260059190911b82016060019060208101908f831115612f0f57600080fd5b6060840193505b82841015612f485783356001600160e01b0319811614612f3557600080fd5b8335825260209384019390910190612f16565b86525050602093840193919091019050612ead565b5087525050602094850194919091019050612e46565b509095945050505050565b600080600080600060a08688031215612f9657600080fd5b85356001600160401b0380821115612fad57600080fd5b818801915088601f830112612fc157600080fd5b81356020612fd1612d3483612cdb565b82815260059290921b8401810191818101908c841115612ff057600080fd5b948201945b8386101561301757853561300881612968565b82529482019490820190612ff5565b9950508901359250508082111561302d57600080fd5b61303989838a01612d13565b9550604088013591508082111561304f57600080fd5b61305b89838a01612d13565b9450606088013591508082111561307157600080fd5b5061307e88828901612e04565b95989497509295608001359392505050565b6000806000606084860312156130a557600080fd5b83356130b08161293c565b925060208401356130c08161293c565b915060408401356129d18161293c565b6000602082840312156130e257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611a3557611a356130e9565b805161063e8161293c565b60006020828403121561312f57600080fd5b815161081c8161293c565b805161063e81612968565b60006020828403121561315757600080fd5b815161081c81612968565b8051801515811461063e57600080fd5b60006020828403121561318457600080fd5b61081c82613162565b60006020828403121561319f57600080fd5b815164ffffffffff8116811461081c57600080fd5b81810381811115611a3557611a356130e9565b634e487b7160e01b600052603260045260246000fd5b60005b838110156131f85781810151838201526020016131e0565b50506000910152565b600081518084526132198160208601602086016131dd565b601f01601f19169290920160200192915050565b606080825284516001600160601b03908116838301526020860151166080830152604085015160ff1660a083015284015180151560c08301526000905060808501516001600160a01b03811660e08401525060a08501516001600160a01b0381166101008401525060c085015160e06101208401526132b0610140840182613201565b9150506132c2602083018560ff169052565b60ff831660408301525b949350505050565b80516001600160601b038116811461063e57600080fd5b6000602082840312156132fd57600080fd5b61081c826132d4565b6000808585111561331657600080fd5b8386111561332357600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156133585780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000600182016133b2576133b26130e9565b5060010190565b6000602082840312156133cb57600080fd5b815162ffffff8116811461081c57600080fd5b600082601f8301126133ef57600080fd5b81516001600160401b0381111561340857613408612c6d565b61341b601f8201601f1916602001612cab565b81815284602083860101111561343057600080fd5b6132cc8260208301602087016131dd565b60006020828403121561345357600080fd5b81516001600160401b038082111561346a57600080fd5b9083019060e0828603121561347e57600080fd5b613486612c83565b61348f836132d4565b815261349d602084016132d4565b60208201526134ae60408401613112565b60408201526134bf60608401613162565b60608201526134d06080840161313a565b60808201526134e160a0840161313a565b60a082015260c0830151828111156134f857600080fd5b613504878286016133de565b60c08301525095945050505050565b60006020828403121561352557600080fd5b815161081c81612cfe565b6001600160a01b038416815260606020820181905260009061355490830185612aa5565b90506001600160401b0383166040830152949350505050565b6000825161357f8184602087016131dd565b9190910192915050565b6000806040838503121561359c57600080fd5b6135a583613162565b9150602083015163ffffffff811681146135be57600080fd5b80915050925092905056fea26469706673582212209b770613a550db127f56b3c4738edf10775501e35d6e7a5a9219d0cbfd6c270964736f6c6343000814003360806040523480156200001157600080fd5b50604051620045923803806200459283398101604081905262000034916200089e565b33620000408162000174565b50600180546001600160a01b03191633179055604051600090620000649062000873565b604051809103906000f08015801562000081573d6000803e3d6000fd5b5060405163189acdbd60e31b81523060048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015620000c757600080fd5b505af1158015620000dc573d6000803e3d6000fd5b50505050620000f181620001c860201b60201c565b60018054600160a01b600160e01b031916613d0960a61b179055620001156200024c565b6200011f620003a5565b620001366200012d62000456565b846000620004d7565b6200014d62000144620005f1565b836000620004d7565b6200016b6200015b620005f1565b6200016562000456565b6200062e565b505050620009a0565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b60005433906001600160a01b03168114620002055760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b6000036200023d576040516361798f2f60e11b81526001600160a01b0383166004820152602401620001fc565b620002488262000174565b5050565b604080516001808252818301909252600091602080830190803683370190505090506335a5af9260e01b816000815181106200028c576200028c620008d6565b6001600160e01b031990921660209283029190910190910152620002bb3082620002b562000456565b620007b1565b604080516003808252608082019092526000916020820160608036833701905050905063186664d860e01b81600081518110620002fc57620002fc620008d6565b6001600160e01b0319909216602092830291909101909101528051630af43fe160e01b9082906001908110620003365762000336620008d6565b6001600160e01b03199092166020928302919091019091015280516328a1120960e21b9082906002908110620003705762000370620008d6565b6001600160e01b03199092166020928302919091019091015260015462000248906001600160a01b031682620002b562000456565b60408051600280825260608201835260009260208301908036833701905050905063fdd9ec7d60e01b81600081518110620003e457620003e4620008d6565b6001600160e01b0319909216602092830291909101909101528051636a9326bd60e11b90829060019081106200041e576200041e620008d6565b6001600160e01b03199092166020928302919091019091015260015462000453906001600160a01b031682620002b5620005f1565b50565b6040516368aebf7b60e01b81526105dc600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024015b602060405180830381865af4158015620004ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d2919062000902565b905090565b6000546001600160a01b0316604051631517388760e21b81526001600160401b03851660048201526001600160a01b0391909116906325c471a09073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af41580156200054f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000575919062000902565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038516602482015263ffffffff841660448201526064015b600060405180830381600087803b158015620005d357600080fd5b505af1158015620005e8573d6000803e3d6000fd5b50505050505050565b6040516368aebf7b60e01b8152610640600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024016200048e565b6000546001600160a01b0316604051631517388760e21b81526001600160401b03841660048201526001600160a01b0391909116906330cae1879073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af4158015620006a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006cc919062000902565b604051631517388760e21b81526001600160401b038516600482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af415801562000725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200074b919062000902565b6040516001600160e01b031960e085901b1681526001600160401b03928316600482015291166024820152604401600060405180830381600087803b1580156200079457600080fd5b505af1158015620007a9573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316604051631517388760e21b81526001600160401b03831660048201526001600160a01b0391909116906308d6122d908590859073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af41580156200082d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000853919062000902565b6040518463ffffffff1660e01b8152600401620005b89392919062000929565b612cfc806200189683390190565b80516001600160a01b03811681146200089957600080fd5b919050565b60008060408385031215620008b257600080fd5b620008bd8362000881565b9150620008cd6020840162000881565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b6001600160401b03811681146200045357600080fd5b6000602082840312156200091557600080fd5b81516200092281620008ec565b9392505050565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b818110156200097e5784516001600160e01b0319168352938301939183019160010162000956565b50506001600160401b0395909516604094909401939093525091949350505050565b610ee680620009b06000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637a9e5e4b116100665780637a9e5e4b1461011357806384d34938146101265780638fb3603714610130578063b700961314610151578063bf7e214f1461016457600080fd5b806308d6122d1461009857806335a5af92146100ad57806361bc3b41146100c057806364fc3142146100f0575b600080fd5b6100ab6100a6366004610b54565b61017f565b005b6100ab6100bb366004610bb5565b61019c565b6100d36100ce366004610bd7565b6102ee565b6040516001600160401b0390911681526020015b60405180910390f35b6101036100fe366004610c34565b610324565b60405190151581526020016100e7565b6100ab610121366004610bb5565b610447565b6100d3620f424081565b6101386104c2565b6040516001600160e01b031990911681526020016100e7565b61010361015f366004610c6b565b6104e8565b6000546040516001600160a01b0390911681526020016100e7565b61018c335b600036610512565b610197838383610612565b505050565b6101a533610184565b60408051600580825260c082019092526000916020820160a0803683370190505090506309824a8060e01b816000815181106101e3576101e3610cae565b6001600160e01b0319909216602092830291909101909101528051635fa4428d60e01b908290600190811061021a5761021a610cae565b6001600160e01b0319909216602092830291909101909101528051630965fad760e11b908290600290811061025157610251610cae565b6001600160e01b031990921660209283029190910190910152805163378afb8760e11b908290600390811061028857610288610cae565b6001600160e01b031990921660209283029190910190910152805163f16ddea160e01b90829060049081106102bf576102bf610cae565b6001600160e01b0319909216602092830291909101909101526102ea82826102e5610706565b610612565b5050565b60006102f933610184565b600061030361077f565b9050610310848483610612565b61031c8186600061080f565b509392505050565b6000806103396000546001600160a01b031690565b604051631517388760e21b81526001600160401b03851660048201526001600160a01b03919091169063d1f856ee9073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af41580156103a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c89190610cc4565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b03871660248201526044016040805180830381865afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043e9190610cf1565b50949350505050565b60005433906001600160a01b031681146104835760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b6000036104b9576040516361798f2f60e11b81526001600160a01b038316600482015260240161047a565b6102ea826108f1565b60008054600160a01b900460ff166104da5750600090565b638fb3603760e01b5b905090565b6000806105086105006000546001600160a01b031690565b868686610945565b5095945050505050565b60008061054861052a6000546001600160a01b031690565b863061053a60046000898b610d26565b61054391610d50565b610945565b915091508161060b5763ffffffff8116156105e8576000805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee906105a390889088908890600401610d80565b600060405180830381600087803b1580156105bd57600080fd5b505af11580156105d1573d6000803e3d6000fd5b50506000805460ff60a01b191690555061060b9050565b60405162d1953b60e31b81526001600160a01b038616600482015260240161047a565b5050505050565b6000546001600160a01b0316604051631517388760e21b81526001600160401b03831660048201526001600160a01b0391909116906308d6122d908590859073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af415801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b19190610cc4565b6040518463ffffffff1660e01b81526004016106cf93929190610dc0565b600060405180830381600087803b1580156106e957600080fd5b505af11580156106fd573d6000803e3d6000fd5b50505050505050565b6040516368aebf7b60e01b8152610640600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024015b602060405180830381865af415801561075b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e39190610cc4565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__6368aebf7b6001601481819054906101000a90046001600160401b0316809291906107c090610e32565b91906101000a8154816001600160401b0302191690836001600160401b031602179055506040518263ffffffff1660e01b815260040161073e91906001600160401b0391909116815260200190565b6000546001600160a01b0316604051631517388760e21b81526001600160401b03851660048201526001600160a01b0391909116906325c471a09073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af4158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190610cc4565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038516602482015263ffffffff841660448201526064016106cf565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516109b49190610e66565b600060405180830381855afa9150503d80600081146109ef576040519150601f19603f3d011682016040523d82523d6000602084013e6109f4565b606091505b50915091508115610a46576040815110610a265780806020019051810190610a1c9190610cf1565b9094509250610a46565b6020815110610a465780806020019051810190610a439190610e95565b93505b505094509492505050565b80356001600160a01b0381168114610a6857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b80356001600160e01b031981168114610a6857600080fd5b600082601f830112610aac57600080fd5b813560206001600160401b0380831115610ac857610ac8610a6d565b8260051b604051601f19603f83011681018181108482111715610aed57610aed610a6d565b604052938452858101830193838101925087851115610b0b57600080fd5b83870191505b84821015610b3157610b2282610a83565b83529183019190830190610b11565b979650505050505050565b6001600160401b0381168114610b5157600080fd5b50565b600080600060608486031215610b6957600080fd5b610b7284610a51565b925060208401356001600160401b03811115610b8d57600080fd5b610b9986828701610a9b565b9250506040840135610baa81610b3c565b809150509250925092565b600060208284031215610bc757600080fd5b610bd082610a51565b9392505050565b600080600060608486031215610bec57600080fd5b610bf584610a51565b9250610c0360208501610a51565b915060408401356001600160401b03811115610c1e57600080fd5b610c2a86828701610a9b565b9150509250925092565b60008060408385031215610c4757600080fd5b610c5083610a51565b91506020830135610c6081610b3c565b809150509250929050565b600080600060608486031215610c8057600080fd5b610c8984610a51565b9250610c9760208501610a51565b9150610ca560408501610a83565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610cd657600080fd5b8151610bd081610b3c565b80518015158114610a6857600080fd5b60008060408385031215610d0457600080fd5b610d0d83610ce1565b9150602083015163ffffffff81168114610c6057600080fd5b60008085851115610d3657600080fd5b83861115610d4357600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015610d785780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b81811015610e135784516001600160e01b03191683529383019391830191600101610ded565b50508093505050506001600160401b0383166040830152949350505050565b60006001600160401b03808316818103610e5c57634e487b7160e01b600052601160045260246000fd5b6001019392505050565b6000825160005b81811015610e875760208186018101518583015201610e6d565b506000920191825250919050565b600060208284031215610ea757600080fd5b610bd082610ce156fea264697066735822122093992e0a6b83b183870ed307c9a3c230cc877d309c2b08c9869631108c072c5a64736f6c63430008140033608060405234801561001057600080fd5b50612cdc806100206000396000f3fe6080604052600436106101ee5760003560e01c80636d5115bd1161010d578063b7009613116100a0578063d1f856ee1161006f578063d1f856ee1461060e578063d22b59891461062e578063d6bb62c61461064e578063f801a6981461066e578063fe0776f5146106a857600080fd5b8063b70096131461057c578063b7d2b162146105b8578063c4d66de8146105d8578063cc1b6c81146105f857600080fd5b8063a166aa89116100dc578063a166aa89146104d1578063a64d95ce14610501578063abd9bd2a14610521578063ac9650d81461054f57600080fd5b80636d5115bd1461045c57806375b238fc1461047c578063853551b81461049157806394c7d7ee146104b157600080fd5b806330cae187116101855780634665096d116101545780634665096d146103e65780634c1da1e2146103fc578063529629521461041c578063530dd4561461043c57600080fd5b806330cae187146103545780633adc277a146103745780633ca7c02a146103ab5780634136a33c146103c657600080fd5b806318ff183c116101c157806318ff183c146102a75780631cff79cd146102c757806325c471a0146102da5780633078f114146102fa57600080fd5b806308d6122d146101f35780630b0a93ba1461021557806312be872714610252578063167bd39514610287575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461255f565b6106c8565b005b34801561022157600080fd5b506102356102303660046125c5565b610723565b6040516001600160401b0390911681526020015b60405180910390f35b34801561025e57600080fd5b5061027261026d3660046125c5565b61075c565b60405163ffffffff9091168152602001610249565b34801561029357600080fd5b506102136102a23660046125e0565b6107a8565b3480156102b357600080fd5b506102136102c236600461261e565b6107be565b6102726102d536600461268d565b610825565b3480156102e657600080fd5b506102136102f53660046126f5565b61096b565b34801561030657600080fd5b5061031a61031536600461273a565b61098d565b604051610249949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b34801561036057600080fd5b5061021361036f366004612756565b610a04565b34801561038057600080fd5b5061039461038f366004612789565b610a16565b60405165ffffffffffff9091168152602001610249565b3480156103b757600080fd5b506102356001600160401b0381565b3480156103d257600080fd5b506102726103e1366004612789565b610a5b565b3480156103f257600080fd5b5062093a80610272565b34801561040857600080fd5b506102726104173660046127a2565b610a88565b34801561042857600080fd5b50610213610437366004612756565b610ac4565b34801561044857600080fd5b506102356104573660046125c5565b610ad6565b34801561046857600080fd5b506102356104773660046127d5565b610b08565b34801561048857600080fd5b50610235600081565b34801561049d57600080fd5b506102136104ac366004612803565b610b51565b3480156104bd57600080fd5b506102136104cc36600461268d565b610be8565b3480156104dd57600080fd5b506104f16104ec3660046127a2565b610c94565b6040519015158152602001610249565b34801561050d57600080fd5b5061021361051c366004612821565b610ccd565b34801561052d57600080fd5b5061054161053c36600461284b565b610cdf565b604051908152602001610249565b34801561055b57600080fd5b5061056f61056a3660046128af565b610d18565b6040516102499190612914565b34801561058857600080fd5b5061059c61059736600461298e565b610e0c565b60408051921515835263ffffffff909116602083015201610249565b3480156105c457600080fd5b506102136105d336600461273a565b610e93565b3480156105e457600080fd5b506102136105f33660046127a2565b610eaa565b34801561060457600080fd5b5062069780610272565b34801561061a57600080fd5b5061059c61062936600461273a565b610fb7565b34801561063a57600080fd5b506102136106493660046129d9565b611034565b34801561065a57600080fd5b5061027261066936600461284b565b611046565b34801561067a57600080fd5b5061068e6106893660046129f7565b6111b1565b6040805192835263ffffffff909116602083015201610249565b3480156106b457600080fd5b506102136106c336600461273a565b61135c565b6106d0611385565b60005b8281101561071c5761070c858585848181106106f1576106f1612a69565b90506020020160208101906107069190612a7f565b84611400565b61071581612ab2565b90506106d3565b5050505050565b60008061072e61148e565b6001600160401b0393841660009081526001918201602052604090200154600160401b900490921692915050565b60008061076761148e565b6001600160401b03841660009081526001828101602052604090912001549091506107a190600160801b90046001600160701b03166114b2565b9392505050565b6107b0611385565b6107ba82826114d1565b5050565b6107c6611385565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b90602401600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505050565b60008061083061148e565b90503360008061084283898989611577565b9150915081158015610858575063ffffffff8116155b156108ab57828861086989896115ca565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b60006108b9848a8a8a610cdf565b9050600063ffffffff83161515806108e057506108d582610a16565b65ffffffffffff1615155b156108f1576108ee826115e2565b90505b60038601546109098b6109048c8c6115ca565b6116f6565b87600301819055506109538b8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250349250611738915050565b50600390960195909555509293505050509392505050565b610973611385565b61098783836109818661075c565b846117d5565b50505050565b600080600080600061099d61148e565b6001600160401b038816600090815260018201602090815260408083206001600160a01b038b1684529091529020805465ffffffffffff81169750919250906109f590600160301b90046001600160701b0316611a34565b979a9199509750945050505050565b610a0c611385565b6107ba8282611a57565b600080610a2161148e565b600084815260028201602052604090205490915065ffffffffffff16610a4681611b09565b610a505780610a53565b60005b949350505050565b600080610a6661148e565b600093845260020160205250506040902054600160301b900463ffffffff1690565b600080610a9361148e565b6001600160a01b0384166000908152602082905260409020600101549091506107a1906001600160701b03166114b2565b610acc611385565b6107ba8282611b38565b600080610ae161148e565b6001600160401b039384166000908152600191820160205260409020015490921692915050565b600080610b1361148e565b6001600160a01b0385166000908152602091825260408082206001600160e01b03198716835290925220546001600160401b03169150505b92915050565b610b59611385565b6001600160401b0383161580610b7757506001600160401b03838116145b15610ba05760405163061c6a4360e21b81526001600160401b03841660048201526024016108a2565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610bdb929190612af4565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190612b08565b6001600160e01b03191614610c8057604051630641fee960e31b81526001600160a01b03821660048201526024016108a2565b61071c610c8f85838686610cdf565b6115e2565b600080610c9f61148e565b6001600160a01b0390931660009081526020939093525050604090206001015460ff600160701b9091041690565b610cd5611385565b6107ba8282611bf8565b600084848484604051602001610cf89493929190612b25565b604051602081830303815290604052805190602001209050949350505050565b6060816001600160401b03811115610d3257610d32612b52565b604051908082528060200260200182016040528015610d6557816020015b6060815260200190600190039081610d505790505b50905060005b82811015610e0557610dd530858584818110610d8957610d89612a69565b9050602002810190610d9b9190612b68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d2592505050565b828281518110610de757610de7612a69565b60200260200101819052508080610dfd90612ab2565b915050610d6b565b5092915050565b600080610e1884610c94565b15610e2857506000905080610e8b565b306001600160a01b03861603610e4d57610e428484611d9b565b600091509150610e8b565b6000610e598585610b08565b9050600080610e688389610fb7565b9150915081610e7957600080610e83565b63ffffffff811615815b945094505050505b935093915050565b610e9b611385565b610ea58282611dc0565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610eef5750825b90506000826001600160401b03166001148015610f0b5750303b155b905081158015610f19575080155b15610f375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f6157845460ff60401b1916600160401b1785555b610f6a86611ebf565b831561081d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b60008067fffffffffffffffe196001600160401b03851601610fdf575060019050600061102d565b600080610fec868661098d565b5050915091508165ffffffffffff16600014158015611022575061100e611ed3565b65ffffffffffff168265ffffffffffff1611155b9350915061102d9050565b9250929050565b61103c611385565b6107ba8282611ee3565b60008061105161148e565b905033600061106086866115ca565b9050600061107089898989610cdf565b600081815260028601602052604081205491925065ffffffffffff90911690036110b05760405163060a299b60e41b8152600481018290526024016108a2565b826001600160a01b0316896001600160a01b03161461114c5760006110d6600085610fb7565b50905060006110f16110eb6102308c87610b08565b86610fb7565b50905081158015611100575080155b1561114957604051630ff89d4760e21b81526001600160a01b038087166004830152808d1660248301528b1660448201526001600160e01b0319851660648201526084016108a2565b50505b6000818152600285016020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a39998505050505050505050565b60008060006111be61148e565b90503360006111cf828a8a8a611577565b91505060008163ffffffff166111e3611ed3565b6111ed9190612bae565b905063ffffffff82161580611224575060008765ffffffffffff1611801561122457508065ffffffffffff168765ffffffffffff16105b1561123557828a6108698b8b6115ca565b61124f8765ffffffffffff168265ffffffffffff16611faf565b965061125d838b8b8b610cdf565b955061126886611fc5565b83600201600087815260200190815260200160002060000160069054906101000a900463ffffffff1660010194508684600201600088815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff1602179055508484600201600088815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508463ffffffff16867f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b489868e8e8e604051611347959493929190612bcd565b60405180910390a35050505094509492505050565b6001600160a01b0381163314610e9b57604051635f159e6360e01b815260040160405180910390fd5b33600080611394838236612021565b9150915081610ea5578063ffffffff166000036113f05760006113b781366120d9565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b038216602482015290925060440190506108a2565b610987610c8f8430600036610cdf565b600061140a61148e565b6001600160a01b0385166000818152602083815260408083206001600160e01b0319891680855290835292819020805467ffffffffffffffff19166001600160401b03891690811790915590519283529394507f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a350505050565b7f40c6c8c28789853c7efd823ab20824bbd71718a8a5915e855f6f288c9a26ad0090565b6000806114c7836001600160701b0316611a34565b5090949350505050565b60006114db61148e565b9050306001600160a01b0384160361151157604051630b40d17960e31b81526001600160a01b03841660048201526024016108a2565b6001600160a01b038316600081815260208390526040908190206001018054851515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13890610bdb90851515815260200190565b600080306001600160a01b0386160361159e57611595868585612021565b915091506115c1565b600483106115ba576115b5868661059787876115ca565b611595565b5060009050805b94509492505050565b60006115d96004828486612c13565b6107a191612c3d565b6000806115ed61148e565b600084815260028201602052604081205491925065ffffffffffff821691600160301b900463ffffffff169082900361163c5760405163060a299b60e41b8152600481018690526024016108a2565b611644611ed3565b65ffffffffffff168265ffffffffffff16111561167757604051630c65b5bd60e11b8152600481018690526024016108a2565b61168082611b09565b156116a157604051631e2975b960e21b8152600481018690526024016108a2565b6000858152600284016020526040808220805465ffffffffffff191690555163ffffffff83169187917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a3949350505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b60608147101561175d5760405163cd78605960e01b81523060048201526024016108a2565b600080856001600160a01b031684866040516117799190612c6d565b60006040518083038185875af1925050503d80600081146117b6576040519150601f19603f3d011682016040523d82523d6000602084013e6117bb565b606091505b50915091506117cb8683836122a5565b9695505050505050565b6000806117e061148e565b905067fffffffffffffffe196001600160401b0387160161181f5760405163061c6a4360e21b81526001600160401b03871660048201526024016108a2565b6001600160401b038616600090815260018201602090815260408083206001600160a01b038916845290915281205465ffffffffffff1615908115611915578563ffffffff1661186d611ed3565b6118779190612bae565b905060405180604001604052808265ffffffffffff1681526020016118a58763ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b038a16600090815260018601602090815260408083206001600160a01b038d1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff909116179190911790556119c5565b6001600160401b038816600090815260018401602090815260408083206001600160a01b038b16845290915281205461196191600160301b9091046001600160701b0316908790612301565b6001600160401b038a16600090815260018601602090815260408083206001600160a01b038d168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8716815265ffffffffffff831660208201528315158183015290516001600160a01b038916916001600160401b038b16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a3509695505050505050565b6000806000611a4a84611a45611ed3565b6123ab565b9250925092509193909250565b6000611a6161148e565b90506001600160401b0383161580611a8157506001600160401b03838116145b15611aaa5760405163061c6a4360e21b81526001600160401b03841660048201526024016108a2565b6001600160401b03838116600081815260018481016020526040808320909101805467ffffffffffffffff19169487169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a3505050565b6000611b13611ed3565b65ffffffffffff16611b2862093a8084612bae565b65ffffffffffff16111592915050565b6000611b4261148e565b90506001600160401b0383161580611b6257506001600160401b03838116145b15611b8b5760405163061c6a4360e21b81526001600160401b03841660048201526024016108a2565b6001600160401b0383811660008181526001848101602052604080832090910180546fffffffffffffffff00000000000000001916600160401b958816958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a3505050565b6000611c0261148e565b905067fffffffffffffffe196001600160401b03841601611c415760405163061c6a4360e21b81526001600160401b03841660048201526024016108a2565b6001600160401b03831660009081526001828101602052604082200154611c7c90600160801b90046001600160701b03168462069780612301565b6001600160401b038616600081815260018087016020526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890611d17908690859063ffffffff92909216825265ffffffffffff16602082015260400190565b60405180910390a250505050565b6060600080846001600160a01b031684604051611d429190612c6d565b600060405180830381855af49150503d8060008114611d7d576040519150601f19603f3d011682016040523d82523d6000602084013e611d82565b606091505b5091509150611d928583836122a5565b95945050505050565b600080611da661148e565b9050611db284846116f6565b600390910154149392505050565b600080611dcb61148e565b905067fffffffffffffffe196001600160401b03851601611e0a5760405163061c6a4360e21b81526001600160401b03851660048201526024016108a2565b6001600160401b038416600090815260018201602090815260408083206001600160a01b038716845290915281205465ffffffffffff169003611e51576000915050610b4b565b6001600160401b038416600081815260018301602090815260408083206001600160a01b038816808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a35060019392505050565b611ec76123ff565b611ed08161244a565b50565b6000611ede4261248a565b905090565b6000611eed61148e565b90506000611f2583620697806001600160a01b0387166000908152602086905260409020600101546001600160701b03169190612301565b6001600160a01b0386166000818152602086815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8816815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101611d17565b6000818311611fbe57816107a1565b5090919050565b6000611fcf61148e565b600083815260028201602052604090205490915065ffffffffffff1680158015906120005750611ffe81611b09565b155b15610ea55760405163813e945960e01b8152600481018490526024016108a2565b600080600483101561203857506000905080610e8b565b306001600160a01b0386160361205b57610e423061205686866115ca565b611d9b565b600080600061206a87876120d9565b925092509250826120845760008094509450505050610e8b565b600080612091848b610fb7565b91509150816120ab57600080965096505050505050610e8b565b6120c18363ffffffff168263ffffffff16611faf565b63ffffffff8116159b909a5098505050505050505050565b6000808060048410156120f45750600091508190508061229e565b600061210086866115ca565b90506001600160e01b031981166310a6aa3760e31b148061213157506001600160e01b031981166330cae18760e01b145b8061214c57506001600160e01b0319811663294b14a960e11b145b8061216757506001600160e01b03198116635326cae760e11b145b8061218257506001600160e01b0319811663d22b598960e01b145b156121985760016000809350935093505061229e565b6001600160e01b0319811663063fc60f60e21b14806121c757506001600160e01b0319811663167bd39560e01b145b806121e257506001600160e01b031981166308d6122d60e01b145b156122245760006121f760246004888a612c13565b81019061220491906127a2565b9050600061221182610a88565b6001965060009550935061229e92505050565b6001600160e01b0319811663012e238d60e51b148061225357506001600160e01b03198116635be958b160e11b145b1561229157600061226860246004888a612c13565b81019061227591906125c5565b9050600161228282610ad6565b6000945094509450505061229e565b6000806000935093509350505b9250925092565b6060826122ba576122b5826124c1565b6107a1565b81511580156122d157506001600160a01b0384163b155b156122fa57604051639996b31560e01b81526001600160a01b03851660048201526024016108a2565b50806107a1565b6000806000612318866001600160701b03166114b2565b905060006123558563ffffffff168763ffffffff168463ffffffff161161234057600061234a565b61234a8885612c89565b63ffffffff16611faf565b90508063ffffffff16612366611ed3565b6123709190612bae565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b6000808069ffffffffffffffffffff602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156123ea578282826123ef565b816000805b9550955095505050509250925092565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661244857604051631afcd79f60e31b815260040160405180910390fd5b565b6124526123ff565b6001600160a01b03811661247c57604051630409d6d160e11b8152600060048201526024016108a2565b6107ba6000826000806117d5565b600065ffffffffffff8211156124bd576040516306dfcc6560e41b815260306004820152602481018390526044016108a2565b5090565b8051156124d15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114611ed057600080fd5b60008083601f84011261251157600080fd5b5081356001600160401b0381111561252857600080fd5b6020830191508360208260051b850101111561102d57600080fd5b80356001600160401b038116811461255a57600080fd5b919050565b6000806000806060858703121561257557600080fd5b8435612580816124ea565b935060208501356001600160401b0381111561259b57600080fd5b6125a7878288016124ff565b90945092506125ba905060408601612543565b905092959194509250565b6000602082840312156125d757600080fd5b6107a182612543565b600080604083850312156125f357600080fd5b82356125fe816124ea565b91506020830135801515811461261357600080fd5b809150509250929050565b6000806040838503121561263157600080fd5b823561263c816124ea565b91506020830135612613816124ea565b60008083601f84011261265e57600080fd5b5081356001600160401b0381111561267557600080fd5b60208301915083602082850101111561102d57600080fd5b6000806000604084860312156126a257600080fd5b83356126ad816124ea565b925060208401356001600160401b038111156126c857600080fd5b6126d48682870161264c565b9497909650939450505050565b803563ffffffff8116811461255a57600080fd5b60008060006060848603121561270a57600080fd5b61271384612543565b92506020840135612723816124ea565b9150612731604085016126e1565b90509250925092565b6000806040838503121561274d57600080fd5b61263c83612543565b6000806040838503121561276957600080fd5b61277283612543565b915061278060208401612543565b90509250929050565b60006020828403121561279b57600080fd5b5035919050565b6000602082840312156127b457600080fd5b81356107a1816124ea565b6001600160e01b031981168114611ed057600080fd5b600080604083850312156127e857600080fd5b82356127f3816124ea565b91506020830135612613816127bf565b60008060006040848603121561281857600080fd5b6126ad84612543565b6000806040838503121561283457600080fd5b61283d83612543565b9150612780602084016126e1565b6000806000806060858703121561286157600080fd5b843561286c816124ea565b9350602085013561287c816124ea565b925060408501356001600160401b0381111561289757600080fd5b6128a38782880161264c565b95989497509550505050565b600080602083850312156128c257600080fd5b82356001600160401b038111156128d857600080fd5b6128e4858286016124ff565b90969095509350505050565b60005b8381101561290b5781810151838201526020016128f3565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561298157878503603f1901845281518051808752612962818989018a85016128f0565b601f01601f19169590950186019450928501929085019060010161293b565b5092979650505050505050565b6000806000606084860312156129a357600080fd5b83356129ae816124ea565b925060208401356129be816124ea565b915060408401356129ce816127bf565b809150509250925092565b600080604083850312156129ec57600080fd5b823561283d816124ea565b60008060008060608587031215612a0d57600080fd5b8435612a18816124ea565b935060208501356001600160401b03811115612a3357600080fd5b612a3f8782880161264c565b909450925050604085013565ffffffffffff81168114612a5e57600080fd5b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a9157600080fd5b81356107a1816127bf565b634e487b7160e01b600052601160045260246000fd5b600060018201612ac457612ac4612a9c565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610a53602083018486612acb565b600060208284031215612b1a57600080fd5b81516107a1816127bf565b6001600160a01b038581168252841660208201526060604082018190526000906117cb9083018486612acb565b634e487b7160e01b600052604160045260246000fd5b6000808335601e19843603018112612b7f57600080fd5b8301803591506001600160401b03821115612b9957600080fd5b60200191503681900382131561102d57600080fd5b65ffffffffffff818116838216019080821115610e0557610e05612a9c565b65ffffffffffff861681526001600160a01b03858116602083015284166040820152608060608201819052600090612c089083018486612acb565b979650505050505050565b60008085851115612c2357600080fd5b83861115612c3057600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612c655780818660040360031b1b83161692505b505092915050565b60008251612c7f8184602087016128f0565b9190910192915050565b63ffffffff828116828216039080821115610e0557610e05612a9c56fea26469706673582212200ae6538f089bb3e9b144e45d48a18927c3aebce616ac1218eef43b59c1b3631464736f6c63430008140033",
986
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806393a7e711116100f9578063bf7e214f11610097578063e9e96c7011610071578063e9e96c701461044b578063f21de1e8146102a2578063f40d7c301461045e578063fdd9ec7d1461046e57600080fd5b8063bf7e214f146103e0578063d2213b5b146103f1578063d5264d7a1461041157600080fd5b80639ef6ddc9116100d35780639ef6ddc914610376578063a2844824146103b2578063a52ec529146103ba578063bf1db3f9146103cd57600080fd5b806393a7e711146103355780639941314e1461034857806399a228e51461036e57600080fd5b806319d1478b1161016657806371ed16e41161014057806371ed16e4146102c857806379cbc5fa146102da5780637a9e5e4b146103015780638fb360371461031457600080fd5b806319d1478b146102375780632892cd3a1461027b5780635ab1bd53146102a257600080fd5b80630af43fe1146101ae5780630d358181146101cd5780630e41142e146101e05780630e6d1de9146102065780631865c57d14610211578063186664d814610222575b600080fd5b6101b6610499565b60405160ff90911681526020015b60405180910390f35b6101b66101db36600461294b565b610626565b7f00000000000000000000000000000000000000000000000000000000000000006101b6565b60065460ff166101b6565b60065462010000900460ff166101b6565b61023561023036600461297d565b610643565b005b61026361024536600461294b565b60ff166000908152600360205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020016101c4565b6102637f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610263565b6007545b6040519081526020016101c4565b6102637f000000000000000000000000000000000000000000000000000000000000000081565b61023561030f36600461297d565b610722565b61031c61079c565b6040516001600160e01b031990911681526020016101c4565b61026361034336600461299a565b6107c2565b7f0000000000000000000000000000000000000000000000000000000000000000610263565b6102cc600381565b6103a261038436600461297d565b6001600160a01b031660009081526005602052604090205460ff1690565b60405190151581526020016101c4565b610235610823565b6103a26103c836600461294b565b610b64565b6103a26103db36600461294b565b610bf9565b6000546001600160a01b0316610263565b6104046103ff36600461294b565b610c06565b6040516101c49190612baa565b61042461041f366004612f7e565b611008565b604080516001600160a01b03909416845260ff9092166020840152908201526060016101c4565b6103a2610459366004613090565b61139a565b600654610100900460ff166101b6565b61048161047c36600461297d565b611498565b6040516001600160601b0390911681526020016101c4565b60006104a8335b60003661192b565b6104c1600160065462010000900460ff16610459600290565b6104f1576006546040516319ddc69560e21b81526201000090910460ff1660048201526024015b60405180910390fd5b600654604051632b10f60d60e21b815261010090910460ff16600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90829063ac43d83490602401602060405180830381865af4158015610553573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057791906130d0565b6105829060016130ff565b6040518263ffffffff1660e01b81526004016105a091815260200190565b602060405180830381865af41580156105bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e1919061311d565b6006805460ff929092166101000261ff00199092169190911790556000600755610609600290565b600660026101000a81548160ff021916908360ff16021790555090565b6000610633826001611a2b565b1561063e5760015b90505b919050565b61064c336104a0565b60405163030ccc9b60e31b81526001600160a01b03808316600483015282917f00000000000000000000000000000000000000000000000000000000000000009091169063186664d890602401600060405180830381600087803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b50505050806001600160a01b031663138461e06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561070657600080fd5b505af115801561071a573d6000803e3d6000fd5b505050505050565b60005433906001600160a01b031681146107595760405162d1953b60e31b81526001600160a01b03821660048201526024016104e8565b816001600160a01b03163b60000361078f576040516361798f2f60e11b81526001600160a01b03831660048201526024016104e8565b61079882611a3b565b5050565b60008054600160a01b900460ff166107b45750600090565b638fb3603760e01b5b905090565b604051603881018290526f5af43d82803e903d91602b57fd5bf3ff602482015260148101849052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018390526037600c820120607882015260556043909101205b9392505050565b61082c336104a0565b610845600160065462010000900460ff16610459600490565b6108705760065460405163efcc379960e01b81526201000090910460ff1660048201526024016104e8565b600654610100900460ff1660007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d39e60436108b4602890565b6040516001600160e01b031960e084901b16815260ff91821660048201529085166024820152604401602060405180830381865afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e9190613145565b90506001600160a01b03811661094c57604051638047661960e01b815260ff831660048201526024016104e8565b6007541561097d5760075460405163c90aac6160e01b815260ff8416600482015260248101919091526044016104e8565b60ff8216600090815260046020819052604091829020600601549151638d38cd4b60e01b815264ffffffffff9092169082015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af41580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190613172565b15610a3357604051630e5e66b360e21b815260ff831660048201526024016104e8565b6006805460ff191660ff8416179055610a4a600490565b6006805460ff92909216620100000262ff0000199092169190911790556001600160a01b038116600090815260056020908152604091829020805460ff1916600117905581516356db0c1960e11b8152915173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb618329260048083019391928290030181865af4158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd919061318d565b60ff8316600081815260046020908152604091829020600601805464ffffffffff191664ffffffffff9590951694909417909355519081527fb7defc6b4b34e4db6f0265bb8cc2606e513beda1e68095b668932471417561d4910160405180910390a15050565b60ff81166000908152600460208190526040808320600601549051638d38cd4b60e01b815264ffffffffff9091169181019190915273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af4158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190613172565b600061063b826001611a2b565b610c506040518060e00160405280600060ff1681526020016060815260200160608152602001606081526020016060815260200160608152602001600064ffffffffff1681525090565b60ff808316600090815260046020908152604091829020825160e08101845281549094168452600181018054845181850281018501909552808552919385840193909290830182828015610ccd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610caf575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610d9957600084815260209081902083018054604080518285028101850190915281815292830182828015610d8557602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610d425790505b505050505081526020019060010190610cfb565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610e6457600084815260209081902083018054604080518285028101850190915281815292830182828015610e5057602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610e0d5790505b505050505081526020019060010190610dc6565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610f7157838290600052602060002001805480602002602001604051908101604052809291908181526020016000905b82821015610f5e57600084815260209081902083018054604080518285028101850190915281815292830182828015610f4a57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411610f0c5790505b505050505081526020019060010190610ec5565b5050505081526020019060010190610e91565b50505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610fe657602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610fb75790505b50505091835250506006919091015464ffffffffff1660209091015292915050565b60008080611015336104a0565b61102f60015b60065462010000900460ff16610459600390565b61105a576006546040516313e3076760e31b81526201000090910460ff1660048201526024016104e8565b875160000361107c576040516357e3390360e01b815260040160405180910390fd5b600754156110a257604051638a25989560e01b815260ff831660048201526024016104e8565b6110ae88888888611a8f565b600654610100900460ff166000818152600460209081526040909120805460ff1916831781558a519294506110eb926001909101918b01906125a8565b5060ff821660009081526004602090815260409091208851611115926002909201918a019061260d565b5060ff82166000908152600460209081526040909120875161113f9260039092019189019061260d565b5060ff82166000908152600460208181526040909220875161116993919092019190880190612666565b50875160075560036006805462ff000019166201000060ff938416021790819055610100900416604051632b10f60d60e21b815260ff8216600482015290925073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__9063ac43d83490602401602060405180830381865af41580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120991906130d0565b60408051602081019290925281018590526060016040516020818303038152906040528051906020012090506112c07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190613145565b82611b90565b60ff83166000908152600360205260409081902080546001600160a01b0319166001600160a01b038416908117909155905163189acdbd60e31b8152306004820152919450849163c4d66de890602401600060405180830381600087803b15801561132a57600080fd5b505af115801561133e573d6000803e3d6000fd5b50506040805160ff87168152602081018690526001600160a01b0385168183015290517f6529cb4b9a24b8de97cbd0802b1c3d02a8c8aed37388204e2f5bc3013793977e9350908190036060019150a150955095509592505050565b60006113af8460015b60ff9081169116141590565b156113bc5750600061081c565b6113c7836001611a2b565b80156113d957506113d9826002611a2b565b156113e65750600161081c565b6113f1836002611a2b565b80156114035750611403826003611a2b565b156114105750600161081c565b61141b836003611a2b565b801561142d575061142d826002611a2b565b1561143a5750600161081c565b611445836003611a2b565b80156114575750611457826003611a2b565b156114645750600161081c565b61146f836003611a2b565b80156114815750611481826004611a2b565b1561148e5750600161081c565b5060009392505050565b60006114a3336104a0565b6114ad600161101b565b6114d8576006546040516316997edd60e11b81526201000090910460ff1660048201526024016104e8565b60008060006114e685611bfe565b92509250925060075460000361150f57604051630a7d531760e31b815260040160405180910390fd5b6000600160075461152091906131b4565b60ff83166000908152600460205260408120600101805492935090918390811061154c5761154c6131c7565b600091825260208083209091015460ff8616835260038252604080842054600490935290922060020180546001600160a01b0393841694506117d89392909216918a9190869081106115a0576115a06131c7565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561162657602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116115e35790505b50505060ff8916600090815260046020526040902060030180549092508891508110611654576116546131c7565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156116da57602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116116975790505b5050505050600460008960ff1660ff168152602001908152602001600020600401878154811061170c5761170c6131c7565b90600052602060002001805480602002602001604051908101604052809291908181526020016000905b828210156117cf576000848152602090819020830180546040805182850281018501909152818152928301828280156117bb57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841161177d5790505b505050505081526020019060010190611736565b50505050611f9e565b60078290556006805462ff000019166203000017905560ff83811660009081526004602081815260408084206005018054600181018255908552938290209184049091018054601f9094166101000a8086021990941694891693909302939093179091559051635382852b60e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169163a7050a569161188991899188918a910161322d565b6020604051808303816000875af11580156118a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cc91906132eb565b9550866001600160a01b031663138461e06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050505050505050919050565b6000806119616119436000546001600160a01b031690565b863061195360046000898b613306565b61195c91613330565b612209565b9150915081611a245763ffffffff811615611a01576000805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee906119bc90889088908890600401613360565b600060405180830381600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b50506000805460ff60a01b1916905550611a249050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016104e8565b5050505050565b60ff828116908216145b92915050565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b60005b8451811015611a245760005b848281518110611ab057611ab06131c7565b602002602001015151811015611b7d576000858381518110611ad457611ad46131c7565b60200260200101518281518110611aed57611aed6131c7565b60200260200101519050611b1481611b03612315565b6001600160401b0390811691161490565b15611b6a57868381518110611b2b57611b2b6131c7565b60209081029190910101516040516313f9006960e01b81526001600160a01b0390911660048201526001600160401b03821660248201526044016104e8565b5080611b75816133a0565b915050611a9e565b5080611b88816133a0565b915050611a92565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116611a35576040516330be1a3d60e21b815260040160405180910390fd5b6040805160e08101825260008082526020820181905281830181905260608083018290526080830182905260a0830182905260c083015291516301ffc9a760e01b815263b68d180960e01b600482015290919081906001600160a01b038516906301ffc9a790602401602060405180830381865afa158015611c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca89190613172565b611cd057604051631fdf992160e01b81526001600160a01b03851660048201526024016104e8565b60003390506000856001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d399190613145565b9050856001600160a01b0316630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d91906133b9565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015611df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e16919061311d565b9250856001600160a01b031663b68d18096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a919061311d565b9350856001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611eba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee29190810190613441565b9450611eef86868461238c565b600654610100900460ff166000818152600360205260409020546001600160a01b039081169083168114611f515760405163179dce5160e11b81526001600160a01b03808a1660048301528085166024830152821660448201526064016104e8565b60ff80861690831614611f9357604051632dd6635560e21b81526001600160a01b038916600482015260ff8087166024830152831660448201526064016104e8565b505050509193909250565b60005b82518110156120d157856001600160a01b03166308d6122d86848481518110611fcc57611fcc6131c7565b6020026020010151868581518110611fe657611fe66131c7565b6020908102919091010151604051631517388760e21b81526001600160401b03909116600482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af415801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613513565b6040518463ffffffff1660e01b815260040161208c93929190613530565b600060405180830381600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b5050505080806120c9906133a0565b915050611fa1565b5060005b835181101561071a57856001600160a01b03166325c471a08583815181106120ff576120ff6131c7565b6020908102919091010151604051631517388760e21b81526001600160401b03909116600482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063545ce21c90602401602060405180830381865af4158015612163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121879190613513565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038816602482015260006044820152606401600060405180830381600087803b1580156121de57600080fd5b505af11580156121f2573d6000803e3d6000fd5b505050508080612201906133a0565b9150506120d5565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612278919061356d565b600060405180830381855afa9150503d80600081146122b3576040519150601f19603f3d011682016040523d82523d6000602084013e6122b8565b606091505b5091509150811561230a5760408151106122ea57808060200190518101906122e09190613589565b909450925061230a565b602081511061230a57808060200190518101906123079190613172565b93505b505094509492505050565b6040516368aebf7b60e01b81526000600482018190529073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401602060405180830381865af4158015612368573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190613513565b826001600160a01b031682608001516001600160a01b0316146123d45760405163396d48c960e11b81526001600160a01b0384166004820181905260248201526044016104e8565b60608201511561240f5760608201516040516376d381b160e01b81526001600160a01b038516600482015290151560248201526044016104e8565b61241f82604001516113a3603c90565b1561245e576040828101519051630c6c87c560e41b81526001600160a01b0385166004820152603c602482015260ff90911660448201526064016104e8565b60a08201516001600160a01b03808216908316146124aa576040516314cc941d60e01b81526001600160a01b0380861660048301528084166024830152821660448201526064016104e8565b836001600160a01b0316816001600160a01b0316036124e75760405163f80468a760e01b81526001600160a01b03851660048201526024016104e8565b60405163c3c5a54760e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c3c5a54790602401602060405180830381865afa15801561254d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125719190613172565b156125a25760405163976310fb60e01b81526001600160a01b038086166004830152821660248201526044016104e8565b50505050565b8280548282559060005260206000209081019282156125fd579160200282015b828111156125fd57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906125c8565b506126099291506126bf565b5090565b82805482825590600052602060002090810192821561265a579160200282015b8281111561265a578251805161264a9184916020909101906126d4565b509160200191906001019061262d565b50612609929150612787565b8280548282559060005260206000209081019282156126b3579160200282015b828111156126b357825180516126a39184916020909101906127a4565b5091602001919060010190612686565b506126099291506127fd565b5b8082111561260957600081556001016126c0565b828054828255906000526020600020906003016004900481019282156125fd5791602002820160005b8382111561274757835183826101000a8154816001600160401b0302191690836001600160401b0316021790555092602001926008016020816007010492830192600103026126fd565b801561277a5782816101000a8154906001600160401b030219169055600801602081600701049283019260010302612747565b50506126099291506126bf565b8082111561260957600061279b828261281a565b50600101612787565b8280548282559060005260206000209081019282156127f1579160200282015b828111156127f157825180516127e1918491602090910190612842565b50916020019190600101906127c4565b506126099291506128dc565b8082111561260957600061281182826128f9565b506001016127fd565b50805460008255600301600490049060005260206000209081019061283f91906126bf565b50565b828054828255906000526020600020906007016008900481019282156125fd5791602002820160005b838211156128ac57835183826101000a81548163ffffffff021916908360e01c0217905550926020019260040160208160030104928301926001030261286b565b801561277a5782816101000a81549063ffffffff02191690556004016020816003010492830192600103026128ac565b808211156126095760006128f08282612917565b506001016128dc565b508054600082559060005260206000209081019061283f91906128dc565b50805460008255600701600890049060005260206000209081019061283f91906126bf565b60ff8116811461283f57600080fd5b60006020828403121561295d57600080fd5b813561081c8161293c565b6001600160a01b038116811461283f57600080fd5b60006020828403121561298f57600080fd5b813561081c81612968565b6000806000606084860312156129af57600080fd5b83356129ba81612968565b92506020840135915060408401356129d181612968565b809150509250925092565b600081518084526020808501945080840160005b83811015612a155781516001600160a01b0316875295820195908201906001016129f0565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b86811015612a97578385038a52825180518087529087019087870190845b81811015612a825783516001600160401b031683529289019291890191600101612a5d565b50509a87019a95505091850191600101612a3f565b509298975050505050505050565b600081518084526020808501945080840160005b83811015612a155781516001600160e01b03191687529582019590820190600101612ab9565b600081518084526020808501808196506005915083821b81018387016000805b87811015612b68578484038b5282518051808652908801908886019080891b87018a01855b82811015612b5257601f19898303018452612b40828651612aa5565b948c0194938c01939150600101612b24565b509d8a019d965050509287019250600101612aff565b50919998505050505050505050565b600081518084526020808501945080840160005b83811015612a1557815160ff1687529582019590820190600101612b8b565b6020815260ff82511660208201526000602083015160e06040840152612bd46101008401826129dc565b90506040840151601f1980858403016060860152612bf28383612a20565b92506060860151915080858403016080860152612c0f8383612a20565b925060808601519150808584030160a0860152612c2c8383612adf565b925060a08601519150808584030160c086015250612c4a8282612b77565b91505060c0840151612c6560e085018264ffffffffff169052565b509392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612ca557612ca5612c6d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612cd357612cd3612c6d565b604052919050565b60006001600160401b03821115612cf457612cf4612c6d565b5060051b60200190565b6001600160401b038116811461283f57600080fd5b600082601f830112612d2457600080fd5b81356020612d39612d3483612cdb565b612cab565b828152600592831b8501820192828201919087851115612d5857600080fd5b8387015b85811015612df75780356001600160401b03811115612d7b5760008081fd5b8801603f81018a13612d8d5760008081fd5b858101356040612d9f612d3483612cdb565b82815291851b8301810191888101908d841115612dbc5760008081fd5b938201935b83851015612de65784359250612dd683612cfe565b8282529389019390890190612dc1565b885250505093850193508401612d5c565b5090979650505050505050565b600082601f830112612e1557600080fd5b612e22612d348335612cdb565b82358082526020808301929160051b85010185811115612e4157600080fd5b602085015b81811015612f73576001600160401b0381351115612e6357600080fd5b8035860187603f820112612e7657600080fd5b6020810135612e87612d3482612cdb565b81815260059190911b82016040019060208101908a831115612ea857600080fd5b604084015b83811015612f5d576001600160401b0381351115612eca57600080fd5b803585018c605f820112612edd57600080fd5b6040810135612eee612d3482612cdb565b81815260059190911b82016060019060208101908f831115612f0f57600080fd5b6060840193505b82841015612f485783356001600160e01b0319811614612f3557600080fd5b8335825260209384019390910190612f16565b86525050602093840193919091019050612ead565b5087525050602094850194919091019050612e46565b509095945050505050565b600080600080600060a08688031215612f9657600080fd5b85356001600160401b0380821115612fad57600080fd5b818801915088601f830112612fc157600080fd5b81356020612fd1612d3483612cdb565b82815260059290921b8401810191818101908c841115612ff057600080fd5b948201945b8386101561301757853561300881612968565b82529482019490820190612ff5565b9950508901359250508082111561302d57600080fd5b61303989838a01612d13565b9550604088013591508082111561304f57600080fd5b61305b89838a01612d13565b9450606088013591508082111561307157600080fd5b5061307e88828901612e04565b95989497509295608001359392505050565b6000806000606084860312156130a557600080fd5b83356130b08161293c565b925060208401356130c08161293c565b915060408401356129d18161293c565b6000602082840312156130e257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611a3557611a356130e9565b805161063e8161293c565b60006020828403121561312f57600080fd5b815161081c8161293c565b805161063e81612968565b60006020828403121561315757600080fd5b815161081c81612968565b8051801515811461063e57600080fd5b60006020828403121561318457600080fd5b61081c82613162565b60006020828403121561319f57600080fd5b815164ffffffffff8116811461081c57600080fd5b81810381811115611a3557611a356130e9565b634e487b7160e01b600052603260045260246000fd5b60005b838110156131f85781810151838201526020016131e0565b50506000910152565b600081518084526132198160208601602086016131dd565b601f01601f19169290920160200192915050565b606080825284516001600160601b03908116838301526020860151166080830152604085015160ff1660a083015284015180151560c08301526000905060808501516001600160a01b03811660e08401525060a08501516001600160a01b0381166101008401525060c085015160e06101208401526132b0610140840182613201565b9150506132c2602083018560ff169052565b60ff831660408301525b949350505050565b80516001600160601b038116811461063e57600080fd5b6000602082840312156132fd57600080fd5b61081c826132d4565b6000808585111561331657600080fd5b8386111561332357600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156133585780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000600182016133b2576133b26130e9565b5060010190565b6000602082840312156133cb57600080fd5b815162ffffff8116811461081c57600080fd5b600082601f8301126133ef57600080fd5b81516001600160401b0381111561340857613408612c6d565b61341b601f8201601f1916602001612cab565b81815284602083860101111561343057600080fd5b6132cc8260208301602087016131dd565b60006020828403121561345357600080fd5b81516001600160401b038082111561346a57600080fd5b9083019060e0828603121561347e57600080fd5b613486612c83565b61348f836132d4565b815261349d602084016132d4565b60208201526134ae60408401613112565b60408201526134bf60608401613162565b60608201526134d06080840161313a565b60808201526134e160a0840161313a565b60a082015260c0830151828111156134f857600080fd5b613504878286016133de565b60c08301525095945050505050565b60006020828403121561352557600080fd5b815161081c81612cfe565b6001600160a01b038416815260606020820181905260009061355490830185612aa5565b90506001600160401b0383166040830152949350505050565b6000825161357f8184602087016131dd565b9190910192915050565b6000806040838503121561359c57600080fd5b6135a583613162565b9150602083015163ffffffff811681146135be57600080fd5b80915050925092905056fea26469706673582212209b770613a550db127f56b3c4738edf10775501e35d6e7a5a9219d0cbfd6c270964736f6c63430008140033",
987
+ "linkReferences": {
988
+ "contracts/type/NftId.sol": {
989
+ "NftIdLib": [
990
+ {
991
+ "length": 20,
992
+ "start": 922
993
+ }
994
+ ]
995
+ },
996
+ "contracts/type/RoleId.sol": {
997
+ "RoleIdLib": [
998
+ {
999
+ "length": 20,
1000
+ "start": 9819
1001
+ },
1002
+ {
1003
+ "length": 20,
1004
+ "start": 10100
1005
+ },
1006
+ {
1007
+ "length": 20,
1008
+ "start": 10617
1009
+ },
1010
+ {
1011
+ "length": 20,
1012
+ "start": 16570
1013
+ },
1014
+ {
1015
+ "length": 20,
1016
+ "start": 16734
1017
+ },
1018
+ {
1019
+ "length": 20,
1020
+ "start": 16981
1021
+ },
1022
+ {
1023
+ "length": 20,
1024
+ "start": 17077
1025
+ },
1026
+ {
1027
+ "length": 20,
1028
+ "start": 17204
1029
+ },
1030
+ {
1031
+ "length": 20,
1032
+ "start": 17468
1033
+ },
1034
+ {
1035
+ "length": 20,
1036
+ "start": 18788
1037
+ },
1038
+ {
1039
+ "length": 20,
1040
+ "start": 19533
1041
+ },
1042
+ {
1043
+ "length": 20,
1044
+ "start": 19738
1045
+ },
1046
+ {
1047
+ "length": 20,
1048
+ "start": 19837
1049
+ },
1050
+ {
1051
+ "length": 20,
1052
+ "start": 20038
1053
+ }
1054
+ ]
1055
+ },
1056
+ "contracts/type/Timestamp.sol": {
1057
+ "TimestampLib": [
1058
+ {
1059
+ "length": 20,
1060
+ "start": 4093
1061
+ },
1062
+ {
1063
+ "length": 20,
1064
+ "start": 4329
1065
+ },
1066
+ {
1067
+ "length": 20,
1068
+ "start": 4582
1069
+ }
1070
+ ]
1071
+ },
1072
+ "contracts/type/Version.sol": {
1073
+ "VersionLib": [
1074
+ {
1075
+ "length": 20,
1076
+ "start": 9219
1077
+ }
1078
+ ],
1079
+ "VersionPartLib": [
1080
+ {
1081
+ "length": 20,
1082
+ "start": 351
1083
+ },
1084
+ {
1085
+ "length": 20,
1086
+ "start": 456
1087
+ },
1088
+ {
1089
+ "length": 20,
1090
+ "start": 2908
1091
+ },
1092
+ {
1093
+ "length": 20,
1094
+ "start": 6134
1095
+ }
1096
+ ]
1097
+ }
1098
+ },
1099
+ "deployedLinkReferences": {
1100
+ "contracts/type/RoleId.sol": {
1101
+ "RoleIdLib": [
1102
+ {
1103
+ "length": 20,
1104
+ "start": 8208
1105
+ },
1106
+ {
1107
+ "length": 20,
1108
+ "start": 8489
1109
+ },
1110
+ {
1111
+ "length": 20,
1112
+ "start": 9006
1113
+ }
1114
+ ]
1115
+ },
1116
+ "contracts/type/Timestamp.sol": {
1117
+ "TimestampLib": [
1118
+ {
1119
+ "length": 20,
1120
+ "start": 2482
1121
+ },
1122
+ {
1123
+ "length": 20,
1124
+ "start": 2718
1125
+ },
1126
+ {
1127
+ "length": 20,
1128
+ "start": 2971
1129
+ }
1130
+ ]
1131
+ },
1132
+ "contracts/type/Version.sol": {
1133
+ "VersionLib": [
1134
+ {
1135
+ "length": 20,
1136
+ "start": 7608
1137
+ }
1138
+ ],
1139
+ "VersionPartLib": [
1140
+ {
1141
+ "length": 20,
1142
+ "start": 1297
1143
+ },
1144
+ {
1145
+ "length": 20,
1146
+ "start": 4523
1147
+ }
1148
+ ]
1149
+ }
1150
+ }
1151
+ }