@etherisc/gif-next 0.0.2-93de5de-423 → 0.0.2-941d319-710

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (723) hide show
  1. package/README.md +139 -93
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +368 -362
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → distribution/IDistributionService.sol/IDistributionService.json} +591 -696
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +650 -1982
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +666 -82
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +649 -2725
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1983 -723
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +610 -317
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +202 -123
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +312 -292
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +486 -566
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +401 -383
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +455 -542
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +415 -73
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → product/IPricingService.sol/IPricingService.json} +336 -306
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +520 -310
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IRiskService.sol/IRiskService.json} +285 -192
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +515 -31
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +315 -122
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +999 -124
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +389 -257
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +213 -110
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -137
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +338 -174
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +248 -131
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +101 -20
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +187 -17
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +47 -70
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +145 -100
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +172 -104
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2360 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +2820 -0
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +858 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  304. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  351. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  357. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  358. package/contracts/accounting/AccountingService.sol +274 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +47 -0
  361. package/contracts/authorization/AccessAdmin.sol +780 -0
  362. package/contracts/authorization/AccessAdminLib.sol +396 -0
  363. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  364. package/contracts/authorization/Authorization.sol +169 -0
  365. package/contracts/authorization/IAccess.sol +67 -0
  366. package/contracts/authorization/IAccessAdmin.sol +144 -0
  367. package/contracts/authorization/IAuthorization.sol +26 -0
  368. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  369. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  370. package/contracts/distribution/BasicDistribution.sol +141 -0
  371. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  372. package/contracts/distribution/Distribution.sol +247 -0
  373. package/contracts/distribution/DistributionService.sol +448 -0
  374. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  375. package/contracts/distribution/IDistributionComponent.sol +45 -0
  376. package/contracts/distribution/IDistributionService.sol +115 -0
  377. package/contracts/examples/fire/DamageLevel.sol +59 -0
  378. package/contracts/examples/fire/FirePool.sol +86 -0
  379. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  380. package/contracts/examples/fire/FireProduct.sol +433 -0
  381. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  382. package/contracts/examples/fire/FireUSD.sol +26 -0
  383. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  384. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  386. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  387. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  389. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  390. package/contracts/instance/BundleSet.sol +130 -0
  391. package/contracts/instance/IInstance.sol +119 -66
  392. package/contracts/instance/IInstanceService.sol +84 -26
  393. package/contracts/instance/Instance.sol +256 -200
  394. package/contracts/instance/InstanceAdmin.sol +383 -0
  395. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  396. package/contracts/instance/InstanceReader.sol +530 -191
  397. package/contracts/instance/InstanceService.sol +385 -361
  398. package/contracts/instance/InstanceServiceManager.sol +14 -29
  399. package/contracts/instance/InstanceStore.sol +298 -0
  400. package/contracts/instance/RiskSet.sol +126 -0
  401. package/contracts/instance/base/BalanceStore.sol +121 -0
  402. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  403. package/contracts/instance/base/ObjectCounter.sol +20 -0
  404. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  405. package/contracts/instance/base/ObjectSet.sol +77 -0
  406. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  407. package/contracts/instance/module/IBundle.sol +10 -9
  408. package/contracts/instance/module/IComponents.sol +62 -0
  409. package/contracts/instance/module/IDistribution.sol +25 -10
  410. package/contracts/instance/module/IPolicy.sol +78 -20
  411. package/contracts/instance/module/IRisk.sol +6 -1
  412. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  413. package/contracts/oracle/BasicOracle.sol +45 -0
  414. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  415. package/contracts/oracle/IOracle.sol +41 -0
  416. package/contracts/oracle/IOracleComponent.sol +33 -0
  417. package/contracts/oracle/IOracleService.sol +66 -0
  418. package/contracts/oracle/Oracle.sol +154 -0
  419. package/contracts/oracle/OracleService.sol +310 -0
  420. package/contracts/oracle/OracleServiceManager.sol +39 -0
  421. package/contracts/pool/BasicPool.sol +162 -0
  422. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  423. package/contracts/pool/BundleService.sol +386 -0
  424. package/contracts/pool/BundleServiceManager.sol +39 -0
  425. package/contracts/pool/IBundleService.sol +116 -0
  426. package/contracts/pool/IPoolComponent.sol +62 -0
  427. package/contracts/pool/IPoolService.sol +170 -0
  428. package/contracts/pool/Pool.sol +333 -0
  429. package/contracts/pool/PoolLib.sol +341 -0
  430. package/contracts/pool/PoolService.sol +614 -0
  431. package/contracts/pool/PoolServiceManager.sol +39 -0
  432. package/contracts/product/ApplicationService.sol +327 -0
  433. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  434. package/contracts/product/BasicProduct.sol +49 -0
  435. package/contracts/product/BasicProductAuthorization.sol +63 -0
  436. package/contracts/product/ClaimService.sol +630 -0
  437. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  438. package/contracts/{instance/service → product}/IApplicationService.sol +42 -36
  439. package/contracts/product/IClaimService.sol +136 -0
  440. package/contracts/product/IPolicyService.sol +102 -0
  441. package/contracts/product/IPricingService.sol +40 -0
  442. package/contracts/product/IProductComponent.sol +62 -0
  443. package/contracts/product/IRiskService.sol +48 -0
  444. package/contracts/product/PolicyService.sol +645 -0
  445. package/contracts/product/PolicyServiceLib.sol +139 -0
  446. package/contracts/product/PolicyServiceManager.sol +39 -0
  447. package/contracts/product/PricingService.sol +306 -0
  448. package/contracts/product/PricingServiceManager.sol +39 -0
  449. package/contracts/product/Product.sol +493 -0
  450. package/contracts/product/RiskService.sol +190 -0
  451. package/contracts/product/RiskServiceManager.sol +39 -0
  452. package/contracts/registry/ChainNft.sol +83 -36
  453. package/contracts/registry/IRegistry.sol +106 -33
  454. package/contracts/registry/IRegistryService.sol +36 -41
  455. package/contracts/registry/IRelease.sol +29 -0
  456. package/contracts/registry/ITransferInterceptor.sol +1 -1
  457. package/contracts/registry/Registry.sol +481 -209
  458. package/contracts/registry/RegistryAdmin.sol +188 -0
  459. package/contracts/registry/RegistryAuthorization.sol +309 -0
  460. package/contracts/registry/RegistryService.sol +90 -132
  461. package/contracts/registry/RegistryServiceManager.sol +23 -32
  462. package/contracts/registry/ReleaseAdmin.sol +195 -0
  463. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  464. package/contracts/registry/ReleaseRegistry.sol +525 -0
  465. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  466. package/contracts/registry/TokenRegistry.sol +265 -64
  467. package/contracts/shared/Component.sol +214 -0
  468. package/contracts/shared/ComponentService.sol +687 -0
  469. package/contracts/shared/ComponentServiceManager.sol +38 -0
  470. package/contracts/shared/ContractLib.sol +312 -0
  471. package/contracts/shared/IComponent.sol +58 -0
  472. package/contracts/shared/IComponentService.sol +111 -0
  473. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  474. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  475. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  476. package/contracts/shared/INftOwnable.sol +6 -2
  477. package/contracts/shared/IPolicyHolder.sol +23 -14
  478. package/contracts/shared/IRegisterable.sol +22 -1
  479. package/contracts/shared/IRegistryLinked.sol +0 -1
  480. package/contracts/shared/IService.sol +12 -5
  481. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  482. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  483. package/contracts/shared/KeyValueStore.sol +131 -0
  484. package/contracts/shared/Lifecycle.sol +88 -0
  485. package/contracts/shared/NftIdSet.sol +65 -0
  486. package/contracts/shared/NftOwnable.sol +36 -27
  487. package/contracts/shared/PolicyHolder.sol +23 -41
  488. package/contracts/shared/Registerable.sol +51 -19
  489. package/contracts/shared/RegistryLinked.sol +9 -19
  490. package/contracts/shared/Service.sol +38 -29
  491. package/contracts/shared/TokenHandler.sol +327 -12
  492. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  493. package/contracts/staking/IStaking.sol +264 -0
  494. package/contracts/staking/IStakingService.sol +127 -0
  495. package/contracts/staking/Staking.sol +746 -0
  496. package/contracts/staking/StakingLib.sol +195 -0
  497. package/contracts/staking/StakingLifecycle.sol +23 -0
  498. package/contracts/staking/StakingManager.sol +51 -0
  499. package/contracts/staking/StakingReader.sol +151 -0
  500. package/contracts/staking/StakingService.sol +321 -0
  501. package/contracts/staking/StakingServiceManager.sol +46 -0
  502. package/contracts/staking/StakingStore.sol +973 -0
  503. package/contracts/staking/TargetManagerLib.sol +211 -0
  504. package/contracts/{types → type}/AddressSet.sol +1 -1
  505. package/contracts/type/Amount.sol +154 -0
  506. package/contracts/{types → type}/Blocknumber.sol +36 -12
  507. package/contracts/type/ChainId.sol +101 -0
  508. package/contracts/{types → type}/ClaimId.sol +31 -3
  509. package/contracts/type/Fee.sol +66 -0
  510. package/contracts/{types → type}/Key32.sol +2 -2
  511. package/contracts/type/Key32Set.sol +62 -0
  512. package/contracts/{types → type}/NftId.sol +28 -15
  513. package/contracts/{types → type}/NftIdSet.sol +2 -2
  514. package/contracts/type/ObjectType.sol +307 -0
  515. package/contracts/type/PayoutId.sol +82 -0
  516. package/contracts/{types → type}/Referral.sol +6 -1
  517. package/contracts/type/RequestId.sol +75 -0
  518. package/contracts/type/RiskId.sol +75 -0
  519. package/contracts/type/RoleId.sol +180 -0
  520. package/contracts/type/Seconds.sol +115 -0
  521. package/contracts/type/Selector.sol +107 -0
  522. package/contracts/{types → type}/StateId.sol +48 -4
  523. package/contracts/type/String.sol +65 -0
  524. package/contracts/{types → type}/Timestamp.sol +36 -20
  525. package/contracts/type/UFixed.sol +263 -0
  526. package/contracts/{types → type}/Version.sol +59 -7
  527. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  528. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  529. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  530. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  531. package/package.json +12 -8
  532. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  533. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  534. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  535. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  537. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  539. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  540. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  542. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  543. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  545. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  547. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  550. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  552. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  553. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  554. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -254
  556. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -858
  560. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  562. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1085
  564. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  566. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -743
  568. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  570. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -935
  572. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -677
  574. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -398
  578. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -480
  580. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -336
  583. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -373
  585. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1109
  587. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  589. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -716
  591. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  593. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -766
  595. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  597. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  598. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  599. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  600. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  601. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  602. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  603. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  604. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  605. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  606. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  607. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  608. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  609. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  610. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  613. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  615. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  617. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -510
  619. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  621. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  622. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  623. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  624. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  625. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  626. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  627. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  628. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  629. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  631. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  633. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  635. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  637. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  639. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  640. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  641. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  643. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  644. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  645. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  647. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  649. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  651. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  653. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  655. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  657. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  659. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  661. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  663. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  665. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  667. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  669. package/contracts/components/Component.sol +0 -241
  670. package/contracts/components/Distribution.sol +0 -308
  671. package/contracts/components/IComponent.sol +0 -54
  672. package/contracts/components/IDistributionComponent.sol +0 -100
  673. package/contracts/components/IPoolComponent.sol +0 -87
  674. package/contracts/components/IProductComponent.sol +0 -39
  675. package/contracts/components/Pool.sol +0 -254
  676. package/contracts/components/Product.sol +0 -285
  677. package/contracts/instance/BundleManager.sol +0 -125
  678. package/contracts/instance/InstanceAccessManager.sol +0 -297
  679. package/contracts/instance/ObjectManager.sol +0 -84
  680. package/contracts/instance/base/ComponentService.sol +0 -134
  681. package/contracts/instance/base/KeyValueStore.sol +0 -172
  682. package/contracts/instance/base/Lifecycle.sol +0 -100
  683. package/contracts/instance/module/IAccess.sol +0 -47
  684. package/contracts/instance/module/ISetup.sol +0 -47
  685. package/contracts/instance/module/ITreasury.sol +0 -23
  686. package/contracts/instance/service/ApplicationService.sol +0 -268
  687. package/contracts/instance/service/BundleService.sol +0 -298
  688. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  689. package/contracts/instance/service/ClaimService.sol +0 -151
  690. package/contracts/instance/service/DistributionService.sol +0 -277
  691. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  692. package/contracts/instance/service/IBundleService.sol +0 -54
  693. package/contracts/instance/service/IClaimService.sol +0 -61
  694. package/contracts/instance/service/IDistributionService.sol +0 -65
  695. package/contracts/instance/service/IPolicyService.sol +0 -89
  696. package/contracts/instance/service/IPoolService.sol +0 -20
  697. package/contracts/instance/service/IProductService.sol +0 -40
  698. package/contracts/instance/service/PolicyService.sol +0 -474
  699. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  700. package/contracts/instance/service/PoolService.sol +0 -109
  701. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  702. package/contracts/instance/service/ProductService.sol +0 -233
  703. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  704. package/contracts/registry/RegistryAccessManager.sol +0 -216
  705. package/contracts/registry/ReleaseManager.sol +0 -322
  706. package/contracts/shared/ContractDeployerLib.sol +0 -72
  707. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  708. package/contracts/test/TestFee.sol +0 -25
  709. package/contracts/test/TestRegisterable.sol +0 -18
  710. package/contracts/test/TestRoleId.sol +0 -14
  711. package/contracts/test/TestService.sol +0 -25
  712. package/contracts/test/TestToken.sol +0 -26
  713. package/contracts/test/TestVersion.sol +0 -44
  714. package/contracts/test/TestVersionable.sol +0 -17
  715. package/contracts/types/ChainId.sol +0 -38
  716. package/contracts/types/Fee.sol +0 -56
  717. package/contracts/types/NumberId.sol +0 -52
  718. package/contracts/types/ObjectType.sol +0 -156
  719. package/contracts/types/PayoutId.sol +0 -54
  720. package/contracts/types/RiskId.sol +0 -43
  721. package/contracts/types/RoleId.sol +0 -90
  722. package/contracts/types/UFixed.sol +0 -325
  723. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -0,0 +1,858 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "StakingManager",
4
+ "sourceName": "contracts/staking/StakingManager.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "registry",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "tokenRegistry",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "stakingStore",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "initialOwner",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "bytes32",
30
+ "name": "salt",
31
+ "type": "bytes32"
32
+ }
33
+ ],
34
+ "stateMutability": "nonpayable",
35
+ "type": "constructor"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "NftId",
41
+ "name": "nftId",
42
+ "type": "uint96"
43
+ }
44
+ ],
45
+ "name": "ErrorNftOwnableAlreadyLinked",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [
50
+ {
51
+ "internalType": "address",
52
+ "name": "contractAddress",
53
+ "type": "address"
54
+ }
55
+ ],
56
+ "name": "ErrorNftOwnableContractNotRegistered",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "ErrorNftOwnableInitialOwnerZero",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "NftId",
68
+ "name": "nftId",
69
+ "type": "uint96"
70
+ },
71
+ {
72
+ "internalType": "ObjectType",
73
+ "name": "expectedObjectType",
74
+ "type": "uint8"
75
+ }
76
+ ],
77
+ "name": "ErrorNftOwnableInvalidType",
78
+ "type": "error"
79
+ },
80
+ {
81
+ "inputs": [
82
+ {
83
+ "internalType": "address",
84
+ "name": "account",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "ErrorNftOwnableNotOwner",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [
93
+ {
94
+ "internalType": "address",
95
+ "name": "registryAddress",
96
+ "type": "address"
97
+ }
98
+ ],
99
+ "name": "ErrorNotRegistry",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "ErrorProxyManagerAlreadyDeployed",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [
109
+ {
110
+ "internalType": "Version",
111
+ "name": "nextVersion",
112
+ "type": "uint24"
113
+ }
114
+ ],
115
+ "name": "ErrorProxyManagerNextVersionNotIncreasing",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "ErrorProxyManagerNotYetDeployed",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "ErrorProxyManagerZeroVersion",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [],
130
+ "name": "InvalidInitialization",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "NotInitializing",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "anonymous": false,
140
+ "inputs": [
141
+ {
142
+ "indexed": false,
143
+ "internalType": "uint64",
144
+ "name": "version",
145
+ "type": "uint64"
146
+ }
147
+ ],
148
+ "name": "Initialized",
149
+ "type": "event"
150
+ },
151
+ {
152
+ "anonymous": false,
153
+ "inputs": [
154
+ {
155
+ "indexed": false,
156
+ "internalType": "NftId",
157
+ "name": "nftId",
158
+ "type": "uint96"
159
+ },
160
+ {
161
+ "indexed": false,
162
+ "internalType": "address",
163
+ "name": "owner",
164
+ "type": "address"
165
+ }
166
+ ],
167
+ "name": "LogNftOwnableNftLinkedToAddress",
168
+ "type": "event"
169
+ },
170
+ {
171
+ "anonymous": false,
172
+ "inputs": [
173
+ {
174
+ "indexed": true,
175
+ "internalType": "address",
176
+ "name": "proxy",
177
+ "type": "address"
178
+ },
179
+ {
180
+ "indexed": false,
181
+ "internalType": "address",
182
+ "name": "initialImplementation",
183
+ "type": "address"
184
+ }
185
+ ],
186
+ "name": "LogProxyManagerVersionableDeployed",
187
+ "type": "event"
188
+ },
189
+ {
190
+ "anonymous": false,
191
+ "inputs": [
192
+ {
193
+ "indexed": true,
194
+ "internalType": "address",
195
+ "name": "proxy",
196
+ "type": "address"
197
+ },
198
+ {
199
+ "indexed": false,
200
+ "internalType": "address",
201
+ "name": "upgradedImplementation",
202
+ "type": "address"
203
+ }
204
+ ],
205
+ "name": "LogProxyManagerVersionableUpgraded",
206
+ "type": "event"
207
+ },
208
+ {
209
+ "inputs": [],
210
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
211
+ "outputs": [
212
+ {
213
+ "internalType": "bytes32",
214
+ "name": "",
215
+ "type": "bytes32"
216
+ }
217
+ ],
218
+ "stateMutability": "view",
219
+ "type": "function"
220
+ },
221
+ {
222
+ "inputs": [
223
+ {
224
+ "internalType": "address",
225
+ "name": "registry",
226
+ "type": "address"
227
+ },
228
+ {
229
+ "internalType": "address",
230
+ "name": "initialImplementation",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "internalType": "bytes",
235
+ "name": "initializationData",
236
+ "type": "bytes"
237
+ }
238
+ ],
239
+ "name": "deploy",
240
+ "outputs": [
241
+ {
242
+ "internalType": "contract IVersionable",
243
+ "name": "versionable",
244
+ "type": "address"
245
+ }
246
+ ],
247
+ "stateMutability": "nonpayable",
248
+ "type": "function"
249
+ },
250
+ {
251
+ "inputs": [
252
+ {
253
+ "internalType": "address",
254
+ "name": "registry",
255
+ "type": "address"
256
+ },
257
+ {
258
+ "internalType": "address",
259
+ "name": "initialImplementation",
260
+ "type": "address"
261
+ },
262
+ {
263
+ "internalType": "bytes",
264
+ "name": "initializationData",
265
+ "type": "bytes"
266
+ },
267
+ {
268
+ "internalType": "bytes32",
269
+ "name": "salt",
270
+ "type": "bytes32"
271
+ }
272
+ ],
273
+ "name": "deployDetermenistic",
274
+ "outputs": [
275
+ {
276
+ "internalType": "contract IVersionable",
277
+ "name": "versionable",
278
+ "type": "address"
279
+ }
280
+ ],
281
+ "stateMutability": "nonpayable",
282
+ "type": "function"
283
+ },
284
+ {
285
+ "inputs": [
286
+ {
287
+ "internalType": "address",
288
+ "name": "proxyOwner",
289
+ "type": "address"
290
+ },
291
+ {
292
+ "internalType": "bytes",
293
+ "name": "deployData",
294
+ "type": "bytes"
295
+ }
296
+ ],
297
+ "name": "getDeployData",
298
+ "outputs": [
299
+ {
300
+ "internalType": "bytes",
301
+ "name": "data",
302
+ "type": "bytes"
303
+ }
304
+ ],
305
+ "stateMutability": "pure",
306
+ "type": "function"
307
+ },
308
+ {
309
+ "inputs": [],
310
+ "name": "getNftId",
311
+ "outputs": [
312
+ {
313
+ "internalType": "NftId",
314
+ "name": "",
315
+ "type": "uint96"
316
+ }
317
+ ],
318
+ "stateMutability": "view",
319
+ "type": "function"
320
+ },
321
+ {
322
+ "inputs": [],
323
+ "name": "getOwner",
324
+ "outputs": [
325
+ {
326
+ "internalType": "address",
327
+ "name": "",
328
+ "type": "address"
329
+ }
330
+ ],
331
+ "stateMutability": "view",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [],
336
+ "name": "getProxy",
337
+ "outputs": [
338
+ {
339
+ "internalType": "contract UpgradableProxyWithAdmin",
340
+ "name": "",
341
+ "type": "address"
342
+ }
343
+ ],
344
+ "stateMutability": "view",
345
+ "type": "function"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "getRegistry",
350
+ "outputs": [
351
+ {
352
+ "internalType": "contract IRegistry",
353
+ "name": "",
354
+ "type": "address"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
360
+ {
361
+ "inputs": [],
362
+ "name": "getStaking",
363
+ "outputs": [
364
+ {
365
+ "internalType": "contract Staking",
366
+ "name": "",
367
+ "type": "address"
368
+ }
369
+ ],
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
373
+ {
374
+ "inputs": [
375
+ {
376
+ "internalType": "bytes",
377
+ "name": "upgradeData",
378
+ "type": "bytes"
379
+ }
380
+ ],
381
+ "name": "getUpgradeData",
382
+ "outputs": [
383
+ {
384
+ "internalType": "bytes",
385
+ "name": "data",
386
+ "type": "bytes"
387
+ }
388
+ ],
389
+ "stateMutability": "pure",
390
+ "type": "function"
391
+ },
392
+ {
393
+ "inputs": [],
394
+ "name": "getVersion",
395
+ "outputs": [
396
+ {
397
+ "internalType": "Version",
398
+ "name": "",
399
+ "type": "uint24"
400
+ }
401
+ ],
402
+ "stateMutability": "view",
403
+ "type": "function"
404
+ },
405
+ {
406
+ "inputs": [
407
+ {
408
+ "internalType": "uint256",
409
+ "name": "idx",
410
+ "type": "uint256"
411
+ }
412
+ ],
413
+ "name": "getVersion",
414
+ "outputs": [
415
+ {
416
+ "internalType": "Version",
417
+ "name": "",
418
+ "type": "uint24"
419
+ }
420
+ ],
421
+ "stateMutability": "view",
422
+ "type": "function"
423
+ },
424
+ {
425
+ "inputs": [],
426
+ "name": "getVersionCount",
427
+ "outputs": [
428
+ {
429
+ "internalType": "uint256",
430
+ "name": "",
431
+ "type": "uint256"
432
+ }
433
+ ],
434
+ "stateMutability": "view",
435
+ "type": "function"
436
+ },
437
+ {
438
+ "inputs": [
439
+ {
440
+ "internalType": "Version",
441
+ "name": "_version",
442
+ "type": "uint24"
443
+ }
444
+ ],
445
+ "name": "getVersionInfo",
446
+ "outputs": [
447
+ {
448
+ "components": [
449
+ {
450
+ "internalType": "address",
451
+ "name": "implementation",
452
+ "type": "address"
453
+ },
454
+ {
455
+ "internalType": "Timestamp",
456
+ "name": "activatedAt",
457
+ "type": "uint40"
458
+ },
459
+ {
460
+ "internalType": "Blocknumber",
461
+ "name": "activatedIn",
462
+ "type": "uint40"
463
+ },
464
+ {
465
+ "internalType": "Version",
466
+ "name": "version",
467
+ "type": "uint24"
468
+ },
469
+ {
470
+ "internalType": "address",
471
+ "name": "activatedBy",
472
+ "type": "address"
473
+ }
474
+ ],
475
+ "internalType": "struct ProxyManager.VersionInfo",
476
+ "name": "",
477
+ "type": "tuple"
478
+ }
479
+ ],
480
+ "stateMutability": "view",
481
+ "type": "function"
482
+ },
483
+ {
484
+ "inputs": [
485
+ {
486
+ "internalType": "address",
487
+ "name": "registry",
488
+ "type": "address"
489
+ },
490
+ {
491
+ "internalType": "address",
492
+ "name": "implementation",
493
+ "type": "address"
494
+ },
495
+ {
496
+ "internalType": "bytes",
497
+ "name": "data",
498
+ "type": "bytes"
499
+ },
500
+ {
501
+ "internalType": "bytes32",
502
+ "name": "salt",
503
+ "type": "bytes32"
504
+ }
505
+ ],
506
+ "name": "initialize",
507
+ "outputs": [
508
+ {
509
+ "internalType": "contract IVersionable",
510
+ "name": "versionable",
511
+ "type": "address"
512
+ }
513
+ ],
514
+ "stateMutability": "nonpayable",
515
+ "type": "function"
516
+ },
517
+ {
518
+ "inputs": [],
519
+ "name": "linkToProxy",
520
+ "outputs": [
521
+ {
522
+ "internalType": "NftId",
523
+ "name": "",
524
+ "type": "uint96"
525
+ }
526
+ ],
527
+ "stateMutability": "nonpayable",
528
+ "type": "function"
529
+ },
530
+ {
531
+ "inputs": [],
532
+ "name": "linkToRegisteredNftId",
533
+ "outputs": [
534
+ {
535
+ "internalType": "NftId",
536
+ "name": "nftId",
537
+ "type": "uint96"
538
+ }
539
+ ],
540
+ "stateMutability": "nonpayable",
541
+ "type": "function"
542
+ },
543
+ {
544
+ "inputs": [
545
+ {
546
+ "internalType": "bytes4",
547
+ "name": "interfaceId",
548
+ "type": "bytes4"
549
+ }
550
+ ],
551
+ "name": "supportsInterface",
552
+ "outputs": [
553
+ {
554
+ "internalType": "bool",
555
+ "name": "",
556
+ "type": "bool"
557
+ }
558
+ ],
559
+ "stateMutability": "view",
560
+ "type": "function"
561
+ },
562
+ {
563
+ "inputs": [
564
+ {
565
+ "internalType": "address",
566
+ "name": "newImplementation",
567
+ "type": "address"
568
+ }
569
+ ],
570
+ "name": "upgrade",
571
+ "outputs": [
572
+ {
573
+ "internalType": "contract IVersionable",
574
+ "name": "versionable",
575
+ "type": "address"
576
+ }
577
+ ],
578
+ "stateMutability": "nonpayable",
579
+ "type": "function"
580
+ },
581
+ {
582
+ "inputs": [
583
+ {
584
+ "internalType": "address",
585
+ "name": "newImplementation",
586
+ "type": "address"
587
+ },
588
+ {
589
+ "internalType": "bytes",
590
+ "name": "upgradeData",
591
+ "type": "bytes"
592
+ }
593
+ ],
594
+ "name": "upgrade",
595
+ "outputs": [
596
+ {
597
+ "internalType": "contract IVersionable",
598
+ "name": "versionable",
599
+ "type": "address"
600
+ }
601
+ ],
602
+ "stateMutability": "nonpayable",
603
+ "type": "function"
604
+ }
605
+ ],
606
+ "bytecode": "0x608060405234801561000f575f80fd5b5060405161a31638038061a31683398101604081905261002e91610ba3565b5f60405161003b90610b6e565b604051809103905ff080158015610054573d5f803e3d5ffd5b50600680546001600160a01b0319166001600160a01b0383811691909117909155604080518983166020820152888316918101919091529086166060820152909150608001604051602081830303815290604052600790816100b69190610c95565b50600654600780545f92610163928a926001600160a01b03909216916100db90610c11565b80601f016020809104026020016040519081016040528092919081815260200182805461010790610c11565b80156101525780601f1061012957610100808354040283529160200191610152565b820191905f5260205f20905b81548152906001019060200180831161013557829003601f168201915b50505050508661019060201b60201c565b600580546001600160a01b0319166001600160a01b039290921691909117905550610eab95505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080545f919068010000000000000000810460ff1615906001600160401b031683811580156101dc5750825b90505f826001600160401b031660011480156101f75750303b155b905081158015610205575080155b156102235760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561025157845460ff60401b1916680100000000000000001785555b61025d8a8a8a8a6102b2565b955083156102a557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050949350505050565b5f6102bb610386565b5f806102c6876103d6565b90925090508386826102d88589610418565b6040516102e490610b7b565b6102f093929190610d7d565b8190604051809103905ff590508015801561030d573d5f803e3d5ffd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556103388683610470565b6040516001600160a01b038881168252919450908416907f78922e3fa1abc96399973cb25528ba892214b57da9d1a573937c460d9f5eb4759060200160405180910390a25050949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166103d457604051631afcd79f60e31b815260040160405180910390fd5b565b6004545f908190156103fb5760405163402b135f60e11b815260040160405180910390fd5b33610406848261087b565b61040e61090d565b9430945092505050565b60606349bb9e4b60e01b8383604051602401610435929190610db1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b92915050565b600254604080516303639b8b60e21b815290516001600160a01b03909216915f918391630d8e6e2c916004808201926020929091908290030181865afa1580156104bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e09190610ddc565b905061055e8173__$8eede297b65ed5a56eb3f84d8232ae93f5$__6304b8f6c56040518163ffffffff1660e01b8152600401602060405180830381865af415801561052d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105519190610ddc565b62ffffff90811691161490565b1561057c576040516348c618db60e01b815260040160405180910390fd5b600454156106d9576004805461059490600190610e05565b815481106105a4576105a4610e24565b5f9182526020909120600a80830490910154604051635560100760e01b8152919092066003026101000a90910462ffffff16600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__90635560100790602401602060405180830381865af4158015610615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190610e38565b604051635560100760e01b815262ffffff8316600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__90635560100790602401602060405180830381865af415801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af9190610e38565b116106d957604051633e614b6d60e11b815262ffffff821660048201526024015b60405180910390fd5b600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b600a808304919091018054919092066003026101000a62ffffff81810219909216918516021790556040805160a0810182526001600160a01b03871681528151639fa6a6e360e01b81529151909260208085019373__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__93639fa6a6e39382810193928290030181865af4158015610794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b89190610e4f565b64ffffffffff16815260200163ffffffff431664ffffffffff908116825262ffffff93841660208084018290526001600160a01b039788166040948501525f91825260038152908390208451815492860151948601518416600160c81b0264ffffffffff60c81b1995909416600160a01b026001600160c81b03199093169089161791909117929092161781556060820151600190910180546080909301519095166301000000026001600160b81b031990921692169190911717909155919050565b610883610386565b61088b610a5a565b61089482610aa2565b6001600160a01b0381166108bb5760405163f17ef42d60e01b815260040160405180910390fd5b7f07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f0080546001600160601b03166c010000000000000000000000006001600160a01b039093169290920291909117905550565b5f807f07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f0080546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561098c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b09190610e73565b15610a3b576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610a11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a359190610e92565b91505090565b546c0100000000000000000000000090046001600160a01b0316919050565b610a62610386565b6103d46301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b610aaa610386565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015610b00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b249190610e73565b610b4c5760405163fdeac91f60e01b81526001600160a01b03821660048201526024016106d0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b615aac806137a883390190565b6110c28061925483390190565b80516001600160a01b0381168114610b9e575f80fd5b919050565b5f805f805f60a08688031215610bb7575f80fd5b610bc086610b88565b9450610bce60208701610b88565b9350610bdc60408701610b88565b9250610bea60608701610b88565b9150608086015190509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610c2557607f821691505b602082108103610c4357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9057805f5260205f20601f840160051c81016020851015610c6e5750805b601f840160051c820191505b81811015610c8d575f8155600101610c7a565b50505b505050565b81516001600160401b03811115610cae57610cae610bfd565b610cc281610cbc8454610c11565b84610c49565b6020601f821160018114610cf4575f8315610cdd5750848201515b5f19600385901b1c1916600184901b178455610c8d565b5f84815260208120601f198516915b82811015610d235787850151825560209485019460019092019101610d03565b5084821015610d4057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038481168252831660208201526060604082018190525f90610da890830184610d4f565b95945050505050565b6001600160a01b03831681526040602082018190525f90610dd490830184610d4f565b949350505050565b5f60208284031215610dec575f80fd5b815162ffffff81168114610dfe575f80fd5b9392505050565b8181038181111561046a57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215610e48575f80fd5b5051919050565b5f60208284031215610e5f575f80fd5b815164ffffffffff81168114610dfe575f80fd5b5f60208284031215610e83575f80fd5b81518015158114610dfe575f80fd5b5f60208284031215610ea2575f80fd5b610dfe82610b88565b6128f080610eb85f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c80637b1391a6116100a9578063ada9652e1161006e578063ada9652e146103a2578063b88da759146103b6578063c987336c146103c9578063f5c1b5a7146103dc578063fd0c63d9146103ef575f80fd5b80637b1391a614610353578063893d20e8146103645780638e9afce61461036c578063933a9ce81461037f578063946dfcfe14610390575f80fd5b80631775564d116100ef5780631775564d146101e65780632db5b86f146102065780634d459c90146102195780635ab1bd5314610325578063644c45e014610336575f80fd5b806301ffc9a71461012b578063044995821461016c5780630900f010146101975780630d8e6e2c146101aa578063138461e0146101c6575b5f80fd5b6101576101393660046113d3565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61017f61017a3660046114b0565b6103f7565b6040516001600160a01b039091168152602001610163565b61017f6101a5366004611516565b6104ca565b6101b261051e565b60405162ffffff9091168152602001610163565b6101ce61058e565b6040516001600160601b039091168152602001610163565b6101f96101f4366004611531565b610598565b60405161016391906115ac565b61017f6102143660046115be565b6105f0565b6102c861022736600461162c565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525062ffffff9081165f90815260036020908152604091829020825160a08101845281546001600160a01b03808216835264ffffffffff600160a01b8304811695840195909552600160c81b909104909316938101939093526001015492831660608301526301000000909204909116608082015290565b604051610163919081516001600160a01b03908116825260208084015164ffffffffff908116918401919091526040808501519091169083015260608084015162ffffff1690830152608092830151169181019190915260a00190565b6001546001600160a01b031661017f565b5f8051602061289b833981519152546001600160601b03166101ce565b6005546001600160a01b031661017f565b61017f6106bd565b6101f961037a366004611647565b6107ee565b6002546001600160a01b031661017f565b6004545b604051908152602001610163565b6103945f8051602061289b83398151915281565b6101b26103c4366004611681565b610841565b61017f6103d7366004611531565b61087f565b61017f6103ea3660046114b0565b610a21565b6101ce610b3c565b5f610400610b53565b5f8061040b87610b9e565b9150915083868261041c8589610598565b604051610428906113c6565b61043493929190611698565b8190604051809103905ff5905080158015610451573d5f803e3d5ffd5b50600280546001600160a01b0319166001600160a01b039290921691909117905561047c8683610be0565b6040516001600160a01b038881168252919450908416907f78922e3fa1abc96399973cb25528ba892214b57da9d1a573937c460d9f5eb4759060200160405180910390a25050949350505050565b5f6104d36106bd565b6001600160a01b0316336001600160a01b03161461050b5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6060610517838261087f565b9392505050565b600254604080516303639b8b60e21b815290515f926001600160a01b031691630d8e6e2c9160048083019260209291908290030181865afa158015610565573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058991906116cc565b905090565b5f61058930610fe6565b60606349bb9e4b60e01b83836040516024016105b59291906116e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b92915050565b5f6105f9610b53565b5f8061060486610b9e565b9150915084816106148487610598565b604051610620906113c6565b61062c93929190611698565b604051809103905ff080158015610645573d5f803e3d5ffd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556106708583610be0565b6040516001600160a01b038781168252919450908416907f78922e3fa1abc96399973cb25528ba892214b57da9d1a573937c460d9f5eb4759060200160405180910390a250509392505050565b5f805f8051602061289b83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074d919061170a565b156107d8576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156107ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d29190611729565b91505090565b54600160601b90046001600160a01b0316919050565b606063329d6e7460e01b8260405160240161080991906115ac565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b5f6004828154811061085557610855611744565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff169050919050565b5f6108886106bd565b6001600160a01b0316336001600160a01b0316146108bb5760405163086391f760e31b8152336004820152602401610502565b6004545f036108dd5760405163366dfd2160e21b815260040160405180910390fd5b5f6108e66106bd565b90505f6108fb6002546001600160a01b031690565b6001600160a01b0316638b3240a06040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610937573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095b9190611729565b6002549091506001600160a01b03908116908216639623609d828861097f896107ee565b6040518463ffffffff1660e01b815260040161099d93929190611698565b5f604051808303815f87803b1580156109b4575f80fd5b505af11580156109c6573d5f803e3d5ffd5b505050506109d48684610be0565b6040516001600160a01b038881168252919550908516907f1356a2c922be684528fa1759d1808395e5c5010181dd333cdb6f03e2d8545b659060200160405180910390a250505092915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080545f9190600160401b810460ff16159067ffffffffffffffff168381158015610a695750825b90505f8267ffffffffffffffff166001148015610a855750303b155b905081158015610a93575080155b15610ab15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610adb57845460ff60401b1916600160401b1785555b610ae78a8a8a8a6103f7565b95508315610b2f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050949350505050565b6002545f90610589906001600160a01b0316610fe6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b9c57604051631afcd79f60e31b815260040160405180910390fd5b565b6004545f90819015610bc35760405163402b135f60e11b815260040160405180910390fd5b33610bce848261123c565b610bd66106bd565b9430945092505050565b600254604080516303639b8b60e21b815290516001600160a01b03909216915f918391630d8e6e2c916004808201926020929091908290030181865afa158015610c2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5091906116cc565b9050610cce8173__$8eede297b65ed5a56eb3f84d8232ae93f5$__6304b8f6c56040518163ffffffff1660e01b8152600401602060405180830381865af4158015610c9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc191906116cc565b62ffffff90811691161490565b15610cec576040516348c618db60e01b815260040160405180910390fd5b60045415610e445760048054610d0490600190611758565b81548110610d1457610d14611744565b5f9182526020909120600a80830490910154604051635560100760e01b8152919092066003026101000a90910462ffffff16600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__90635560100790602401602060405180830381865af4158015610d85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da99190611777565b604051635560100760e01b815262ffffff8316600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__90635560100790602401602060405180830381865af4158015610dfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1f9190611777565b11610e4457604051633e614b6d60e11b815262ffffff82166004820152602401610502565b600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b600a808304919091018054919092066003026101000a62ffffff81810219909216918516021790556040805160a0810182526001600160a01b03871681528151639fa6a6e360e01b81529151909260208085019373__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__93639fa6a6e39382810193928290030181865af4158015610eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f23919061178e565b64ffffffffff16815260200163ffffffff431664ffffffffff908116825262ffffff93841660208084018290526001600160a01b039788166040948501525f91825260038152908390208451815492860151948601518416600160c81b0264ffffffffff60c81b1995909416600160a01b026001600160c81b03199093169089161791909117929092161781556060820151600190910180546080909301519095166301000000026001600160b81b031990921692169190911717909155919050565b5f805f8051602061289b83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611052573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611076919061170a565b156110a25780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610502565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa1580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611118919061170a565b6111405760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610502565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015611192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b691906117b2565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b54906112026106bd565b604080516001600160601b0390931683526001600160a01b0390911660208301520160405180910390a1546001600160601b031692915050565b611244610b53565b61124c6112b2565b611255826112fa565b6001600160a01b03811661127c5760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061289b83398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6112ba610b53565b610b9c6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b611302610b53565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015611358573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137c919061170a565b6113a45760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610502565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6110c2806117d983390190565b5f602082840312156113e3575f80fd5b81356001600160e01b031981168114610517575f80fd5b6001600160a01b038116811461140e575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611434575f80fd5b813567ffffffffffffffff81111561144e5761144e611411565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561147d5761147d611411565b604052818152838201602001851015611494575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156114c3575f80fd5b84356114ce816113fa565b935060208501356114de816113fa565b9250604085013567ffffffffffffffff8111156114f9575f80fd5b61150587828801611425565b949793965093946060013593505050565b5f60208284031215611526575f80fd5b8135610517816113fa565b5f8060408385031215611542575f80fd5b823561154d816113fa565b9150602083013567ffffffffffffffff811115611568575f80fd5b61157485828601611425565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610517602083018461157e565b5f805f606084860312156115d0575f80fd5b83356115db816113fa565b925060208401356115eb816113fa565b9150604084013567ffffffffffffffff811115611606575f80fd5b61161286828701611425565b9150509250925092565b62ffffff8116811461140e575f80fd5b5f6020828403121561163c575f80fd5b81356105178161161c565b5f60208284031215611657575f80fd5b813567ffffffffffffffff81111561166d575f80fd5b61167984828501611425565b949350505050565b5f60208284031215611691575f80fd5b5035919050565b6001600160a01b038481168252831660208201526060604082018190525f906116c39083018461157e565b95945050505050565b5f602082840312156116dc575f80fd5b81516105178161161c565b6001600160a01b03831681526040602082018190525f906116799083018461157e565b5f6020828403121561171a575f80fd5b81518015158114610517575f80fd5b5f60208284031215611739575f80fd5b8151610517816113fa565b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ea57634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611787575f80fd5b5051919050565b5f6020828403121561179e575f80fd5b815164ffffffffff81168114610517575f80fd5b5f602082840312156117c2575f80fd5b81516001600160601b0381168114610517575f80fdfe60a060405234801561000f575f80fd5b506040516110c23803806110c283398101604081905261002e9161038a565b828282828161003d82826100ac565b50508160405161004c9061034e565b6001600160a01b039091168152602001604051809103905ff080158015610075573d5f803e3d5ffd5b506001600160a01b031660805261009361008e60805190565b61010a565b505f91506100a3905082826104de565b505050506105ae565b6100b582610177565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100fe576100f982826101f5565b505050565b610106610268565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101495f805160206110a2833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161017481610289565b50565b806001600160a01b03163b5f036101b157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516102119190610598565b5f60405180830381855af49150503d805f8114610249576040519150601f19603f3d011682016040523d82523d5f602084013e61024e565b606091505b50909250905061025f8583836102c6565b95945050505050565b34156102875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102b257604051633173bdd160e11b81525f60048201526024016101a8565b805f805160206110a28339815191526101d4565b6060826102db576102d682610325565b61031e565b81511580156102f257506001600160a01b0384163b155b1561031b57604051639996b31560e01b81526001600160a01b03851660048201526024016101a8565b50805b9392505050565b8051156103355780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104ef80610bb383390190565b80516001600160a01b0381168114610371575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561039c575f80fd5b6103a58461035b565b92506103b36020850161035b565b60408501519092506001600160401b038111156103ce575f80fd5b8401601f810186136103de575f80fd5b80516001600160401b038111156103f7576103f7610376565b604051601f8201601f19908116603f011681016001600160401b038111828210171561042557610425610376565b60405281815282820160200188101561043c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b600181811c9082168061046f57607f821691505b60208210810361048d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156100f957805f5260205f20601f840160051c810160208510156104b85750805b601f840160051c820191505b818110156104d7575f81556001016104c4565b5050505050565b81516001600160401b038111156104f7576104f7610376565b61050b81610505845461045b565b84610493565b6020601f82116001811461053d575f83156105265750848201515b5f19600385901b1c1916600184901b1784556104d7565b5f84815260208120601f198516915b8281101561056c578785015182556020948501946001909201910161054c565b508482101561058957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f920191825250919050565b6080516105e86105cb5f395f81816075015260a101526105e85ff3fe608060405260043610610028575f3560e01c8063514e2d93146100325780638b3240a01461005c575b61003061009f565b005b34801561003d575f80fd5b50610046610113565b6040516100539190610423565b60405180910390f35b348015610067575f80fd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610053565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361010b575f356001600160e01b03191663278f794360e11b14610101576040516334ad5dbb60e21b815260040160405180910390fd5b6101096101a7565b565b6101096101d5565b60605f805461012190610458565b80601f016020809104026020016040519081016040528092919081815260200182805461014d90610458565b80156101985780601f1061016f57610100808354040283529160200191610198565b820191905f5260205f20905b81548152906001019060200180831161017b57829003601f168201915b5050505050905090565b905090565b5f806101b63660048184610490565b8101906101c391906104cb565b915091506101d182826101e5565b5050565b6101096101e061023f565b610271565b6101ee8261028f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561023757610232828261030a565b505050565b6101d161037c565b5f6101a27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e80801561028b573d5ff35b3d5ffd5b806001600160a01b03163b5f036102c957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610326919061059c565b5f60405180830381855af49150503d805f811461035e576040519150601f19603f3d011682016040523d82523d5f602084013e610363565b606091505b509150915061037385838361039b565b95945050505050565b34156101095760405163b398979f60e01b815260040160405180910390fd5b6060826103b0576103ab826103fa565b6103f3565b81511580156103c757506001600160a01b0384163b155b156103f057604051639996b31560e01b81526001600160a01b03851660048201526024016102c0565b50805b9392505050565b80511561040a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061046c57607f821691505b60208210810361048a57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f808585111561049e575f80fd5b838611156104aa575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156104dc575f80fd5b82356001600160a01b03811681146104f2575f80fd5b9150602083013567ffffffffffffffff81111561050d575f80fd5b8301601f8101851361051d575f80fd5b803567ffffffffffffffff811115610537576105376104b7565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610566576105666104b7565b60405281815282820160200187101561057d575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea264697066735822122068eb3582d94c42ef5e17bc746088d0b2e5458c9bbe06da2bc30decce86f2b96964736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122063012ab3c3421087c307802be7295f03bec95db9eea702a4c2db9595befa162464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00a2646970667358221220df55e62c85a131c51331d792ff82bd1cb5d2fc43b2d961693fb69ffed56b748264736f6c634300081a00336080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6159d6806100d65f395ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c80636c1e9dff116101d4578063b283765d11610109578063d43a2623116100a9578063e8ce883d11610079578063e8ce883d146107df578063ea15869f146107f2578063ea48ce9b14610819578063ec0407d91461082c575f80fd5b8063d43a262314610793578063d44f8a4b146107a6578063de0eb85f146107b9578063dea4ccf2146107cc575f80fd5b8063bf7e214f116100e4578063bf7e214f1461075d578063c813d79114610765578063caed989714610778578063cdf73d5014610780575f80fd5b8063b283765d1461072f578063b423086c14610742578063b47f48881461074a575f80fd5b80638fb3603711610174578063a6bc7cb81161014f578063a6bc7cb8146106e2578063a71bfbb7146106f5578063ad12ad6014610708578063ada9652e1461071b575f80fd5b80638fb360371461069957806390edbd35146106ba578063958697a0146106cf575f80fd5b806376b707b7116101af57806376b707b71461065c5780637a9e5e4b1461067657806386c7575414610689578063893d20e814610691575f80fd5b80636c1e9dff146106235780636d387fe414610636578063719f761a14610649575f80fd5b806322f3e2d4116102b55780635741e5e9116102555780635fd1efec116102255780635fd1efec146105c5578063614d08f8146105d85780636291423a146105fe578063644c45e014610606575f80fd5b80635741e5e9146105665780635ab1bd531461056e5780635cbb7d851461057f5780635ecf260f146105b2575f80fd5b8063419197fe11610290578063419197fe1461052557806343d752d31461053857806344dcf7301461054057806349bb9e4b14610553575f80fd5b806322f3e2d4146104f75780632391b052146104ff578063329d6e7414610512575f80fd5b806313299604116103205780631eff4b22116102fb5780631eff4b22146104ad57806321df0da7146104d457806322366844146104dc57806322e16406146104e4575f80fd5b80631329960414610470578063138461e01461049057806317d7de7c14610498575f80fd5b806309980bfd1161035b57806309980bfd1461040c5780630d8e6e2c146104145780630fec111c1461043057806310a0638a14610445575f80fd5b806301ffc9a7146103815780630345861d146103c2578063062c9cdf146103d7575b5f80fd5b6103ad61038f366004614bcc565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6103d56103d0366004614c36565b61083f565b005b6103fe7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b6040519081526020016103b9565b6103d5610917565b61041c610b0d565b60405162ffffff90911681526020016103b9565b610438610b94565b6040516103b99190614c9b565b610458610453366004614d2f565b610d4e565b6040516001600160601b0390911681526020016103b9565b610478610ddb565b6040516001600160a01b0390911681526020016103b9565b610458610e43565b6104a0610e4d565b6040516103b99190614d4a565b6103fe7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610478610e5d565b6103ad610ea1565b6103d56104f2366004614c36565b610f97565b6103ad610ff1565b61045861050d366004614d5c565b611068565b6103d5610520366004614eab565b61125f565b6103d5610533366004614edc565b6113bd565b6104786115bd565b6103d561054e366004614f3e565b6115d8565b6103d5610561366004614f97565b61170a565b6103ad611818565b6001546001600160a01b0316610478565b61059261058d366004614fe3565b6118ce565b604080516001600160601b039384168152929091166020830152016103b9565b6103d56105c0366004614fff565b611bf0565b6103d56105d336600461502b565b611ce4565b6104a0604051806040016040528060078152602001665374616b696e6760c81b81525081565b610478611ea4565b5f80516020615961833981519152546001600160601b0316610458565b610458610631366004614fe3565b611ebf565b6103d5610644366004614fe3565b61215b565b610458610657366004614d2f565b612236565b6106646124d3565b60405160ff90911681526020016103b9565b6103d561068436600461502b565b612547565b6104786125c9565b6104786125e4565b6106a1612715565b6040516001600160e01b031990911681526020016103b9565b6106c261274a565b6040516103b99190615046565b6103d56106dd366004615094565b61276f565b6103d56106f03660046150d1565b6127b8565b6103d5610703366004614c36565b6128f3565b6103d56107163660046150fe565b612a52565b6103fe5f8051602061596183398151915281565b6103d561073d36600461502b565b612af5565b6106c2612c3c565b6103d5610758366004615143565b612c4c565b610478612d99565b6103d561077336600461515e565b612db4565b610478612df8565b6103d561078e36600461523d565b612e10565b6104586107a1366004614d5c565b612f6e565b6104586107b4366004615094565b612f8f565b6104586107c7366004614fe3565b613072565b6104586107da366004614d2f565b61309d565b6104586107ed366004614fe3565b613196565b6103fe7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0081565b610458610827366004615094565b6133f2565b61045861083a366004614d5c565b6134c5565b61084b335b5f366135be565b8161085981601f5b5f6136bc565b5f610862613950565b60030154604051630345861d60e01b81526001600160a01b0390911690630345861d906108959087908790600401615258565b60408051808303815f875af11580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d49190615290565b5090507ec60e9fa0b11ba4353f1efa957e6380e75820bcf5afd13713f0c7c268b18a5b848483604051610909939291906152bd565b60405180910390a150505050565b6001546001600160a01b0316331461094957604051632a6e1a8960e01b81523360048201526024015b60405180910390fd5b5f610952613950565b90505f61095d613950565b546040805163b201f70960e01b815290516001600160a01b039092169163b201f709916004808201926020929091908290030181865afa1580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c791906152e7565b905073__$51089c37ca0df1177a910c640c8c5f8165$__6350c6470d6109f56001546001600160a01b031690565b3084610a096001546001600160a01b031690565b6001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6891906152e7565b60405160e086901b6001600160e01b03191681526001600160a01b039485166004820152928416602484015290831660448301529091166064820152608401602060405180830381865af4158015610ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae691906152e7565b60019290920180546001600160a01b0319166001600160a01b039093169290921790915550565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610b6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f9190615302565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610c40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c64919061532f565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610cac6125e4565b6001600160a01b03168152602001826001018054610cc99061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf59061534a565b8015610d405780601f10610d1757610100808354040283529160200191610d40565b820191905f5260205f20905b815481529060010190602001808311610d2357829003601f168201915b505050505081525091505090565b5f610d5833610844565b81610d6781601e5b60016136bc565b5f610d70613950565b600381015460405163085031c560e11b81526001600160601b03871660048201529192506001600160a01b0316906310a0638a906024015f604051808303815f87803b158015610dbe575f80fd5b505af1158015610dd0573d5f803e3d5ffd5b505050505050919050565b5f610de46115bd565b6001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f91906152e7565b5f610b8f30613974565b6060610e5761274a565b51919050565b5f610e666115bd565b6001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1f573d5f803e3d5ffd5b5f610eb46001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610ef8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1c919061532f565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f9190615391565b610fa033610844565b610fa86125e4565b6001600160a01b0316336001600160a01b031614610fdb5760405163086391f760e31b8152336004820152602401610940565b610fed610fe6613950565b8383613bb6565b5050565b5f610ffa612d99565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa15801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190615391565b15905090565b5f61107233610844565b8361107e81601f610853565b5f611087613950565b6002810154604051627c1b7d60e71b81529192506001600160a01b031690633e0dbe80906110bb9089908890600401615258565b6020604051808303815f875af11580156110d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fb919061532f565b60038201546040516351486e7d60e01b81529194506001600160a01b0316906351486e7d906111349086908a9089908b906004016153aa565b6020604051808303815f875af1158015611150573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117491906153de565b506040516330b8415f60e01b81526001600160601b038616600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156111cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ef9190615391565b1561125657600281015460405163f71c4cef60e01b81526001600160a01b039091169063f71c4cef906112289088908890600401615258565b5f604051808303815f87803b15801561123f575f80fd5b505af1158015611251573d5f803e3d5ffd5b505050505b50509392505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c611281610b0d565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156112bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e391906153f9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b900460ff1680611328575080546001600160401b03808416911610155b156113465760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561137083613d07565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6113c633610844565b6113ce6125e4565b6001600160a01b0316336001600160a01b0316146114015760405163086391f760e31b8152336004820152602401610940565b5f61140a613950565b6001810154604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f9173__$3bac17678db7ae928afa209f2f44deec9c$__91634c41dd96919087169063dd62ed3e90604401602060405180830381865afa15801561147b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149f919061541f565b6040518263ffffffff1660e01b81526004016114bd91815260200190565b602060405180830381865af41580156114d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc919061532f565b60028301546040516320c8cbff60e11b81526001600160a01b0387811660048301526001600160601b038716602483015292935091169063419197fe906044015f604051808303815f87803b158015611553575f80fd5b505af1158015611565573d5f803e3d5ffd5b5050604080516001600160a01b03881681526001600160601b0380881660208301528516918101919091527fd04c7a08e8de83264477350e162e0d3e26406e3eaf786d06d976ea7f229d5c4e92506060019050610909565b5f6115c6613950565b600101546001600160a01b0316919050565b6115e133610844565b6115e9613950565b60030154604051639a148b7f60e01b81526001600160601b038616600482015260ff8516602482015264ffffffffff841660448201526001600160a01b03838116606483015290911690639a148b7f906084015f604051808303815f87803b158015611653575f80fd5b505af1158015611665573d5f803e3d5ffd5b505050507fc849e103742be0a3f6a0ce76fbdbf4c40caa5cd6eb6bdee9c12c925cff885fa58484848473__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156116d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f9919061532f565b604051610909959493929190615436565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561174e5750825b90505f826001600160401b031660011480156117695750303b155b905081158015611777575080155b156117955760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117bf57845460ff60401b1916600160401b1785555b6117c98787613d28565b831561180f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f611821610ea1565b156118a5576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa158015611875573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261189c91908101906154d1565b60600151905090565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f015460ff1690565b5f806118d933610844565b836118e581601e610d60565b836118f181601f610853565b5f6118fa613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316630ad044ce8860018073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561196c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611990919061532f565b60405160e086901b6001600160e01b03191681526001600160601b0394851660048201529215156024840152901515604483015290911660648201526084016020604051808303815f875af11580156119eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0f919061532f565b93505f611a246001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038a1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9591906152e7565b6002830154604051627c1b7d60e71b81529192506001600160a01b031690633e0dbe8090611ac9908a908590600401615258565b6020604051808303815f875af1158015611ae5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b09919061532f565b60038301546040516351486e7d60e01b81529197506001600160a01b0316906351486e7d90611b429089908b9086908b906004016153aa565b6020604051808303815f875af1158015611b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8291906153de565b50604080516001600160601b0388811682528981166020830152878116828401526001600160a01b03841660608301528a16608082015290517fb83b505434e350ef4d02aa4d11d8c3bf9903b943ecba24fffa1061de4a109e199181900360a00190a1505050509250929050565b611bf933610844565b81611c0581601f610853565b5f611c0e613950565b60030154604051635ecf260f60e01b81526001600160601b038616600482015264ffffffffff851660248201526001600160a01b0390911690635ecf260f9060440160408051808303815f875af1158015611c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8f91906155a1565b50604080516001600160601b038716815264ffffffffff80871660208301528316918101919091529091507f30c0fd8161ee020f45ae168e89fb340e68c952a10aad14f7a895dc9393818e4690606001610909565b611ced33610844565b611cf56125e4565b6001600160a01b0316336001600160a01b031614611d285760405163086391f760e31b8152336004820152602401610940565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9291906152e7565b6001600160a01b031614611e2557806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0091906152e7565b604051631641c88f60e11b81526001600160a01b039091166004820152602401610940565b5f611e2e613950565b600401546001600160a01b0316905081611e46613950565b60040180546001600160a01b0319166001600160a01b0392831617905560408051848316815291831660208301527f8414c1d6352c513484c229579bca3842a94d9c46e1dd28ec9b03c9b3d5a4ae4291015b60405180910390a15050565b5f611ead613950565b600401546001600160a01b0316919050565b5f611ec933610844565b82611ed581601e610d60565b5f611ede613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b03166359386f8e8660018073__$71e292c09eace9601b3e21e68a1278917a$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7491906153de565b6040516001600160e01b031960e087901b1681526001600160601b0394851660048201529215156024840152901515604483015264ffffffffff166064820152908716608482015260a4015f604051808303815f87803b158015611fd6575f80fd5b505af1158015611fe8573d5f803e3d5ffd5b50506040516330b8415f60e01b81526001600160601b038716600482015273__$3bac17678db7ae928afa209f2f44deec9c$__92506330b8415f9150602401602060405180830381865af4158015612042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120669190615391565b15612153575f61207e6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156120cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ef91906152e7565b600283015460405163f71c4cef60e01b81529192506001600160a01b03169063f71c4cef906121249088908590600401615258565b5f604051808303815f87803b15801561213b575f80fd5b505af115801561214d573d5f803e3d5ffd5b50505050505b505092915050565b61216433610844565b8161217081601f610853565b612178613950565b60030154604051631b4e1ff960e21b81526001600160601b038086166004830152841660248201526001600160a01b0390911690636d387fe49060440160408051808303815f875af11580156121d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f491906155bd565b5050604080516001600160601b038086168252841660208201527ff595ceebb66e043dea95b0b28e85ab6e8200e13aca74757365131310dc01793c91016113b0565b5f61224033610844565b8161224c81601e610d60565b5f612255613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316634a923f0c85600173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156122c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ea919061532f565b60405160e085901b6001600160e01b03191681526001600160601b039384166004820152911515602483015290911660448201526064015b6020604051808303815f875af115801561233e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612362919061532f565b6040516330b8415f60e01b81526001600160601b038216600482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156123bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123df9190615391565b156124cc575f6123f76001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612444573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246891906152e7565b6002830154604051630cb9145560e41b81529192506001600160a01b03169063cb9145509061249d9087908590600401615258565b5f604051808303815f87803b1580156124b4575f80fd5b505af11580156124c6573d5f803e3d5ffd5b50505050505b5050919050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015612523573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f91906155d9565b33612550612d99565b6001600160a01b0316816001600160a01b03161461258b5760405162d1953b60e31b81526001600160a01b0382166004820152602401610940565b816001600160a01b03163b5f036125c0576040516361798f2f60e11b81526001600160a01b0383166004820152602401610940565b610fed82613fa0565b5f6125d2613950565b600301546001600160a01b0316919050565b5f805f8051602061596183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612650573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126749190615391565b156126ff576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156126d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f991906152e7565b91505090565b54600160601b90046001600160a01b0316919050565b5f8051602061598183398151915280545f9190600160a01b900460ff1661273c575f6126f9565b638fb3603760e01b91505090565b612752614ba3565b61275a610ea1565b1561276757610b8f613ff9565b610b8f612c3c565b61277833610844565b6127806125e4565b6001600160a01b0316336001600160a01b0316146127b35760405163086391f760e31b8152336004820152602401610940565b505050565b6127c133610844565b6127c96125e4565b6001600160a01b0316336001600160a01b0316146127fc5760405163086391f760e31b8152336004820152602401610940565b5f80612806613950565b600301546040516314d78f9760e31b81526001600160a01b039091169063a6bc7cb89061283b908890889088906004016152bd565b60408051808303815f875af1158015612856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061287a9190615290565b604080516001600160601b03891681526001600160a01b03808916602083015280881692820192909252908316606082015264ffffffffff8216608082015291935091507f519b91b3c7a09332814e208f4ff950747fd39d6aa537517322893c161f6ac9459060a0015b60405180910390a15050505050565b6128fc33610844565b8161290881601f610853565b5f612911613950565b6040516301f8588560e51b81526001600160601b03861660048201529091505f9073__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af415801561296c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612990919061532f565b905061299d828286613bb6565b600382015460405163a71bfbb760e01b81526001600160a01b039091169063a71bfbb7906129d19088908890600401615258565b5f604051808303815f87803b1580156129e8575f80fd5b505af11580156129fa573d5f803e3d5ffd5b5050604080516001600160601b03808a168252851660208201526001600160a01b038816918101919091527f7a2e316a9c20094b9155914cb3caab21339f9fc6d45d341144e1c25011031328925060600190506128e4565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612abd91906152e7565b6001600160a01b0316336001600160a01b031614612aef5760405162f0630960e01b8152336004820152602401610940565b50505050565b612afe33610844565b612b066125e4565b6001600160a01b0316336001600160a01b031614612b395760405163086391f760e31b8152336004820152602401610940565b5f612b42613950565b6003810154600480830154604051630345861d60e01b81529394505f9384936001600160a01b031692630345861d92612b8f92600160a01b9091046001600160601b031691899101615258565b60408051808303815f875af1158015612baa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bce9190615290565b600485015460408051600160a01b9092046001600160601b031682526001600160a01b03888116602084015284169082015264ffffffffff8216606082015291935091507f089233199b2878dc789e4ec6789758b5d04a0df1cd1e2f75b8e1077b0ed7806b90608001610909565b612c44614ba3565b610b8f613ff9565b612c5533610844565b612c5d6125e4565b6001600160a01b0316336001600160a01b031614612c905760405163086391f760e31b8152336004820152602401610940565b5f612c99613950565b6003810154600480830154604051635ecf260f60e01b8152600160a01b9091046001600160601b03169181019190915264ffffffffff851660248201529192505f9182916001600160a01b031690635ecf260f9060440160408051808303815f875af1158015612d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d2f91906155a1565b600485015460408051600160a01b9092046001600160601b0316825264ffffffffff8881166020840152848116918301919091528216606082015291935091507f4de81d4f6acfa293451d20e78b7ce05c2e9f676381b7e41b986c75e7ce10491c90608001610909565b5f80516020615981833981519152546001600160a01b031690565b612dbd33610844565b612dc56125e4565b6001600160a01b0316336001600160a01b031614610fed5760405163086391f760e31b8152336004820152602401610940565b5f612e01613950565b546001600160a01b0316919050565b612e1933610844565b612e216125e4565b6001600160a01b0316336001600160a01b031614612e545760405163086391f760e31b8152336004820152602401610940565b5f612e5d613950565b60028101549091506001600160a01b031673__$f048dbd5170c0ac319fa0222065b281d84$__63cf7601bf612e9a6001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260ff86166024820152604401602060405180830381865af4158015612ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f0991906152e7565b6002830180546001600160a01b0319166001600160a01b039283169081179091556040805191825260ff86166020830152918316918101919091527f0d3c2937ad932ccd841592977cdeb6dabbfb6fc4df9d7569f35a84f0864ac3c5906060016113b0565b5f612f7833610844565b83612f8481601f610853565b6112568585856140dd565b5f612f9933610844565b5f612fa2613950565b600381015460405163d44f8a4b60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152908716604483015292935091169063d44f8a4b906064016020604051808303815f875af1158015613007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302b919061532f565b91507f7e242460dd6c92d78287e1000e16b4bc99b2e4b3c6377c63c83dd83845302ec48585858560405161306294939291906155f4565b60405180910390a1509392505050565b5f61307c33610844565b8261308881601f610853565b336130948585836140dd565b50505092915050565b5f6130a733610844565b816130b381601e610d60565b5f6130bc613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316630ad044ce8560018073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561312e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613152919061532f565b60405160e086901b6001600160e01b03191681526001600160601b039485166004820152921515602484015290151560448301529091166064820152608401612322565b5f6131a033610844565b826131ac81601f610853565b5f613227856131c36001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613222919061532f565b614251565b15613264576132346125e4565b9050336001600160a01b0382161461325f57604051631928390360e21b815260040160405180910390fd5b6133de565b60405163f2c821f760e01b81526001600160601b038616600482015273__$dacf551d137a232f87fa09e79113e25430$__9063f2c821f790602401602060405180830381865af41580156132ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132de9190615391565b15613396576001546001600160a01b0316604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561333c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336091906152e7565b9050336001600160a01b0382161461325f57604051635520388f60e01b81526001600160601b0386166004820152602401610940565b60405162461bcd60e51b815260206004820181905260248201527f43726f73732d636861696e20746172676574206e6f7420737570706f727465646044820152606401610940565b6133e98585836142dc565b95945050505050565b5f6133fc33610844565b5f613405613950565b600381015460405163ea48ce9b60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152908716604483015292935091169063ea48ce9b906064016020604051808303815f875af115801561346a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348e919061532f565b91507f4bfa3a293bec95a822b40b97aefb460cdc94363179f8636f068f2a569b0790678585858560405161306294939291906155f4565b5f6134cf33610844565b836134db81601f610853565b6134f1856131c36001546001600160a01b031690565b1561352157604051632778739960e11b81526001600160601b038616600482015260016024820152604401610940565b5f6135346001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015613581573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135a591906152e7565b90506135b28686836142dc565b9250505b509392505050565b5f805160206159818339815191525f806135f66135d9612d99565b87306135e860045f8a8c615628565b6135f19161564f565b61441b565b91509150816136b45763ffffffff81161561369157825460ff60a01b1916600160a01b178355613624612d99565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161365393929190615687565b5f604051808303815f87803b15801561366a575f80fd5b505af115801561367c573d5f803e3d5ffd5b5050845460ff60a01b19168555506136b49050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610940565b505050505050565b5f6136c5613950565b905060ff8316601e03613774576003810154604051634f9c1c0960e01b81526001600160601b03861660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015613723573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137479190615391565b61376f57604051632ab4595b60e11b81526001600160601b0385166004820152602401610940565b61388e565b60ff8316601f0361388e57806003015f9054906101000a90046001600160a01b03166001600160a01b0316633a208dc76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137f591906152e7565b604051634f9c1c0960e01b81526001600160601b03861660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa158015613842573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138669190615391565b61388e576040516396cff01560e01b81526001600160601b0385166004820152602401610940565b8115612aef575f6138a76001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156138f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061391891906152e7565b9050336001600160a01b0382161461394957848133604051630807d41d60e41b8152600401610940939291906152bd565b5050505050565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b5f805f8051602061596183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156139e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a049190615391565b15613a305780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610940565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613a82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aa69190615391565b613ace5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610940565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b44919061532f565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b5490613b906125e4565b604051613b9e929190615258565b60405180910390a1546001600160601b031692915050565b6003830154604051635809c85d60e01b81526001600160a01b0390911690635809c85d90613bea9085908590600401615258565b6040805180830381865afa158015613c04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c2891906156c6565b6020015160405163790a38ad60e01b815264ffffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015613c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca59190615391565b156127b3576003830154604051631170b20360e11b81526001600160a01b03909116906322e1640690613cde9085908590600401615258565b5f604051808303815f87803b158015613cf5575f80fd5b505af115801561180f573d5f803e3d5ffd5b613d0f614523565b60405163502ec37160e01b815260040160405180910390fd5b613d30614523565b5f805f83806020019051810190613d479190615724565b91945092509050825f613d58613950565b9050816001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dba919061532f565b600480830180546001600160601b0393909316600160a01b026001600160a01b039384161790556003830180549286166001600160a01b0319939093168317905560408051633148a11d60e11b81529051636291423a928281019260209291908290030181865afa158015613e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e5591906152e7565b600482810180546001600160a01b03199081166001600160a01b0394851617909155835416868316178355604080516307158bc560e51b81529051613f879386169263e2b178a0928082019260209290918290030181865afa158015613ebd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ee191906152e7565b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f42919061532f565b6040805180820190915260078152665374616b696e6760c81b602082015260035f8d60405180602001604052805f81525060405180602001604052805f81525061456e565b613f908161464a565b61180f63667de56960e01b6147e6565b5f8051602061598183398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602001611e98565b614001614ba3565b5f7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0090506040518060600160405280825f01805461403e9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461406a9061534a565b80156140b55780601f1061408c576101008083540402835291602001916140b5565b820191905f5260205f20905b81548152906001019060200180831161409857829003601f168201915b505050505081526020015f6001600160a01b03168152602001826002018054610cc99061534a565b5f806140e7613950565b600381015460405163de0eb85f60e01b81526001600160601b038089166004830152871660248201529192506001600160a01b03169063de0eb85f906044016020604051808303815f875af1158015614142573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614166919061532f565b6040516330b8415f60e01b81526001600160601b038616600482015290925073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156141bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141e39190615391565b156135b657600281015460405163f71c4cef60e01b81526001600160a01b039091169063f71c4cef9061421c9087908790600401615258565b5f604051808303815f87803b158015614233575f80fd5b505af1158015614245573d5f803e3d5ffd5b50505050509392505050565b60405163c4cade9d60e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__9063c4cade9d90604401602060405180830381865af41580156142b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142d59190615391565b9392505050565b5f806142e6613950565b600381015460405163e8ce883d60e01b81526001600160601b038089166004830152871660248201529192506001600160a01b03169063e8ce883d906044016020604051808303815f875af1158015614341573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614365919061532f565b6040516330b8415f60e01b81526001600160601b038616600482015290925073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156143be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143e29190615391565b156135b6576002810154604051630cb9145560e41b81526001600160a01b039091169063cb9145509061421c9087908790600401615258565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516144899190615763565b5f60405180830381855afa9150503d805f81146144c1576040519150601f19603f3d011682016040523d82523d5f602084013e6144c6565b606091505b509150915081156145185760408151106144f857808060200190518101906144ee9190615779565b9094509250614518565b602081511061451857808060200190518101906145159190615391565b93505b505094509492505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661456c57604051631afcd79f60e31b815260040160405180910390fd5b565b614576614523565b85515f036145975760405163591eebf360e11b815260040160405180910390fd5b6145a689898988888888614819565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00806145d288826157ef565b5060018101805460ff1916861515179055600281016145f183826157ef565b506145fc600b614960565b6003820180546001600160a01b0319166001600160a01b039290921691909117905561462e634a531f3360e01b6147e6565b61463e6306e9e5ff60e31b6147e6565b50505050505050505050565b600381015460048083015460405163153d412560e31b8152600160a01b9091046001600160601b0316918101919091525f916001600160a01b03169063a9ea09289060240161012060405180830381865afa1580156146ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146cf91906158a9565b604080820151905163790a38ad60e01b815264ffffffffff909116600482015290915073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af415801561472c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147509190615391565b156147885760048281015460405163686c563560e11b8152600160a01b9091046001600160601b031691810191909152602401610940565b7fc849e103742be0a3f6a0ce76fbdbf4c40caa5cd6eb6bdee9c12c925cff885fa58260040160149054906101000a90046001600160601b03168260c001518360a001518460e001518560800151604051611e98959493929190615436565b6147ee614523565b614816816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b614821614523565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af4158015614877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061489b9190615391565b6148c35760405163cf6935e560e01b81526001600160a01b0388166004820152602401610940565b6148cc876149f7565b6148d68683614a08565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161494583826157ef565b50614956634a531f3360e01b6147e6565b5050505050505050565b5f6149736001546001600160a01b031690565b6001600160a01b031663d39e60438361498a6124d3565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156149cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149f191906152e7565b92915050565b6149ff614523565b61481681614a7e565b614a10614523565b614a18614a8f565b614a2182614ad7565b6001600160a01b038116614a485760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061596183398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b614a86614523565b61481681613fa0565b614a97614523565b61456c6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b614adf614523565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b599190615391565b614b815760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610940565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060600160405280606081526020015f6001600160a01b03168152602001606081525090565b5f60208284031215614bdc575f80fd5b81356001600160e01b0319811681146142d5575f80fd5b6001600160601b0381168114614816575f80fd5b8035614c1281614bf3565b919050565b6001600160a01b0381168114614816575f80fd5b8035614c1281614c17565b5f8060408385031215614c47575f80fd5b8235614c5281614bf3565b91506020830135614c6281614c17565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614ce3608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614d27610100840182614c6d565b949350505050565b5f60208284031215614d3f575f80fd5b81356142d581614bf3565b602081525f6142d56020830184614c6d565b5f805f60608486031215614d6e575f80fd5b8335614d7981614bf3565b92506020840135614d8981614bf3565b91506040840135614d9981614c17565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715614ddb57614ddb614da4565b60405290565b60405160e081016001600160401b0381118282101715614ddb57614ddb614da4565b604051601f8201601f191681016001600160401b0381118282101715614e2b57614e2b614da4565b604052919050565b5f6001600160401b03821115614e4b57614e4b614da4565b50601f01601f191660200190565b5f82601f830112614e68575f80fd5b8135614e7b614e7682614e33565b614e03565b818152846020838601011115614e8f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614ebb575f80fd5b81356001600160401b03811115614ed0575f80fd5b614d2784828501614e59565b5f8060408385031215614eed575f80fd5b8235614ef881614c17565b91506020830135614c6281614bf3565b60ff81168114614816575f80fd5b8035614c1281614f08565b64ffffffffff81168114614816575f80fd5b8035614c1281614f21565b5f805f8060808587031215614f51575f80fd5b8435614f5c81614bf3565b93506020850135614f6c81614f08565b92506040850135614f7c81614f21565b91506060850135614f8c81614c17565b939692955090935050565b5f8060408385031215614fa8575f80fd5b8235614fb381614c17565b915060208301356001600160401b03811115614fcd575f80fd5b614fd985828601614e59565b9150509250929050565b5f8060408385031215614ff4575f80fd5b8235614ef881614bf3565b5f8060408385031215615010575f80fd5b823561501b81614bf3565b91506020830135614c6281614f21565b5f6020828403121561503b575f80fd5b81356142d581614c17565b602081525f8251606060208401526150616080840182614c6d565b60208501516001600160a01b0316604085810191909152850151848203601f190160608601529091506133e98282614c6d565b5f805f606084860312156150a6575f80fd5b83356150b181614bf3565b925060208401356150c181614c17565b91506040840135614d9981614bf3565b5f805f606084860312156150e3575f80fd5b83356150ee81614bf3565b92506020840135614d8981614c17565b5f805f8060808587031215615111575f80fd5b843561511c81614c17565b9350602085013561512c81614c17565b9250604085013591506060850135614f8c81614c17565b5f60208284031215615153575f80fd5b81356142d581614f21565b5f80828403610140811215615171575f80fd5b833561517c81614bf3565b9250610120601f1982011215615190575f80fd5b50615199614db8565b6151a560208501614c07565b81526151b360408501614c07565b60208201526151c460608501614f33565b60408201526151d560808501614c07565b60608201526151e660a08501614c07565b60808201526151f760c08501614f33565b60a082015261520860e08501614f16565b60c082015261521a6101008501614c2b565b60e082015261522c6101208501614c07565b610100820152809150509250929050565b5f6020828403121561524d575f80fd5b81356142d581614f08565b6001600160601b039290921682526001600160a01b0316602082015260400190565b8051614c1281614c17565b8051614c1281614f21565b5f80604083850312156152a1575f80fd5b82516152ac81614c17565b6020840151909250614c6281614f21565b6001600160601b039390931683526001600160a01b03918216602084015216604082015260600190565b5f602082840312156152f7575f80fd5b81516142d581614c17565b5f60208284031215615312575f80fd5b815162ffffff811681146142d5575f80fd5b8051614c1281614bf3565b5f6020828403121561533f575f80fd5b81516142d581614bf3565b600181811c9082168061535e57607f821691505b60208210810361537c57634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114614c12575f80fd5b5f602082840312156153a1575f80fd5b6142d582615382565b6001600160601b03948516815292841660208401526001600160a01b03919091166040830152909116606082015260800190565b5f602082840312156153ee575f80fd5b81516142d581614f21565b5f60208284031215615409575f80fd5b81516001600160401b03811681146142d5575f80fd5b5f6020828403121561542f575f80fd5b5051919050565b6001600160601b03958616815260ff94909416602085015264ffffffffff9290921660408401526001600160a01b03166060830152909116608082015260a00190565b8051614c1281614f08565b5f82601f830112615493575f80fd5b81516154a1614e7682614e33565b8181528460208386010111156154b5575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156154e1575f80fd5b81516001600160401b038111156154f6575f80fd5b820160e08185031215615507575f80fd5b61550f614de1565b61551882615324565b815261552660208301615324565b602082015261553760408301615479565b604082015261554860608301615382565b60608201526155596080830161527a565b608082015261556a60a0830161527a565b60a082015260c08201516001600160401b03811115615587575f80fd5b61559386828501615484565b60c083015250949350505050565b5f80604083850312156155b2575f80fd5b82516152ac81614f21565b5f80604083850312156155ce575f80fd5b82516152ac81614bf3565b5f602082840312156155e9575f80fd5b81516142d581614f08565b6001600160601b0394851681526001600160a01b039390931660208401529083166040830152909116606082015260800190565b5f8085851115615636575f80fd5b83861115615642575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615680576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60408284031280156156d7575f80fd5b50604080519081016001600160401b03811182821017156156fa576156fa614da4565b604052825161570881614c17565b8152602083015161571881614f21565b60208201529392505050565b5f805f60608486031215615736575f80fd5b835161574181614c17565b602085015190935061575281614c17565b6040850151909250614d9981614c17565b5f82518060208501845e5f920191825250919050565b5f806040838503121561578a575f80fd5b61579383615382565b9150602083015163ffffffff81168114614c62575f80fd5b601f8211156127b357805f5260205f20601f840160051c810160208510156157d05750805b601f840160051c820191505b81811015613949575f81556001016157dc565b81516001600160401b0381111561580857615808614da4565b61581c81615816845461534a565b846157ab565b6020601f82116001811461584e575f83156158375750848201515b5f19600385901b1c1916600184901b178455613949565b5f84815260208120601f198516915b8281101561587d578785015182556020948501946001909201910161585d565b508482101561589a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6101208284031280156158bb575f80fd5b506158c4614db8565b6158cd83615324565b81526158db60208401615324565b60208201526158ec60408401615285565b60408201526158fd60608401615324565b606082015261590e60808401615324565b608082015261591f60a08401615285565b60a082015261593060c08401615479565b60c082015261594160e0840161527a565b60e08201526159536101008401615324565b610100820152939250505056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220b0e35fe9c25192092bd35f1269d644ab73840fd64ec836bc117a3ddd0198720764736f6c634300081a003360a060405234801561000f575f80fd5b506040516110c23803806110c283398101604081905261002e9161038a565b828282828161003d82826100ac565b50508160405161004c9061034e565b6001600160a01b039091168152602001604051809103905ff080158015610075573d5f803e3d5ffd5b506001600160a01b031660805261009361008e60805190565b61010a565b505f91506100a3905082826104de565b505050506105ae565b6100b582610177565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100fe576100f982826101f5565b505050565b610106610268565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101495f805160206110a2833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161017481610289565b50565b806001600160a01b03163b5f036101b157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516102119190610598565b5f60405180830381855af49150503d805f8114610249576040519150601f19603f3d011682016040523d82523d5f602084013e61024e565b606091505b50909250905061025f8583836102c6565b95945050505050565b34156102875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102b257604051633173bdd160e11b81525f60048201526024016101a8565b805f805160206110a28339815191526101d4565b6060826102db576102d682610325565b61031e565b81511580156102f257506001600160a01b0384163b155b1561031b57604051639996b31560e01b81526001600160a01b03851660048201526024016101a8565b50805b9392505050565b8051156103355780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104ef80610bb383390190565b80516001600160a01b0381168114610371575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561039c575f80fd5b6103a58461035b565b92506103b36020850161035b565b60408501519092506001600160401b038111156103ce575f80fd5b8401601f810186136103de575f80fd5b80516001600160401b038111156103f7576103f7610376565b604051601f8201601f19908116603f011681016001600160401b038111828210171561042557610425610376565b60405281815282820160200188101561043c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b600181811c9082168061046f57607f821691505b60208210810361048d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156100f957805f5260205f20601f840160051c810160208510156104b85750805b601f840160051c820191505b818110156104d7575f81556001016104c4565b5050505050565b81516001600160401b038111156104f7576104f7610376565b61050b81610505845461045b565b84610493565b6020601f82116001811461053d575f83156105265750848201515b5f19600385901b1c1916600184901b1784556104d7565b5f84815260208120601f198516915b8281101561056c578785015182556020948501946001909201910161054c565b508482101561058957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f920191825250919050565b6080516105e86105cb5f395f81816075015260a101526105e85ff3fe608060405260043610610028575f3560e01c8063514e2d93146100325780638b3240a01461005c575b61003061009f565b005b34801561003d575f80fd5b50610046610113565b6040516100539190610423565b60405180910390f35b348015610067575f80fd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610053565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361010b575f356001600160e01b03191663278f794360e11b14610101576040516334ad5dbb60e21b815260040160405180910390fd5b6101096101a7565b565b6101096101d5565b60605f805461012190610458565b80601f016020809104026020016040519081016040528092919081815260200182805461014d90610458565b80156101985780601f1061016f57610100808354040283529160200191610198565b820191905f5260205f20905b81548152906001019060200180831161017b57829003601f168201915b5050505050905090565b905090565b5f806101b63660048184610490565b8101906101c391906104cb565b915091506101d182826101e5565b5050565b6101096101e061023f565b610271565b6101ee8261028f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561023757610232828261030a565b505050565b6101d161037c565b5f6101a27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e80801561028b573d5ff35b3d5ffd5b806001600160a01b03163b5f036102c957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610326919061059c565b5f60405180830381855af49150503d805f811461035e576040519150601f19603f3d011682016040523d82523d5f602084013e610363565b606091505b509150915061037385838361039b565b95945050505050565b34156101095760405163b398979f60e01b815260040160405180910390fd5b6060826103b0576103ab826103fa565b6103f3565b81511580156103c757506001600160a01b0384163b155b156103f057604051639996b31560e01b81526001600160a01b03851660048201526024016102c0565b50805b9392505050565b80511561040a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061046c57607f821691505b60208210810361048a57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f808585111561049e575f80fd5b838611156104aa575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156104dc575f80fd5b82356001600160a01b03811681146104f2575f80fd5b9150602083013567ffffffffffffffff81111561050d575f80fd5b8301601f8101851361051d575f80fd5b803567ffffffffffffffff811115610537576105376104b7565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610566576105666104b7565b60405281815282820160200187101561057d575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea264697066735822122068eb3582d94c42ef5e17bc746088d0b2e5458c9bbe06da2bc30decce86f2b96964736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122063012ab3c3421087c307802be7295f03bec95db9eea702a4c2db9595befa162464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103",
607
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610127575f3560e01c80637b1391a6116100a9578063ada9652e1161006e578063ada9652e146103a2578063b88da759146103b6578063c987336c146103c9578063f5c1b5a7146103dc578063fd0c63d9146103ef575f80fd5b80637b1391a614610353578063893d20e8146103645780638e9afce61461036c578063933a9ce81461037f578063946dfcfe14610390575f80fd5b80631775564d116100ef5780631775564d146101e65780632db5b86f146102065780634d459c90146102195780635ab1bd5314610325578063644c45e014610336575f80fd5b806301ffc9a71461012b578063044995821461016c5780630900f010146101975780630d8e6e2c146101aa578063138461e0146101c6575b5f80fd5b6101576101393660046113d3565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61017f61017a3660046114b0565b6103f7565b6040516001600160a01b039091168152602001610163565b61017f6101a5366004611516565b6104ca565b6101b261051e565b60405162ffffff9091168152602001610163565b6101ce61058e565b6040516001600160601b039091168152602001610163565b6101f96101f4366004611531565b610598565b60405161016391906115ac565b61017f6102143660046115be565b6105f0565b6102c861022736600461162c565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525062ffffff9081165f90815260036020908152604091829020825160a08101845281546001600160a01b03808216835264ffffffffff600160a01b8304811695840195909552600160c81b909104909316938101939093526001015492831660608301526301000000909204909116608082015290565b604051610163919081516001600160a01b03908116825260208084015164ffffffffff908116918401919091526040808501519091169083015260608084015162ffffff1690830152608092830151169181019190915260a00190565b6001546001600160a01b031661017f565b5f8051602061289b833981519152546001600160601b03166101ce565b6005546001600160a01b031661017f565b61017f6106bd565b6101f961037a366004611647565b6107ee565b6002546001600160a01b031661017f565b6004545b604051908152602001610163565b6103945f8051602061289b83398151915281565b6101b26103c4366004611681565b610841565b61017f6103d7366004611531565b61087f565b61017f6103ea3660046114b0565b610a21565b6101ce610b3c565b5f610400610b53565b5f8061040b87610b9e565b9150915083868261041c8589610598565b604051610428906113c6565b61043493929190611698565b8190604051809103905ff5905080158015610451573d5f803e3d5ffd5b50600280546001600160a01b0319166001600160a01b039290921691909117905561047c8683610be0565b6040516001600160a01b038881168252919450908416907f78922e3fa1abc96399973cb25528ba892214b57da9d1a573937c460d9f5eb4759060200160405180910390a25050949350505050565b5f6104d36106bd565b6001600160a01b0316336001600160a01b03161461050b5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6060610517838261087f565b9392505050565b600254604080516303639b8b60e21b815290515f926001600160a01b031691630d8e6e2c9160048083019260209291908290030181865afa158015610565573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058991906116cc565b905090565b5f61058930610fe6565b60606349bb9e4b60e01b83836040516024016105b59291906116e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b92915050565b5f6105f9610b53565b5f8061060486610b9e565b9150915084816106148487610598565b604051610620906113c6565b61062c93929190611698565b604051809103905ff080158015610645573d5f803e3d5ffd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556106708583610be0565b6040516001600160a01b038781168252919450908416907f78922e3fa1abc96399973cb25528ba892214b57da9d1a573937c460d9f5eb4759060200160405180910390a250509392505050565b5f805f8051602061289b83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074d919061170a565b156107d8576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156107ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d29190611729565b91505090565b54600160601b90046001600160a01b0316919050565b606063329d6e7460e01b8260405160240161080991906115ac565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b5f6004828154811061085557610855611744565b905f5260205f2090600a91828204019190066003029054906101000a900462ffffff169050919050565b5f6108886106bd565b6001600160a01b0316336001600160a01b0316146108bb5760405163086391f760e31b8152336004820152602401610502565b6004545f036108dd5760405163366dfd2160e21b815260040160405180910390fd5b5f6108e66106bd565b90505f6108fb6002546001600160a01b031690565b6001600160a01b0316638b3240a06040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610937573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095b9190611729565b6002549091506001600160a01b03908116908216639623609d828861097f896107ee565b6040518463ffffffff1660e01b815260040161099d93929190611698565b5f604051808303815f87803b1580156109b4575f80fd5b505af11580156109c6573d5f803e3d5ffd5b505050506109d48684610be0565b6040516001600160a01b038881168252919550908516907f1356a2c922be684528fa1759d1808395e5c5010181dd333cdb6f03e2d8545b659060200160405180910390a250505092915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080545f9190600160401b810460ff16159067ffffffffffffffff168381158015610a695750825b90505f8267ffffffffffffffff166001148015610a855750303b155b905081158015610a93575080155b15610ab15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610adb57845460ff60401b1916600160401b1785555b610ae78a8a8a8a6103f7565b95508315610b2f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050949350505050565b6002545f90610589906001600160a01b0316610fe6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b9c57604051631afcd79f60e31b815260040160405180910390fd5b565b6004545f90819015610bc35760405163402b135f60e11b815260040160405180910390fd5b33610bce848261123c565b610bd66106bd565b9430945092505050565b600254604080516303639b8b60e21b815290516001600160a01b03909216915f918391630d8e6e2c916004808201926020929091908290030181865afa158015610c2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5091906116cc565b9050610cce8173__$8eede297b65ed5a56eb3f84d8232ae93f5$__6304b8f6c56040518163ffffffff1660e01b8152600401602060405180830381865af4158015610c9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc191906116cc565b62ffffff90811691161490565b15610cec576040516348c618db60e01b815260040160405180910390fd5b60045415610e445760048054610d0490600190611758565b81548110610d1457610d14611744565b5f9182526020909120600a80830490910154604051635560100760e01b8152919092066003026101000a90910462ffffff16600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__90635560100790602401602060405180830381865af4158015610d85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da99190611777565b604051635560100760e01b815262ffffff8316600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__90635560100790602401602060405180830381865af4158015610dfb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1f9190611777565b11610e4457604051633e614b6d60e11b815262ffffff82166004820152602401610502565b600480546001810182555f8290527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b600a808304919091018054919092066003026101000a62ffffff81810219909216918516021790556040805160a0810182526001600160a01b03871681528151639fa6a6e360e01b81529151909260208085019373__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__93639fa6a6e39382810193928290030181865af4158015610eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f23919061178e565b64ffffffffff16815260200163ffffffff431664ffffffffff908116825262ffffff93841660208084018290526001600160a01b039788166040948501525f91825260038152908390208451815492860151948601518416600160c81b0264ffffffffff60c81b1995909416600160a01b026001600160c81b03199093169089161791909117929092161781556060820151600190910180546080909301519095166301000000026001600160b81b031990921692169190911717909155919050565b5f805f8051602061289b83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611052573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611076919061170a565b156110a25780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610502565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa1580156110f4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611118919061170a565b6111405760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610502565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015611192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b691906117b2565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b54906112026106bd565b604080516001600160601b0390931683526001600160a01b0390911660208301520160405180910390a1546001600160601b031692915050565b611244610b53565b61124c6112b2565b611255826112fa565b6001600160a01b03811661127c5760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061289b83398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6112ba610b53565b610b9c6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b611302610b53565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015611358573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137c919061170a565b6113a45760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610502565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6110c2806117d983390190565b5f602082840312156113e3575f80fd5b81356001600160e01b031981168114610517575f80fd5b6001600160a01b038116811461140e575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611434575f80fd5b813567ffffffffffffffff81111561144e5761144e611411565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561147d5761147d611411565b604052818152838201602001851015611494575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156114c3575f80fd5b84356114ce816113fa565b935060208501356114de816113fa565b9250604085013567ffffffffffffffff8111156114f9575f80fd5b61150587828801611425565b949793965093946060013593505050565b5f60208284031215611526575f80fd5b8135610517816113fa565b5f8060408385031215611542575f80fd5b823561154d816113fa565b9150602083013567ffffffffffffffff811115611568575f80fd5b61157485828601611425565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610517602083018461157e565b5f805f606084860312156115d0575f80fd5b83356115db816113fa565b925060208401356115eb816113fa565b9150604084013567ffffffffffffffff811115611606575f80fd5b61161286828701611425565b9150509250925092565b62ffffff8116811461140e575f80fd5b5f6020828403121561163c575f80fd5b81356105178161161c565b5f60208284031215611657575f80fd5b813567ffffffffffffffff81111561166d575f80fd5b61167984828501611425565b949350505050565b5f60208284031215611691575f80fd5b5035919050565b6001600160a01b038481168252831660208201526060604082018190525f906116c39083018461157e565b95945050505050565b5f602082840312156116dc575f80fd5b81516105178161161c565b6001600160a01b03831681526040602082018190525f906116799083018461157e565b5f6020828403121561171a575f80fd5b81518015158114610517575f80fd5b5f60208284031215611739575f80fd5b8151610517816113fa565b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ea57634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611787575f80fd5b5051919050565b5f6020828403121561179e575f80fd5b815164ffffffffff81168114610517575f80fd5b5f602082840312156117c2575f80fd5b81516001600160601b0381168114610517575f80fdfe60a060405234801561000f575f80fd5b506040516110c23803806110c283398101604081905261002e9161038a565b828282828161003d82826100ac565b50508160405161004c9061034e565b6001600160a01b039091168152602001604051809103905ff080158015610075573d5f803e3d5ffd5b506001600160a01b031660805261009361008e60805190565b61010a565b505f91506100a3905082826104de565b505050506105ae565b6100b582610177565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100fe576100f982826101f5565b505050565b610106610268565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101495f805160206110a2833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161017481610289565b50565b806001600160a01b03163b5f036101b157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516102119190610598565b5f60405180830381855af49150503d805f8114610249576040519150601f19603f3d011682016040523d82523d5f602084013e61024e565b606091505b50909250905061025f8583836102c6565b95945050505050565b34156102875760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102b257604051633173bdd160e11b81525f60048201526024016101a8565b805f805160206110a28339815191526101d4565b6060826102db576102d682610325565b61031e565b81511580156102f257506001600160a01b0384163b155b1561031b57604051639996b31560e01b81526001600160a01b03851660048201526024016101a8565b50805b9392505050565b8051156103355780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104ef80610bb383390190565b80516001600160a01b0381168114610371575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561039c575f80fd5b6103a58461035b565b92506103b36020850161035b565b60408501519092506001600160401b038111156103ce575f80fd5b8401601f810186136103de575f80fd5b80516001600160401b038111156103f7576103f7610376565b604051601f8201601f19908116603f011681016001600160401b038111828210171561042557610425610376565b60405281815282820160200188101561043c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b600181811c9082168061046f57607f821691505b60208210810361048d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156100f957805f5260205f20601f840160051c810160208510156104b85750805b601f840160051c820191505b818110156104d7575f81556001016104c4565b5050505050565b81516001600160401b038111156104f7576104f7610376565b61050b81610505845461045b565b84610493565b6020601f82116001811461053d575f83156105265750848201515b5f19600385901b1c1916600184901b1784556104d7565b5f84815260208120601f198516915b8281101561056c578785015182556020948501946001909201910161054c565b508482101561058957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f920191825250919050565b6080516105e86105cb5f395f81816075015260a101526105e85ff3fe608060405260043610610028575f3560e01c8063514e2d93146100325780638b3240a01461005c575b61003061009f565b005b34801561003d575f80fd5b50610046610113565b6040516100539190610423565b60405180910390f35b348015610067575f80fd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610053565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361010b575f356001600160e01b03191663278f794360e11b14610101576040516334ad5dbb60e21b815260040160405180910390fd5b6101096101a7565b565b6101096101d5565b60605f805461012190610458565b80601f016020809104026020016040519081016040528092919081815260200182805461014d90610458565b80156101985780601f1061016f57610100808354040283529160200191610198565b820191905f5260205f20905b81548152906001019060200180831161017b57829003601f168201915b5050505050905090565b905090565b5f806101b63660048184610490565b8101906101c391906104cb565b915091506101d182826101e5565b5050565b6101096101e061023f565b610271565b6101ee8261028f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561023757610232828261030a565b505050565b6101d161037c565b5f6101a27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f80375f80365f845af43d5f803e80801561028b573d5ff35b3d5ffd5b806001600160a01b03163b5f036102c957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610326919061059c565b5f60405180830381855af49150503d805f811461035e576040519150601f19603f3d011682016040523d82523d5f602084013e610363565b606091505b509150915061037385838361039b565b95945050505050565b34156101095760405163b398979f60e01b815260040160405180910390fd5b6060826103b0576103ab826103fa565b6103f3565b81511580156103c757506001600160a01b0384163b155b156103f057604051639996b31560e01b81526001600160a01b03851660048201526024016102c0565b50805b9392505050565b80511561040a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061046c57607f821691505b60208210810361048a57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f808585111561049e575f80fd5b838611156104aa575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156104dc575f80fd5b82356001600160a01b03811681146104f2575f80fd5b9150602083013567ffffffffffffffff81111561050d575f80fd5b8301601f8101851361051d575f80fd5b803567ffffffffffffffff811115610537576105376104b7565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610566576105666104b7565b60405281815282820160200187101561057d575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea264697066735822122068eb3582d94c42ef5e17bc746088d0b2e5458c9bbe06da2bc30decce86f2b96964736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea264697066735822122063012ab3c3421087c307802be7295f03bec95db9eea702a4c2db9595befa162464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00a2646970667358221220df55e62c85a131c51331d792ff82bd1cb5d2fc43b2d961693fb69ffed56b748264736f6c634300081a0033",
608
+ "linkReferences": {
609
+ "contracts/shared/ContractLib.sol": {
610
+ "ContractLib": [
611
+ {
612
+ "length": 20,
613
+ "start": 2760
614
+ },
615
+ {
616
+ "length": 20,
617
+ "start": 8664
618
+ },
619
+ {
620
+ "length": 20,
621
+ "start": 32957
622
+ },
623
+ {
624
+ "length": 20,
625
+ "start": 33659
626
+ }
627
+ ]
628
+ },
629
+ "contracts/shared/TokenHandlerDeployerLib.sol": {
630
+ "TokenHandlerDeployerLib": [
631
+ {
632
+ "length": 20,
633
+ "start": 16969
634
+ }
635
+ ]
636
+ },
637
+ "contracts/staking/StakingLib.sol": {
638
+ "StakingLib": [
639
+ {
640
+ "length": 20,
641
+ "start": 26350
642
+ }
643
+ ]
644
+ },
645
+ "contracts/type/Amount.sol": {
646
+ "AmountLib": [
647
+ {
648
+ "length": 20,
649
+ "start": 18961
650
+ },
651
+ {
652
+ "length": 20,
653
+ "start": 19639
654
+ },
655
+ {
656
+ "length": 20,
657
+ "start": 20238
658
+ },
659
+ {
660
+ "length": 20,
661
+ "start": 20901
662
+ },
663
+ {
664
+ "length": 20,
665
+ "start": 22662
666
+ },
667
+ {
668
+ "length": 20,
669
+ "start": 23295
670
+ },
671
+ {
672
+ "length": 20,
673
+ "start": 23553
674
+ },
675
+ {
676
+ "length": 20,
677
+ "start": 26983
678
+ },
679
+ {
680
+ "length": 20,
681
+ "start": 31237
682
+ },
683
+ {
684
+ "length": 20,
685
+ "start": 31748
686
+ }
687
+ ]
688
+ },
689
+ "contracts/type/Blocknumber.sol": {
690
+ "BlocknumberLib": [
691
+ {
692
+ "length": 20,
693
+ "start": 29895
694
+ },
695
+ {
696
+ "length": 20,
697
+ "start": 32626
698
+ }
699
+ ]
700
+ },
701
+ "contracts/type/ChainId.sol": {
702
+ "ChainIdLib": [
703
+ {
704
+ "length": 20,
705
+ "start": 25010
706
+ },
707
+ {
708
+ "length": 20,
709
+ "start": 27392
710
+ }
711
+ ]
712
+ },
713
+ "contracts/type/NftId.sol": {
714
+ "NftIdLib": [
715
+ {
716
+ "length": 20,
717
+ "start": 2388
718
+ },
719
+ {
720
+ "length": 20,
721
+ "start": 5545
722
+ },
723
+ {
724
+ "length": 20,
725
+ "start": 7890
726
+ },
727
+ {
728
+ "length": 20,
729
+ "start": 17529
730
+ },
731
+ {
732
+ "length": 20,
733
+ "start": 18361
734
+ },
735
+ {
736
+ "length": 20,
737
+ "start": 24214
738
+ },
739
+ {
740
+ "length": 20,
741
+ "start": 29222
742
+ },
743
+ {
744
+ "length": 20,
745
+ "start": 31479
746
+ }
747
+ ]
748
+ },
749
+ "contracts/type/Seconds.sol": {
750
+ "SecondsLib": [
751
+ {
752
+ "length": 20,
753
+ "start": 22409
754
+ }
755
+ ]
756
+ },
757
+ "contracts/type/Timestamp.sol": {
758
+ "TimestampLib": [
759
+ {
760
+ "length": 20,
761
+ "start": 1886
762
+ },
763
+ {
764
+ "length": 20,
765
+ "start": 7553
766
+ }
767
+ ]
768
+ },
769
+ "contracts/type/Version.sol": {
770
+ "VersionLib": [
771
+ {
772
+ "length": 20,
773
+ "start": 1256
774
+ },
775
+ {
776
+ "length": 20,
777
+ "start": 1501
778
+ },
779
+ {
780
+ "length": 20,
781
+ "start": 1619
782
+ },
783
+ {
784
+ "length": 20,
785
+ "start": 6928
786
+ },
787
+ {
788
+ "length": 20,
789
+ "start": 7173
790
+ },
791
+ {
792
+ "length": 20,
793
+ "start": 7291
794
+ },
795
+ {
796
+ "length": 20,
797
+ "start": 17329
798
+ },
799
+ {
800
+ "length": 20,
801
+ "start": 19167
802
+ }
803
+ ],
804
+ "VersionPartLib": [
805
+ {
806
+ "length": 20,
807
+ "start": 23913
808
+ }
809
+ ]
810
+ }
811
+ },
812
+ "deployedLinkReferences": {
813
+ "contracts/shared/ContractLib.sol": {
814
+ "ContractLib": [
815
+ {
816
+ "length": 20,
817
+ "start": 4896
818
+ }
819
+ ]
820
+ },
821
+ "contracts/type/NftId.sol": {
822
+ "NftIdLib": [
823
+ {
824
+ "length": 20,
825
+ "start": 1777
826
+ },
827
+ {
828
+ "length": 20,
829
+ "start": 4122
830
+ }
831
+ ]
832
+ },
833
+ "contracts/type/Timestamp.sol": {
834
+ "TimestampLib": [
835
+ {
836
+ "length": 20,
837
+ "start": 3785
838
+ }
839
+ ]
840
+ },
841
+ "contracts/type/Version.sol": {
842
+ "VersionLib": [
843
+ {
844
+ "length": 20,
845
+ "start": 3160
846
+ },
847
+ {
848
+ "length": 20,
849
+ "start": 3405
850
+ },
851
+ {
852
+ "length": 20,
853
+ "start": 3523
854
+ }
855
+ ]
856
+ }
857
+ }
858
+ }