@gooddollar/goodprotocol 1.0.28 → 1.0.29-beta.1

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 (352) hide show
  1. package/artifacts/abis/BulkProof.min.json +1 -1
  2. package/artifacts/abis/DistributionBridgeMock.min.json +1 -0
  3. package/artifacts/abis/DistributionHelper.min.json +1 -0
  4. package/artifacts/abis/DistributionHelperTest.min.json +1 -0
  5. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -0
  6. package/artifacts/abis/ERC20.min.json +1 -1
  7. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -0
  8. package/artifacts/abis/GoodDollarStaking.min.json +1 -0
  9. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -0
  10. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  11. package/artifacts/abis/IERC2917.min.json +1 -1
  12. package/artifacts/abis/IGoodDollarStakingTest.min.json +1 -0
  13. package/artifacts/abis/IMultichainRouter.min.json +1 -0
  14. package/artifacts/abis/IRouter.min.json +1 -0
  15. package/artifacts/abis/IWrapper.min.json +1 -0
  16. package/artifacts/abis/Math64x64.min.json +1 -0
  17. package/artifacts/abis/MultichainBridgeHelper.min.json +1 -0
  18. package/artifacts/abis/MultichainRouterMock.min.json +1 -0
  19. package/artifacts/abis/OverMintTester.min.json +1 -1
  20. package/artifacts/abis/PausableControl.min.json +1 -0
  21. package/artifacts/abis/RewardsMinter.min.json +1 -0
  22. package/artifacts/abis/StakingMockFixedAPY.min.json +1 -0
  23. package/artifacts/abis/StakingRewardsFixedAPY.min.json +1 -0
  24. package/artifacts/abis/TokenOperation.min.json +1 -0
  25. package/artifacts/abis/cERC20.min.json +1 -1
  26. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  27. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  28. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  29. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  30. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  31. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ERC20.json +13 -0
  35. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/IERC2917.json +13 -0
  40. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  45. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  46. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +4 -0
  47. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.json +67 -0
  48. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  49. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  50. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  51. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  52. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  53. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  54. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  55. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  56. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  57. package/artifacts/contracts/Interfaces.sol/cERC20.json +13 -0
  58. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  59. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  60. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  61. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  62. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  63. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  64. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  65. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  66. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +4 -0
  67. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +1322 -0
  68. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +4 -0
  69. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.json +35 -0
  70. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  71. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  72. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  73. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  74. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  75. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  76. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  77. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  78. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  79. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +4 -0
  83. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +152 -0
  84. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +4 -0
  85. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +662 -0
  86. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +4 -0
  87. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +680 -0
  88. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  90. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +4 -0
  91. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +1322 -0
  92. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  94. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +4 -0
  97. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.json +59 -0
  98. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +4 -0
  99. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +81 -0
  100. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +4 -0
  101. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.json +49 -0
  102. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +4 -4
  104. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  106. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +4 -0
  108. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +682 -0
  109. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  111. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  114. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  116. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  118. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  119. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  120. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  121. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  123. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  125. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  127. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  128. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +4 -0
  129. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +662 -0
  130. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  131. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  132. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  133. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  134. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  135. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  136. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +75 -35
  137. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  138. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  139. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  140. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  141. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  142. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  143. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  144. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  145. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  146. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  147. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  148. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  149. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  150. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  151. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  152. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  153. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  154. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  155. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  156. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  157. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  158. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  159. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  160. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  161. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  162. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  163. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  164. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  165. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +4 -0
  166. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +10 -0
  167. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +4 -0
  168. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.json +268 -0
  169. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  170. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  171. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  172. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  173. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  174. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  175. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +3 -34
  176. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  177. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  178. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  179. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  180. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  181. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  182. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +4 -0
  183. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +1263 -0
  184. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +4 -0
  185. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.json +59 -0
  186. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +4 -0
  187. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.json +69 -0
  188. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +4 -0
  189. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +10 -0
  190. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +4 -0
  191. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +79 -0
  192. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  193. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  194. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  195. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  196. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  197. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  198. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  199. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  200. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  201. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  202. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  203. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  204. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  205. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  206. package/contracts/Interfaces.sol +20 -0
  207. package/contracts/governance/GoodDollarStaking.sol +510 -0
  208. package/contracts/governance/MultiBaseGovernanceShareField.sol +1 -0
  209. package/contracts/mocks/DistributionBridgeMock.sol +50 -0
  210. package/contracts/mocks/DistributionHelperTest.sol +22 -0
  211. package/contracts/mocks/GoodDollarStakingMock.sol +24 -0
  212. package/contracts/mocks/MultichainRouterMock.sol +38 -0
  213. package/contracts/mocks/OverMintTester.sol +39 -25
  214. package/contracts/mocks/StakingMockFixedAPY.sol +78 -0
  215. package/contracts/reserve/DistributionHelper.sol +142 -0
  216. package/contracts/reserve/GoodReserveCDai.sol +95 -41
  217. package/contracts/staking/utils/Math64X64.sol +268 -0
  218. package/contracts/staking/utils/StakingRewardsFixedAPY.sol +336 -0
  219. package/contracts/utils/BulkProof.sol +10 -10
  220. package/contracts/utils/GoodDollarMintBurnWrapper.sol +638 -0
  221. package/contracts/utils/MultichainBridgeHelper.sol +39 -0
  222. package/hardhat.config.ts +5 -3
  223. package/package.json +7 -4
  224. package/patches/@openzeppelin+hardhat-upgrades+1.7.0.patch.depracate +67 -0
  225. package/releases/deployment.json +10 -3
  226. package/releases/olddao.json +1 -1
  227. package/scripts/analytics/activeUsersCount.ts +65 -0
  228. package/scripts/analytics/activeWalletsStats.ts +150 -0
  229. package/scripts/analytics/claimIncidentStats.ts +117 -0
  230. package/scripts/analytics/faucetStats.ts +103 -0
  231. package/scripts/analytics/goodHolders.ts +50 -0
  232. package/scripts/{misc → analytics}/goodgiveback.ts +0 -0
  233. package/scripts/governance/airdropCalculation.ts +1 -0
  234. package/scripts/multichain-deploy/basicdao-deploy.ts +20 -5
  235. package/scripts/multichain-deploy/gdSavings-deploy.ts +232 -0
  236. package/scripts/multichain-deploy/helpers.ts +73 -8
  237. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +56 -0
  238. package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +170 -0
  239. package/scripts/voltageswaps.ts +47 -0
  240. package/test/governance/ClaimersDistribution.test.ts +1 -1
  241. package/test/governance/GoodDollarStaking.gd.test.ts +559 -0
  242. package/test/governance/GoodDollarStaking.good.test.ts +998 -0
  243. package/test/governance/GovernanceStaking.test.ts +43 -0
  244. package/test/helpers.ts +9 -12
  245. package/test/reserve/DistributionHelper.test.ts +394 -0
  246. package/test/reserve/GoodReserveCDai.distribution.test.ts +296 -0
  247. package/test/reserve/GoodReserveCDai.gdx.test.ts +21 -16
  248. package/test/reserve/GoodReserveCDai.pause.test.ts +116 -0
  249. package/test/staking/StakingRewardsFixedAPY.test.ts +900 -0
  250. package/test/utils/AdminWallet.test.ts +35 -6
  251. package/test/utils/GoodDollarMintBurnWrapper.test.ts +796 -0
  252. package/tsconfig.json +4 -9
  253. package/types/AccessControl.ts +361 -0
  254. package/types/CERC20.ts +25 -0
  255. package/types/DistributionBridgeMock.ts +251 -0
  256. package/types/DistributionHelper.ts +908 -0
  257. package/types/DistributionHelperTest.ts +909 -0
  258. package/types/DistributionHelperTestHelper.ts +945 -0
  259. package/types/ERC165.ts +104 -0
  260. package/types/ERC20.ts +101 -49
  261. package/types/GoodDollarMintBurnWrapper.ts +1806 -0
  262. package/types/GoodDollarStaking.ts +1855 -0
  263. package/types/GoodDollarStakingMock.ts +1855 -0
  264. package/types/GoodReserveCDai.ts +90 -55
  265. package/types/IAccessControl.ts +306 -0
  266. package/types/IERC165.ts +104 -0
  267. package/types/IERC20.ts +300 -0
  268. package/types/IERC20Metadata.ts +339 -0
  269. package/types/IERC2917.ts +25 -0
  270. package/types/IGoodDollarStakingTest.ts +160 -0
  271. package/types/IMultichainRouter.ts +166 -0
  272. package/types/IRouter.ts +143 -0
  273. package/types/IWrapper.ts +143 -0
  274. package/types/MultichainBridgeHelper.ts +170 -0
  275. package/types/MultichainRouterMock.ts +141 -0
  276. package/types/Pausable.ts +103 -0
  277. package/types/PausableControl.ts +125 -0
  278. package/types/{BulkProof.ts → RewardsMinter.ts} +24 -28
  279. package/types/StakingMockFixedAPY.ts +995 -0
  280. package/types/StakingRewardsFixedAPY.ts +428 -0
  281. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  282. package/types/factories/AccessControl__factory.ts +227 -0
  283. package/types/factories/AdminWallet__factory.ts +1 -1
  284. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  285. package/types/factories/BaseShareField__factory.ts +1 -1
  286. package/types/factories/CERC20__factory.ts +13 -0
  287. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  288. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  289. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  290. package/types/factories/DAOContract__factory.ts +1 -1
  291. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  292. package/types/factories/DistributionBridgeMock__factory.ts +207 -0
  293. package/types/factories/DistributionHelperTestHelper__factory.ts +737 -0
  294. package/types/factories/DistributionHelperTest__factory.ts +717 -0
  295. package/types/factories/DistributionHelper__factory.ts +713 -0
  296. package/types/factories/DonationsStaking__factory.ts +1 -1
  297. package/types/factories/ERC165__factory.ts +39 -0
  298. package/types/factories/ERC20__factory.ts +13 -0
  299. package/types/factories/ExchangeHelper__factory.ts +1 -1
  300. package/types/factories/FuseFaucet__factory.ts +1 -1
  301. package/types/factories/FuseStakingV3__factory.ts +1 -1
  302. package/types/factories/GReputation__factory.ts +1 -1
  303. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  304. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  305. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  306. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  307. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  308. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1318 -0
  309. package/types/factories/GoodDollarStakingMock__factory.ts +1404 -0
  310. package/types/factories/GoodDollarStaking__factory.ts +1400 -0
  311. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  312. package/types/factories/GoodFundManager__factory.ts +1 -1
  313. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  314. package/types/factories/GoodReserveCDai__factory.ts +74 -34
  315. package/types/factories/GovernanceStaking__factory.ts +1 -1
  316. package/types/factories/IAccessControl__factory.ts +198 -0
  317. package/types/factories/IERC165__factory.ts +42 -0
  318. package/types/factories/IERC20Metadata__factory.ts +248 -0
  319. package/types/factories/IERC20__factory.ts +203 -0
  320. package/types/factories/IERC2917__factory.ts +13 -0
  321. package/types/factories/IGoodDollarStakingTest__factory.ts +68 -0
  322. package/types/factories/IMultichainRouter__factory.ts +82 -0
  323. package/types/factories/IRouter__factory.ts +71 -0
  324. package/types/factories/IWrapper__factory.ts +71 -0
  325. package/types/factories/InvitesV1__factory.ts +1 -1
  326. package/types/factories/MultichainBridgeHelper__factory.ts +134 -0
  327. package/types/factories/MultichainRouterMock__factory.ts +141 -0
  328. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  329. package/types/factories/OverMintTester__factory.ts +3 -3
  330. package/types/factories/PausableControl__factory.ts +84 -0
  331. package/types/factories/Pausable__factory.ts +62 -0
  332. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  333. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  334. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  335. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  336. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  337. package/types/factories/Reputation__factory.ts +1 -1
  338. package/types/factories/RewardsMinter__factory.ts +47 -0
  339. package/types/factories/StakersDistribution__factory.ts +1 -1
  340. package/types/factories/StakingMockFixedAPY__factory.ts +745 -0
  341. package/types/factories/StakingRewardsFixedAPY__factory.ts +287 -0
  342. package/types/factories/SwapHelperTest__factory.ts +1 -1
  343. package/types/factories/UBIScheme__factory.ts +1 -1
  344. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  345. package/types/factories/UpgradableMock2__factory.ts +1 -1
  346. package/types/factories/UpgradableMock3__factory.ts +1 -1
  347. package/types/factories/UpgradableMock4__factory.ts +1 -1
  348. package/types/factories/UpgradableMock__factory.ts +1 -1
  349. package/types/hardhat.d.ts +225 -9
  350. package/types/index.ts +50 -4
  351. package/yarn.lock +180 -104
  352. package/types/factories/BulkProof__factory.ts +0 -89
@@ -0,0 +1,1263 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "GoodDollarMintBurnWrapper",
4
+ "sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": false,
11
+ "internalType": "address",
12
+ "name": "previousAdmin",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": false,
17
+ "internalType": "address",
18
+ "name": "newAdmin",
19
+ "type": "address"
20
+ }
21
+ ],
22
+ "name": "AdminChanged",
23
+ "type": "event"
24
+ },
25
+ {
26
+ "anonymous": false,
27
+ "inputs": [
28
+ {
29
+ "indexed": true,
30
+ "internalType": "address",
31
+ "name": "beacon",
32
+ "type": "address"
33
+ }
34
+ ],
35
+ "name": "BeaconUpgraded",
36
+ "type": "event"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": false,
43
+ "internalType": "address",
44
+ "name": "minter",
45
+ "type": "address"
46
+ },
47
+ {
48
+ "indexed": false,
49
+ "internalType": "address",
50
+ "name": "to",
51
+ "type": "address"
52
+ },
53
+ {
54
+ "indexed": false,
55
+ "internalType": "uint256",
56
+ "name": "amount",
57
+ "type": "uint256"
58
+ }
59
+ ],
60
+ "name": "Burned",
61
+ "type": "event"
62
+ },
63
+ {
64
+ "anonymous": false,
65
+ "inputs": [
66
+ {
67
+ "indexed": false,
68
+ "internalType": "address",
69
+ "name": "minter",
70
+ "type": "address"
71
+ },
72
+ {
73
+ "indexed": false,
74
+ "internalType": "address",
75
+ "name": "to",
76
+ "type": "address"
77
+ },
78
+ {
79
+ "indexed": false,
80
+ "internalType": "uint256",
81
+ "name": "amount",
82
+ "type": "uint256"
83
+ }
84
+ ],
85
+ "name": "Minted",
86
+ "type": "event"
87
+ },
88
+ {
89
+ "anonymous": false,
90
+ "inputs": [
91
+ {
92
+ "indexed": false,
93
+ "internalType": "address",
94
+ "name": "minter",
95
+ "type": "address"
96
+ },
97
+ {
98
+ "indexed": false,
99
+ "internalType": "uint256",
100
+ "name": "totalMintCapIn",
101
+ "type": "uint256"
102
+ },
103
+ {
104
+ "indexed": false,
105
+ "internalType": "uint256",
106
+ "name": "perTxCapIn",
107
+ "type": "uint256"
108
+ },
109
+ {
110
+ "indexed": false,
111
+ "internalType": "uint32",
112
+ "name": "bpsIn",
113
+ "type": "uint32"
114
+ },
115
+ {
116
+ "indexed": false,
117
+ "internalType": "uint256",
118
+ "name": "totalMintCapOut",
119
+ "type": "uint256"
120
+ },
121
+ {
122
+ "indexed": false,
123
+ "internalType": "uint256",
124
+ "name": "perTxCapOut",
125
+ "type": "uint256"
126
+ },
127
+ {
128
+ "indexed": false,
129
+ "internalType": "uint32",
130
+ "name": "bpsOut",
131
+ "type": "uint32"
132
+ },
133
+ {
134
+ "indexed": false,
135
+ "internalType": "bool",
136
+ "name": "rewardsRole",
137
+ "type": "bool"
138
+ },
139
+ {
140
+ "indexed": false,
141
+ "internalType": "bool",
142
+ "name": "isUpdate",
143
+ "type": "bool"
144
+ }
145
+ ],
146
+ "name": "MinterSet",
147
+ "type": "event"
148
+ },
149
+ {
150
+ "anonymous": false,
151
+ "inputs": [
152
+ {
153
+ "indexed": false,
154
+ "internalType": "bytes32",
155
+ "name": "role",
156
+ "type": "bytes32"
157
+ }
158
+ ],
159
+ "name": "Paused",
160
+ "type": "event"
161
+ },
162
+ {
163
+ "anonymous": false,
164
+ "inputs": [
165
+ {
166
+ "indexed": true,
167
+ "internalType": "bytes32",
168
+ "name": "role",
169
+ "type": "bytes32"
170
+ },
171
+ {
172
+ "indexed": true,
173
+ "internalType": "bytes32",
174
+ "name": "previousAdminRole",
175
+ "type": "bytes32"
176
+ },
177
+ {
178
+ "indexed": true,
179
+ "internalType": "bytes32",
180
+ "name": "newAdminRole",
181
+ "type": "bytes32"
182
+ }
183
+ ],
184
+ "name": "RoleAdminChanged",
185
+ "type": "event"
186
+ },
187
+ {
188
+ "anonymous": false,
189
+ "inputs": [
190
+ {
191
+ "indexed": true,
192
+ "internalType": "bytes32",
193
+ "name": "role",
194
+ "type": "bytes32"
195
+ },
196
+ {
197
+ "indexed": true,
198
+ "internalType": "address",
199
+ "name": "account",
200
+ "type": "address"
201
+ },
202
+ {
203
+ "indexed": true,
204
+ "internalType": "address",
205
+ "name": "sender",
206
+ "type": "address"
207
+ }
208
+ ],
209
+ "name": "RoleGranted",
210
+ "type": "event"
211
+ },
212
+ {
213
+ "anonymous": false,
214
+ "inputs": [
215
+ {
216
+ "indexed": true,
217
+ "internalType": "bytes32",
218
+ "name": "role",
219
+ "type": "bytes32"
220
+ },
221
+ {
222
+ "indexed": true,
223
+ "internalType": "address",
224
+ "name": "account",
225
+ "type": "address"
226
+ },
227
+ {
228
+ "indexed": true,
229
+ "internalType": "address",
230
+ "name": "sender",
231
+ "type": "address"
232
+ }
233
+ ],
234
+ "name": "RoleRevoked",
235
+ "type": "event"
236
+ },
237
+ {
238
+ "anonymous": false,
239
+ "inputs": [
240
+ {
241
+ "indexed": false,
242
+ "internalType": "address",
243
+ "name": "rewarder",
244
+ "type": "address"
245
+ },
246
+ {
247
+ "indexed": false,
248
+ "internalType": "address",
249
+ "name": "to",
250
+ "type": "address"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "uint256",
255
+ "name": "amount",
256
+ "type": "uint256"
257
+ },
258
+ {
259
+ "indexed": false,
260
+ "internalType": "uint256",
261
+ "name": "sent",
262
+ "type": "uint256"
263
+ },
264
+ {
265
+ "indexed": false,
266
+ "internalType": "uint256",
267
+ "name": "minted",
268
+ "type": "uint256"
269
+ },
270
+ {
271
+ "indexed": false,
272
+ "internalType": "uint256",
273
+ "name": "outstandingMintDebt",
274
+ "type": "uint256"
275
+ }
276
+ ],
277
+ "name": "SendOrMint",
278
+ "type": "event"
279
+ },
280
+ {
281
+ "anonymous": false,
282
+ "inputs": [
283
+ {
284
+ "indexed": false,
285
+ "internalType": "bytes32",
286
+ "name": "role",
287
+ "type": "bytes32"
288
+ }
289
+ ],
290
+ "name": "Unpaused",
291
+ "type": "event"
292
+ },
293
+ {
294
+ "anonymous": false,
295
+ "inputs": [
296
+ {
297
+ "indexed": false,
298
+ "internalType": "uint128",
299
+ "name": "newFrequency",
300
+ "type": "uint128"
301
+ }
302
+ ],
303
+ "name": "UpdateFrequencySet",
304
+ "type": "event"
305
+ },
306
+ {
307
+ "anonymous": false,
308
+ "inputs": [
309
+ {
310
+ "indexed": true,
311
+ "internalType": "address",
312
+ "name": "implementation",
313
+ "type": "address"
314
+ }
315
+ ],
316
+ "name": "Upgraded",
317
+ "type": "event"
318
+ },
319
+ {
320
+ "inputs": [],
321
+ "name": "BRIDGE_ROLE",
322
+ "outputs": [
323
+ {
324
+ "internalType": "bytes32",
325
+ "name": "",
326
+ "type": "bytes32"
327
+ }
328
+ ],
329
+ "stateMutability": "view",
330
+ "type": "function"
331
+ },
332
+ {
333
+ "inputs": [],
334
+ "name": "DEFAULT_ADMIN_ROLE",
335
+ "outputs": [
336
+ {
337
+ "internalType": "bytes32",
338
+ "name": "",
339
+ "type": "bytes32"
340
+ }
341
+ ],
342
+ "stateMutability": "view",
343
+ "type": "function"
344
+ },
345
+ {
346
+ "inputs": [],
347
+ "name": "GUARDIAN_ROLE",
348
+ "outputs": [
349
+ {
350
+ "internalType": "bytes32",
351
+ "name": "",
352
+ "type": "bytes32"
353
+ }
354
+ ],
355
+ "stateMutability": "view",
356
+ "type": "function"
357
+ },
358
+ {
359
+ "inputs": [],
360
+ "name": "MINTER_ROLE",
361
+ "outputs": [
362
+ {
363
+ "internalType": "bytes32",
364
+ "name": "",
365
+ "type": "bytes32"
366
+ }
367
+ ],
368
+ "stateMutability": "view",
369
+ "type": "function"
370
+ },
371
+ {
372
+ "inputs": [],
373
+ "name": "PAUSE_ALL_ROLE",
374
+ "outputs": [
375
+ {
376
+ "internalType": "bytes32",
377
+ "name": "",
378
+ "type": "bytes32"
379
+ }
380
+ ],
381
+ "stateMutability": "view",
382
+ "type": "function"
383
+ },
384
+ {
385
+ "inputs": [],
386
+ "name": "PAUSE_BURN_ROLE",
387
+ "outputs": [
388
+ {
389
+ "internalType": "bytes32",
390
+ "name": "",
391
+ "type": "bytes32"
392
+ }
393
+ ],
394
+ "stateMutability": "view",
395
+ "type": "function"
396
+ },
397
+ {
398
+ "inputs": [],
399
+ "name": "PAUSE_MINT_ROLE",
400
+ "outputs": [
401
+ {
402
+ "internalType": "bytes32",
403
+ "name": "",
404
+ "type": "bytes32"
405
+ }
406
+ ],
407
+ "stateMutability": "view",
408
+ "type": "function"
409
+ },
410
+ {
411
+ "inputs": [],
412
+ "name": "PAUSE_REWARDS_ROLE",
413
+ "outputs": [
414
+ {
415
+ "internalType": "bytes32",
416
+ "name": "",
417
+ "type": "bytes32"
418
+ }
419
+ ],
420
+ "stateMutability": "view",
421
+ "type": "function"
422
+ },
423
+ {
424
+ "inputs": [],
425
+ "name": "PAUSE_ROUTER_ROLE",
426
+ "outputs": [
427
+ {
428
+ "internalType": "bytes32",
429
+ "name": "",
430
+ "type": "bytes32"
431
+ }
432
+ ],
433
+ "stateMutability": "view",
434
+ "type": "function"
435
+ },
436
+ {
437
+ "inputs": [],
438
+ "name": "REWARDS_ROLE",
439
+ "outputs": [
440
+ {
441
+ "internalType": "bytes32",
442
+ "name": "",
443
+ "type": "bytes32"
444
+ }
445
+ ],
446
+ "stateMutability": "view",
447
+ "type": "function"
448
+ },
449
+ {
450
+ "inputs": [],
451
+ "name": "ROUTER_ROLE",
452
+ "outputs": [
453
+ {
454
+ "internalType": "bytes32",
455
+ "name": "",
456
+ "type": "bytes32"
457
+ }
458
+ ],
459
+ "stateMutability": "view",
460
+ "type": "function"
461
+ },
462
+ {
463
+ "inputs": [
464
+ {
465
+ "internalType": "address",
466
+ "name": "minter",
467
+ "type": "address"
468
+ },
469
+ {
470
+ "internalType": "uint256",
471
+ "name": "globalLimitIn",
472
+ "type": "uint256"
473
+ },
474
+ {
475
+ "internalType": "uint256",
476
+ "name": "perTxLimitIn",
477
+ "type": "uint256"
478
+ },
479
+ {
480
+ "internalType": "uint32",
481
+ "name": "bpsPerDayIn",
482
+ "type": "uint32"
483
+ },
484
+ {
485
+ "internalType": "uint256",
486
+ "name": "globalLimitOut",
487
+ "type": "uint256"
488
+ },
489
+ {
490
+ "internalType": "uint256",
491
+ "name": "perTxLimitOut",
492
+ "type": "uint256"
493
+ },
494
+ {
495
+ "internalType": "uint32",
496
+ "name": "bpsPerDayOut",
497
+ "type": "uint32"
498
+ },
499
+ {
500
+ "internalType": "bool",
501
+ "name": "withRewardsRole",
502
+ "type": "bool"
503
+ }
504
+ ],
505
+ "name": "addMinter",
506
+ "outputs": [],
507
+ "stateMutability": "nonpayable",
508
+ "type": "function"
509
+ },
510
+ {
511
+ "inputs": [],
512
+ "name": "avatar",
513
+ "outputs": [
514
+ {
515
+ "internalType": "address",
516
+ "name": "",
517
+ "type": "address"
518
+ }
519
+ ],
520
+ "stateMutability": "view",
521
+ "type": "function"
522
+ },
523
+ {
524
+ "inputs": [
525
+ {
526
+ "internalType": "address",
527
+ "name": "account",
528
+ "type": "address"
529
+ }
530
+ ],
531
+ "name": "balanceOf",
532
+ "outputs": [
533
+ {
534
+ "internalType": "uint256",
535
+ "name": "balance",
536
+ "type": "uint256"
537
+ }
538
+ ],
539
+ "stateMutability": "view",
540
+ "type": "function"
541
+ },
542
+ {
543
+ "inputs": [
544
+ {
545
+ "internalType": "address",
546
+ "name": "from",
547
+ "type": "address"
548
+ },
549
+ {
550
+ "internalType": "uint256",
551
+ "name": "amount",
552
+ "type": "uint256"
553
+ }
554
+ ],
555
+ "name": "burn",
556
+ "outputs": [
557
+ {
558
+ "internalType": "bool",
559
+ "name": "",
560
+ "type": "bool"
561
+ }
562
+ ],
563
+ "stateMutability": "nonpayable",
564
+ "type": "function"
565
+ },
566
+ {
567
+ "inputs": [],
568
+ "name": "currentDay",
569
+ "outputs": [
570
+ {
571
+ "internalType": "uint128",
572
+ "name": "",
573
+ "type": "uint128"
574
+ }
575
+ ],
576
+ "stateMutability": "view",
577
+ "type": "function"
578
+ },
579
+ {
580
+ "inputs": [],
581
+ "name": "dao",
582
+ "outputs": [
583
+ {
584
+ "internalType": "contract Controller",
585
+ "name": "",
586
+ "type": "address"
587
+ }
588
+ ],
589
+ "stateMutability": "view",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [],
594
+ "name": "decimals",
595
+ "outputs": [
596
+ {
597
+ "internalType": "uint8",
598
+ "name": "",
599
+ "type": "uint8"
600
+ }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [
607
+ {
608
+ "internalType": "bytes32",
609
+ "name": "role",
610
+ "type": "bytes32"
611
+ }
612
+ ],
613
+ "name": "getRoleAdmin",
614
+ "outputs": [
615
+ {
616
+ "internalType": "bytes32",
617
+ "name": "",
618
+ "type": "bytes32"
619
+ }
620
+ ],
621
+ "stateMutability": "view",
622
+ "type": "function"
623
+ },
624
+ {
625
+ "inputs": [
626
+ {
627
+ "internalType": "bytes32",
628
+ "name": "role",
629
+ "type": "bytes32"
630
+ },
631
+ {
632
+ "internalType": "uint256",
633
+ "name": "index",
634
+ "type": "uint256"
635
+ }
636
+ ],
637
+ "name": "getRoleMember",
638
+ "outputs": [
639
+ {
640
+ "internalType": "address",
641
+ "name": "",
642
+ "type": "address"
643
+ }
644
+ ],
645
+ "stateMutability": "view",
646
+ "type": "function"
647
+ },
648
+ {
649
+ "inputs": [
650
+ {
651
+ "internalType": "bytes32",
652
+ "name": "role",
653
+ "type": "bytes32"
654
+ }
655
+ ],
656
+ "name": "getRoleMemberCount",
657
+ "outputs": [
658
+ {
659
+ "internalType": "uint256",
660
+ "name": "",
661
+ "type": "uint256"
662
+ }
663
+ ],
664
+ "stateMutability": "view",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "inputs": [
669
+ {
670
+ "internalType": "bytes32",
671
+ "name": "role",
672
+ "type": "bytes32"
673
+ },
674
+ {
675
+ "internalType": "address",
676
+ "name": "account",
677
+ "type": "address"
678
+ }
679
+ ],
680
+ "name": "grantRole",
681
+ "outputs": [],
682
+ "stateMutability": "nonpayable",
683
+ "type": "function"
684
+ },
685
+ {
686
+ "inputs": [
687
+ {
688
+ "internalType": "bytes32",
689
+ "name": "role",
690
+ "type": "bytes32"
691
+ },
692
+ {
693
+ "internalType": "address",
694
+ "name": "account",
695
+ "type": "address"
696
+ }
697
+ ],
698
+ "name": "hasRole",
699
+ "outputs": [
700
+ {
701
+ "internalType": "bool",
702
+ "name": "",
703
+ "type": "bool"
704
+ }
705
+ ],
706
+ "stateMutability": "view",
707
+ "type": "function"
708
+ },
709
+ {
710
+ "inputs": [
711
+ {
712
+ "internalType": "address",
713
+ "name": "_admin",
714
+ "type": "address"
715
+ },
716
+ {
717
+ "internalType": "contract INameService",
718
+ "name": "_nameService",
719
+ "type": "address"
720
+ }
721
+ ],
722
+ "name": "initialize",
723
+ "outputs": [],
724
+ "stateMutability": "nonpayable",
725
+ "type": "function"
726
+ },
727
+ {
728
+ "inputs": [
729
+ {
730
+ "internalType": "address",
731
+ "name": "to",
732
+ "type": "address"
733
+ },
734
+ {
735
+ "internalType": "uint256",
736
+ "name": "amount",
737
+ "type": "uint256"
738
+ }
739
+ ],
740
+ "name": "mint",
741
+ "outputs": [
742
+ {
743
+ "internalType": "bool",
744
+ "name": "",
745
+ "type": "bool"
746
+ }
747
+ ],
748
+ "stateMutability": "nonpayable",
749
+ "type": "function"
750
+ },
751
+ {
752
+ "inputs": [
753
+ {
754
+ "internalType": "address",
755
+ "name": "",
756
+ "type": "address"
757
+ }
758
+ ],
759
+ "name": "minterOutLimits",
760
+ "outputs": [
761
+ {
762
+ "internalType": "uint256",
763
+ "name": "maxOut",
764
+ "type": "uint256"
765
+ },
766
+ {
767
+ "internalType": "uint256",
768
+ "name": "capOut",
769
+ "type": "uint256"
770
+ },
771
+ {
772
+ "internalType": "uint256",
773
+ "name": "totalOut",
774
+ "type": "uint256"
775
+ },
776
+ {
777
+ "internalType": "uint128",
778
+ "name": "dailyCapOut",
779
+ "type": "uint128"
780
+ },
781
+ {
782
+ "internalType": "uint128",
783
+ "name": "burnedToday",
784
+ "type": "uint128"
785
+ },
786
+ {
787
+ "internalType": "uint32",
788
+ "name": "bpsPerDayOut",
789
+ "type": "uint32"
790
+ }
791
+ ],
792
+ "stateMutability": "view",
793
+ "type": "function"
794
+ },
795
+ {
796
+ "inputs": [
797
+ {
798
+ "internalType": "address",
799
+ "name": "",
800
+ "type": "address"
801
+ }
802
+ ],
803
+ "name": "minterSupply",
804
+ "outputs": [
805
+ {
806
+ "internalType": "uint256",
807
+ "name": "maxIn",
808
+ "type": "uint256"
809
+ },
810
+ {
811
+ "internalType": "uint256",
812
+ "name": "capIn",
813
+ "type": "uint256"
814
+ },
815
+ {
816
+ "internalType": "uint256",
817
+ "name": "totalIn",
818
+ "type": "uint256"
819
+ },
820
+ {
821
+ "internalType": "uint128",
822
+ "name": "dailyCapIn",
823
+ "type": "uint128"
824
+ },
825
+ {
826
+ "internalType": "uint128",
827
+ "name": "mintedToday",
828
+ "type": "uint128"
829
+ },
830
+ {
831
+ "internalType": "uint128",
832
+ "name": "lastUpdate",
833
+ "type": "uint128"
834
+ },
835
+ {
836
+ "internalType": "uint128",
837
+ "name": "totalRewards",
838
+ "type": "uint128"
839
+ },
840
+ {
841
+ "internalType": "uint32",
842
+ "name": "bpsPerDayIn",
843
+ "type": "uint32"
844
+ },
845
+ {
846
+ "internalType": "uint128",
847
+ "name": "lastDayReset",
848
+ "type": "uint128"
849
+ }
850
+ ],
851
+ "stateMutability": "view",
852
+ "type": "function"
853
+ },
854
+ {
855
+ "inputs": [],
856
+ "name": "name",
857
+ "outputs": [
858
+ {
859
+ "internalType": "string",
860
+ "name": "",
861
+ "type": "string"
862
+ }
863
+ ],
864
+ "stateMutability": "view",
865
+ "type": "function"
866
+ },
867
+ {
868
+ "inputs": [],
869
+ "name": "nameService",
870
+ "outputs": [
871
+ {
872
+ "internalType": "contract INameService",
873
+ "name": "",
874
+ "type": "address"
875
+ }
876
+ ],
877
+ "stateMutability": "view",
878
+ "type": "function"
879
+ },
880
+ {
881
+ "inputs": [],
882
+ "name": "nativeToken",
883
+ "outputs": [
884
+ {
885
+ "internalType": "contract IGoodDollar",
886
+ "name": "",
887
+ "type": "address"
888
+ }
889
+ ],
890
+ "stateMutability": "view",
891
+ "type": "function"
892
+ },
893
+ {
894
+ "inputs": [
895
+ {
896
+ "internalType": "address",
897
+ "name": "sender",
898
+ "type": "address"
899
+ },
900
+ {
901
+ "internalType": "uint256",
902
+ "name": "amount",
903
+ "type": "uint256"
904
+ },
905
+ {
906
+ "internalType": "bytes",
907
+ "name": "data",
908
+ "type": "bytes"
909
+ }
910
+ ],
911
+ "name": "onTokenTransfer",
912
+ "outputs": [
913
+ {
914
+ "internalType": "bool",
915
+ "name": "",
916
+ "type": "bool"
917
+ }
918
+ ],
919
+ "stateMutability": "nonpayable",
920
+ "type": "function"
921
+ },
922
+ {
923
+ "inputs": [],
924
+ "name": "owner",
925
+ "outputs": [
926
+ {
927
+ "internalType": "address",
928
+ "name": "",
929
+ "type": "address"
930
+ }
931
+ ],
932
+ "stateMutability": "view",
933
+ "type": "function"
934
+ },
935
+ {
936
+ "inputs": [
937
+ {
938
+ "internalType": "bytes32",
939
+ "name": "role",
940
+ "type": "bytes32"
941
+ }
942
+ ],
943
+ "name": "pause",
944
+ "outputs": [],
945
+ "stateMutability": "nonpayable",
946
+ "type": "function"
947
+ },
948
+ {
949
+ "inputs": [
950
+ {
951
+ "internalType": "bytes32",
952
+ "name": "role",
953
+ "type": "bytes32"
954
+ }
955
+ ],
956
+ "name": "paused",
957
+ "outputs": [
958
+ {
959
+ "internalType": "bool",
960
+ "name": "",
961
+ "type": "bool"
962
+ }
963
+ ],
964
+ "stateMutability": "view",
965
+ "type": "function"
966
+ },
967
+ {
968
+ "inputs": [
969
+ {
970
+ "internalType": "bytes32",
971
+ "name": "role",
972
+ "type": "bytes32"
973
+ },
974
+ {
975
+ "internalType": "address",
976
+ "name": "account",
977
+ "type": "address"
978
+ }
979
+ ],
980
+ "name": "renounceRole",
981
+ "outputs": [],
982
+ "stateMutability": "nonpayable",
983
+ "type": "function"
984
+ },
985
+ {
986
+ "inputs": [
987
+ {
988
+ "internalType": "bytes32",
989
+ "name": "role",
990
+ "type": "bytes32"
991
+ },
992
+ {
993
+ "internalType": "address",
994
+ "name": "account",
995
+ "type": "address"
996
+ }
997
+ ],
998
+ "name": "revokeRole",
999
+ "outputs": [],
1000
+ "stateMutability": "nonpayable",
1001
+ "type": "function"
1002
+ },
1003
+ {
1004
+ "inputs": [
1005
+ {
1006
+ "internalType": "address",
1007
+ "name": "to",
1008
+ "type": "address"
1009
+ },
1010
+ {
1011
+ "internalType": "uint256",
1012
+ "name": "amount",
1013
+ "type": "uint256"
1014
+ }
1015
+ ],
1016
+ "name": "sendOrMint",
1017
+ "outputs": [
1018
+ {
1019
+ "internalType": "uint256",
1020
+ "name": "totalSent",
1021
+ "type": "uint256"
1022
+ }
1023
+ ],
1024
+ "stateMutability": "nonpayable",
1025
+ "type": "function"
1026
+ },
1027
+ {
1028
+ "inputs": [
1029
+ {
1030
+ "internalType": "address",
1031
+ "name": "minter",
1032
+ "type": "address"
1033
+ },
1034
+ {
1035
+ "internalType": "uint256",
1036
+ "name": "globalLimitIn",
1037
+ "type": "uint256"
1038
+ },
1039
+ {
1040
+ "internalType": "uint256",
1041
+ "name": "perTxLimitIn",
1042
+ "type": "uint256"
1043
+ },
1044
+ {
1045
+ "internalType": "uint32",
1046
+ "name": "bpsPerDayIn",
1047
+ "type": "uint32"
1048
+ },
1049
+ {
1050
+ "internalType": "uint256",
1051
+ "name": "globalLimitOut",
1052
+ "type": "uint256"
1053
+ },
1054
+ {
1055
+ "internalType": "uint256",
1056
+ "name": "perTxLimitOut",
1057
+ "type": "uint256"
1058
+ },
1059
+ {
1060
+ "internalType": "uint32",
1061
+ "name": "bpsPerDayOut",
1062
+ "type": "uint32"
1063
+ }
1064
+ ],
1065
+ "name": "setMinterCaps",
1066
+ "outputs": [],
1067
+ "stateMutability": "nonpayable",
1068
+ "type": "function"
1069
+ },
1070
+ {
1071
+ "inputs": [
1072
+ {
1073
+ "internalType": "uint128",
1074
+ "name": "inSeconds",
1075
+ "type": "uint128"
1076
+ }
1077
+ ],
1078
+ "name": "setUpdateFrequency",
1079
+ "outputs": [],
1080
+ "stateMutability": "nonpayable",
1081
+ "type": "function"
1082
+ },
1083
+ {
1084
+ "inputs": [
1085
+ {
1086
+ "internalType": "bytes4",
1087
+ "name": "interfaceId",
1088
+ "type": "bytes4"
1089
+ }
1090
+ ],
1091
+ "name": "supportsInterface",
1092
+ "outputs": [
1093
+ {
1094
+ "internalType": "bool",
1095
+ "name": "",
1096
+ "type": "bool"
1097
+ }
1098
+ ],
1099
+ "stateMutability": "view",
1100
+ "type": "function"
1101
+ },
1102
+ {
1103
+ "inputs": [],
1104
+ "name": "symbol",
1105
+ "outputs": [
1106
+ {
1107
+ "internalType": "string",
1108
+ "name": "",
1109
+ "type": "string"
1110
+ }
1111
+ ],
1112
+ "stateMutability": "view",
1113
+ "type": "function"
1114
+ },
1115
+ {
1116
+ "inputs": [],
1117
+ "name": "token",
1118
+ "outputs": [
1119
+ {
1120
+ "internalType": "address",
1121
+ "name": "",
1122
+ "type": "address"
1123
+ }
1124
+ ],
1125
+ "stateMutability": "view",
1126
+ "type": "function"
1127
+ },
1128
+ {
1129
+ "inputs": [],
1130
+ "name": "totalMintCap_unused",
1131
+ "outputs": [
1132
+ {
1133
+ "internalType": "uint256",
1134
+ "name": "",
1135
+ "type": "uint256"
1136
+ }
1137
+ ],
1138
+ "stateMutability": "view",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [],
1143
+ "name": "totalMintDebt",
1144
+ "outputs": [
1145
+ {
1146
+ "internalType": "uint128",
1147
+ "name": "",
1148
+ "type": "uint128"
1149
+ }
1150
+ ],
1151
+ "stateMutability": "view",
1152
+ "type": "function"
1153
+ },
1154
+ {
1155
+ "inputs": [],
1156
+ "name": "totalMinted",
1157
+ "outputs": [
1158
+ {
1159
+ "internalType": "uint256",
1160
+ "name": "",
1161
+ "type": "uint256"
1162
+ }
1163
+ ],
1164
+ "stateMutability": "view",
1165
+ "type": "function"
1166
+ },
1167
+ {
1168
+ "inputs": [],
1169
+ "name": "totalRewards",
1170
+ "outputs": [
1171
+ {
1172
+ "internalType": "uint128",
1173
+ "name": "",
1174
+ "type": "uint128"
1175
+ }
1176
+ ],
1177
+ "stateMutability": "view",
1178
+ "type": "function"
1179
+ },
1180
+ {
1181
+ "inputs": [
1182
+ {
1183
+ "internalType": "bytes32",
1184
+ "name": "role",
1185
+ "type": "bytes32"
1186
+ }
1187
+ ],
1188
+ "name": "unpause",
1189
+ "outputs": [],
1190
+ "stateMutability": "nonpayable",
1191
+ "type": "function"
1192
+ },
1193
+ {
1194
+ "inputs": [],
1195
+ "name": "updateAvatar",
1196
+ "outputs": [],
1197
+ "stateMutability": "nonpayable",
1198
+ "type": "function"
1199
+ },
1200
+ {
1201
+ "inputs": [],
1202
+ "name": "updateFrequency",
1203
+ "outputs": [
1204
+ {
1205
+ "internalType": "uint128",
1206
+ "name": "",
1207
+ "type": "uint128"
1208
+ }
1209
+ ],
1210
+ "stateMutability": "view",
1211
+ "type": "function"
1212
+ },
1213
+ {
1214
+ "inputs": [],
1215
+ "name": "upgrade1",
1216
+ "outputs": [],
1217
+ "stateMutability": "nonpayable",
1218
+ "type": "function"
1219
+ },
1220
+ {
1221
+ "inputs": [],
1222
+ "name": "upgrade2",
1223
+ "outputs": [],
1224
+ "stateMutability": "nonpayable",
1225
+ "type": "function"
1226
+ },
1227
+ {
1228
+ "inputs": [
1229
+ {
1230
+ "internalType": "address",
1231
+ "name": "newImplementation",
1232
+ "type": "address"
1233
+ }
1234
+ ],
1235
+ "name": "upgradeTo",
1236
+ "outputs": [],
1237
+ "stateMutability": "nonpayable",
1238
+ "type": "function"
1239
+ },
1240
+ {
1241
+ "inputs": [
1242
+ {
1243
+ "internalType": "address",
1244
+ "name": "newImplementation",
1245
+ "type": "address"
1246
+ },
1247
+ {
1248
+ "internalType": "bytes",
1249
+ "name": "data",
1250
+ "type": "bytes"
1251
+ }
1252
+ ],
1253
+ "name": "upgradeToAndCall",
1254
+ "outputs": [],
1255
+ "stateMutability": "payable",
1256
+ "type": "function"
1257
+ }
1258
+ ],
1259
+ "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c6142ac61004b600039600081816110f001528181611130015281816113b801526113f801526142ac6000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde03146102945780630e15561a146102b657806317eebf21146102eb5780631b3c90a814610319578063248a9ca31461033057806324ea54f4146103505780632d000cc0146103725780632f2ff15d146103875780632f4dae9f146103a757806330d643b5146103c7578063313ce567146103fb57806336568abe146104225780633659cfe6146104425780633e6326fc1461046257806340c10f19146104905780634162169f146104b0578063485cc955146104d15780634cabdbfb146104f15780634f1ef286146105065780634f31e2b5146105195780635955b5921461053a5780635ad411611461055c5780635aef7de61461057c5780635c9302c91461059d578063673ea086146105be57806370a08231146105e65780638da5cb5b146106065780639010d07c1461061b57806391d148541461063b578063956092121461065b57806395d89b41146107335780639ac25d08146107485780639dc29fac1461075d5780639e9e46661461077d578063a19ff6801461079d578063a217fddf14610748578063a2309ff8146107bf578063a4c0ed36146107d6578063abccdb52146107f6578063b32ad1a614610816578063b5bfddea14610838578063ca15c8731461086c578063ca4fb87c1461088c578063d5391393146108ae578063d547741f146108d0578063d56b73a4146108f0578063e1758bd814610995578063e47cbcbe146109aa578063ed56531a146109c1578063f1755339146109e1578063fc0c546a14610a01578063fe2e98b914610a22575b600080fd5b34801561026b57600080fd5b5061027f61027a366004613852565b610a44565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610a6f565b60405161028b91906138a8565b3480156102c257600080fd5b50610169546102de90600160801b90046001600160801b031681565b60405161028b91906138db565b3480156102f757600080fd5b5061030b610306366004613904565b610af6565b60405190815260200161028b565b34801561032557600080fd5b5061032e610e1f565b005b34801561033c57600080fd5b5061030b61034b366004613930565b610f67565b34801561035c57600080fd5b5061030b60008051602061425783398151915281565b34801561037e57600080fd5b5061032e610f7c565b34801561039357600080fd5b5061032e6103a2366004613949565b610fae565b3480156103b357600080fd5b5061032e6103c2366004613930565b610fd5565b3480156103d357600080fd5b5061030b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b34801561040757600080fd5b50610410611045565b60405160ff909116815260200161028b565b34801561042e57600080fd5b5061032e61043d366004613949565b6110c3565b34801561044e57600080fd5b5061032e61045d366004613979565b6110e5565b34801561046e57600080fd5b5061013054610483906001600160a01b031681565b60405161028b9190613996565b34801561049c57600080fd5b5061027f6104ab366004613904565b6111ae565b3480156104bc57600080fd5b5061012e54610483906001600160a01b031681565b3480156104dd57600080fd5b5061032e6104ec3660046139aa565b611221565b3480156104fd57600080fd5b5061032e611342565b61032e610514366004613a9b565b6113ad565b34801561052557600080fd5b50610169546102de906001600160801b031681565b34801561054657600080fd5b5061030b60008051602061423783398151915281565b34801561056857600080fd5b5061032e610577366004613b11565b611463565b34801561058857600080fd5b5061012f54610483906001600160a01b031681565b3480156105a957600080fd5b50610168546102de906001600160801b031681565b3480156105ca57600080fd5b50610168546102de90600160801b90046001600160801b031681565b3480156105f257600080fd5b5061030b610601366004613979565b6114f4565b34801561061257600080fd5b50610483611576565b34801561062757600080fd5b50610483610636366004613b92565b61157e565b34801561064757600080fd5b5061027f610656366004613949565b61159d565b34801561066757600080fd5b506106da610676366004613979565b610163602052600090815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160801b0380831693600160801b93849004821693838316930482169163ffffffff821691600160201b90041689565b60408051998a5260208a0198909852968801959095526001600160801b0393841660608801529183166080870152821660a0860152811660c085015263ffffffff90911660e0840152166101008201526101200161028b565b34801561073f57600080fd5b506102a96115c8565b34801561075457600080fd5b5061030b600081565b34801561076957600080fd5b5061027f610778366004613904565b61160e565b34801561078957600080fd5b5061027f610798366004613930565b6116ca565b3480156107a957600080fd5b5061030b6000805160206141d083398151915281565b3480156107cb57600080fd5b5061030b6101655481565b3480156107e257600080fd5b5061027f6107f1366004613bb4565b6116df565b34801561080257600080fd5b5061032e610811366004613c0c565b611887565b34801561082257600080fd5b5061030b60008051602061410b83398151915281565b34801561084457600080fd5b5061030b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b34801561087857600080fd5b5061030b610887366004613930565b6118fc565b34801561089857600080fd5b5061030b6000805160206141b083398151915281565b3480156108ba57600080fd5b5061030b60008051602061421783398151915281565b3480156108dc57600080fd5b5061032e6108eb366004613949565b611913565b3480156108fc57600080fd5b5061095661090b366004613979565b61016a60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160801b0380821692600160801b909204169063ffffffff1686565b604080519687526020870195909552938501929092526001600160801b03908116606085015216608083015263ffffffff1660a082015260c00161028b565b3480156109a157600080fd5b5061048361191d565b3480156109b657600080fd5b5061030b6101645481565b3480156109cd57600080fd5b5061032e6109dc366004613930565b6119b5565b3480156109ed57600080fd5b5061032e6109fc366004613c78565b611a1a565b348015610a0d57600080fd5b5061016654610483906001600160a01b031681565b348015610a2e57600080fd5b5061030b60008051602061412b83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610a695750610a6982611acd565b92915050565b61016654604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde03916004808301926000929190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613ca1565b905090565b60006000805160206141b0833981519152610b118133611b02565b60008051602061412b833981519152610b29816116ca565b158015610b3d5750610b3b60006116ca565b155b610b625760405162461bcd60e51b8152600401610b5990613d0e565b60405180910390fd5b610b6b33611b66565b33600090815261016360205260408120600301546001600160801b031615610bcb573360009081526101636020526040902060030154610bbd906001600160801b03600160801b820481169116613d55565b6001600160801b0316610bcd565b845b610166546040516370a0823160e01b8152919250600091610c5c916001600160a01b0316906370a0823190610c06903090600401613996565b60206040518083038186803b158015610c1e57600080fd5b505afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c569190613d7d565b87611de8565b90506000610c73610c6d8389613d96565b84611de8565b9050610c7f8183613dad565b3360009081526101636020526040902060040180549197508791601090610cb7908490600160801b90046001600160801b0316613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508561016960108282829054906101000a90046001600160801b0316610d009190613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016960008282829054906101000a90046001600160801b0316610d499190613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000811115610d8057610d808882611dfe565b8115610d9e5761016654610d9e906001600160a01b031689846121ee565b80610dab57610dab612244565b61016954604080513381526001600160a01b038b1660208201528082018a905260608101859052608081018490526001600160801b0390921660a0830152517fdea51570922020f525c1f30d8c1c57bd3cffe5632d70d13aaf8f8451388dbd959181900360c00190a1505050505092915050565b6101305460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190613df0565b61012e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190613df0565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526065602052604090206001015490565b61016854600160801b90046001600160801b0316610fac5761016880546001600160801b03166176a760881b1790555b565b610fb882826123a6565b6000828152609760205260409020610fd090826123c3565b505050565b60408051808201909152600080516020614257833981519152815260006020820181905261100b9082905b60200201513361159d565b8061101c575061101c816001611000565b6110385760405162461bcd60e51b8152600401610b5990613e23565b611041826123d8565b5050565b610166546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561108b57600080fd5b505afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190613e49565b6110cd8282612484565b6000828152609760205260409020610fd090826124fe565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561112e5760405162461bcd60e51b8152600401610b5990613e6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611160612513565b6001600160a01b0316146111865760405162461bcd60e51b8152600401610b5990613ea6565b61118f8161252f565b604080516000808252602082019092526111ab91839190612537565b50565b60006000805160206142178339815191526111c98133611b02565b6111d233611b66565b6111dc8484611dfe565b7f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f033858560405161120f93929190613ee0565b60405180910390a15060019392505050565b600054610100900460ff168061123a575060005460ff16155b6112565760405162461bcd60e51b8152600401610b5990613f04565b600054610100900460ff16158015611278576000805461ffff19166101011790555b611280612677565b61128982612702565b6001600160a01b0383166112d45760405162461bcd60e51b81526020600482015260126024820152717a65726f2061646d696e206164647265737360701b6044820152606401610b59565b6112dc61191d565b61016680546001600160a01b0319166001600160a01b0392831617905561016880546001600160801b03166176a760881b17905561012f546113219160009116612726565b61132c600084612726565b8015610fd0576000805461ff0019169055505050565b61016660009054906101000a90046001600160a01b03166001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561139357600080fd5b505af11580156113a7573d6000803e3d6000fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156113f65760405162461bcd60e51b8152600401610b5990613e6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611428612513565b6001600160a01b03161461144e5760405162461bcd60e51b8152600401610b5990613ea6565b6114578261252f565b61104182826001612537565b600061146f8133611b02565b81156114aa5761148d6000805160206141b08339815191528a610fae565b6114a56000805160206142178339815191528a611913565b6114da565b6114c26000805160206142178339815191528a610fae565b6114da6000805160206141b08339815191528a611913565b6114e989898989898989612730565b505050505050505050565b610166546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611526908590600401613996565b60206040518083038186803b15801561153e57600080fd5b505afa158015611552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613d7d565b6000610af181805b600082815260976020526040812061159690836129f0565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61016654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301926000929190829003018186803b158015610ab557600080fd5b60006000805160206142178339815191526116298133611b02565b600080516020614237833981519152611641816116ca565b158015611655575061165360006116ca565b155b6116715760405162461bcd60e51b8152600401610b5990613d0e565b61167a33611b66565b61168485856129fc565b7f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d093386866040516116b793929190613ee0565b60405180910390a1506001949350505050565b600090815260c9602052604090205460ff1690565b610166546000906001600160a01b031633146116fa57600080fd5b600080838060200190518101906117119190613f52565b9150915080600014156117555760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc818da185a5b925960a21b6044820152606401610b59565b6001600160a01b038216611769578561176b565b815b6101305460405163bf40fac160e01b815260206004820152601160248201527026aaa62a24a1a420a4a72fa927aaaa22a960791b60448201529193506001600160a01b03169063bf40fac19060640160206040518083038186803b1580156117d257600080fd5b505afa1580156117e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180a9190613df0565b60405163241dc2df60e01b81523060048201526001600160a01b0384811660248301526044820188905260648201849052919091169063241dc2df90608401600060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b5060019998505050505050505050565b6040805180820190915260008051602061425783398151915281526000602082018190526118b6908290611000565b806118c757506118c7816001611000565b6118e35760405162461bcd60e51b8152600401610b5990613e23565b6118f288888888888888612730565b5050505050505050565b6000818152609760205260408120610a6990612d30565b6110cd8282612d3a565b6101305460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561197d57600080fd5b505afa158015611991573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190613df0565b6040805180820190915260008051602061425783398151915281526000602082018190526119e4908290611000565b806119f557506119f5816001611000565b611a115760405162461bcd60e51b8152600401610b5990613e23565b61104182612d57565b604080518082019091526000805160206142578339815191528152600060208201819052611a49908290611000565b80611a5a5750611a5a816001611000565b611a765760405162461bcd60e51b8152600401610b5990613e23565b61016880546001600160801b03808516600160801b0291161790556040517f5497ec04d2873f2e2d376db2bb24e7e57851278c75fc1fcc9aab4db5fb70d22390611ac19084906138db565b60405180910390a15050565b60006001600160e01b03198216637965db0b60e01b1480610a6957506301ffc9a760e01b6001600160e01b0319831614610a69565b611b0c828261159d565b61104157611b24816001600160a01b03166014612ddc565b611b2f836020612ddc565b604051602001611b40929190613f80565b60408051601f198184030181529082905262461bcd60e51b8252610b59916004016138a8565b6001600160a01b03811660009081526101636020526040812060040154611b96906001600160801b031642613d96565b9050600061016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611be957600080fd5b505afa158015611bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c219190613d7d565b61016854909150600160801b90046001600160801b03168210611d37576001600160a01b0383166000908152610163602052604090206005015461271090611c6f9063ffffffff1683613fef565b611c799190614024565b6001600160a01b03841660009081526101636020908152604080832060030180546001600160801b0319166001600160801b03959095169490941790935561016a9052206004015461271090611cd59063ffffffff1683613fef565b611cdf9190614024565b6001600160a01b038416600090815261016a6020908152604080832060030180546001600160801b03199081166001600160801b03968716179091556101639092529091206004018054909116429092169190911790555b611d3f612f77565b6001600160a01b03831660009081526101636020526040902060050154610168546001600160801b03908116600160201b9092041614610fd05750506001600160a01b0316600090815261016360208181526040808420600380820180546001600160801b0390811690915561016a855292909520909401805482169055610168549290915260059092018054600160201b600160a01b03191691909216600160201b02179055565b6000818310611df75781611596565b5090919050565b60008051602061410b833981519152611e16816116ca565b158015611e2a5750611e2860006116ca565b155b611e465760405162461bcd60e51b8152600401610b5990613d0e565b6001600160a01b038316301415611e8e5760405162461bcd60e51b815260206004820152600c60248201526b36b4b73a103a379039b2b63360a11b6044820152606401610b59565b33600090815261016360205260409020541580611ebb575033600090815261016360205260409020548211155b611efd5760405162461bcd60e51b81526020600482015260136024820152721b5a5b9d195c881b585e08195e18d959591959606a1b6044820152606401610b59565b33600090815261016360205260409020600301546001600160801b03161580611f7057503360009081526101636020526040902060030154611f50908390600160801b90046001600160801b0316613dad565b33600090815261016360205260409020600301546001600160801b031610155b611fb85760405162461bcd60e51b81526020600482015260196024820152781b5a5b9d195c8819185a5b1e4818d85c08195e18d959591959603a1b6044820152606401610b59565b336000908152610163602052604090206003018054839190601090611fee908490600160801b90046001600160801b0316613dc5565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550816101636000336001600160a01b03166001600160a01b03168152602001908152602001600020600201600082825461204b9190613dad565b909155505033600090815261016360205260409020600101541580612089575033600090815261016360205260409020600181015460029091015411155b6120a55760405162461bcd60e51b8152600401610b5990614038565b8161016560008282546120b89190613dad565b909155505033600090815261016a602052604090206002015482116121055733600090815261016a6020526040812060020180548492906120fa908490613d96565b9091555061211a9050565b33600090815261016a60205260408120600201555b61012e5461012f54604051633203f21960e11b8152600481018590526001600160a01b03868116602483015291821660448201526000929190911690636407e43290606401602060405180830381600087803b15801561217957600080fd5b505af115801561218d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b19190614065565b9050806113a75760405162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b6044820152606401610b59565b610fd08363a9059cbb60e01b848460405160240161220d929190614082565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612fa7565b61016954610166546040516370a0823160e01b81526000926122e1926001600160801b03909116916001600160a01b03909116906370a082319061228c903090600401613996565b60206040518083038186803b1580156122a457600080fd5b505afa1580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc9190613d7d565b611de8565b905080156111ab5761016980548291906000906123089084906001600160801b0316613d55565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555080610165600082825461233f9190613d96565b909155505061016654604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561238b57600080fd5b505af115801561239f573d6000803e3d6000fd5b5050505050565b6123af82610f67565b6123b98133611b02565b610fd08383613079565b6000611596836001600160a01b0384166130ff565b806123e2816116ca565b806123f257506123f260006116ca565b61243c5760405162461bcd60e51b815260206004820152601b60248201527a14185d5cd8589b1950dbdb9d1c9bdb0e881b9bdd081c185d5cd959602a1b6044820152606401610b59565b600082815260c9602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a90611ac19084815260200190565b6001600160a01b03811633146124f45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b59565b611041828261314e565b6000611596836001600160a01b0384166131b5565b60008051602061416b833981519152546001600160a01b031690565b6111ab6132a8565b6000612541612513565b905061254c8461337b565b6000835111806125595750815b1561256a57612568848461340e565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661239f57805460ff191660011781556040516125e59086906125b6908590602401613996565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b17905261340e565b50805460ff191681556125f6612513565b6001600160a01b0316826001600160a01b03161461266e5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610b59565b61239f856134f9565b600054610100900460ff1680612690575060005460ff16155b6126ac5760405162461bcd60e51b8152600401610b5990613f04565b600054610100900460ff161580156126ce576000805461ffff19166101011790555b6126d6613539565b6126de613539565b6126e6613539565b6126ee613539565b80156111ab576000805461ff001916905550565b61013080546001600160a01b0319166001600160a01b0383161790556111ab610e1f565b610fb882826135a3565b6001600160a01b03871660009081526101636020908152604080832061016a90925282206004820154919290916001600160801b03161515906127816000805160206141b08339815191528c61159d565b600185018b905589855560058501805463ffffffff191663ffffffff8b16908117909155600480870180546001600160801b031916426001600160801b031617905561016654604080516318160ddd60e01b81529051949550612710946001600160a01b03909216926318160ddd928282019260209290829003018186803b15801561280c57600080fd5b505afa158015612820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128449190613d7d565b61284e9190613fef565b612858919061409b565b8460030160006101000a8154816001600160801b0302191690836001600160801b031602179055506127108563ffffffff1661016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d957600080fd5b505afa1580156128ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129119190613d7d565b61291b9190613fef565b612925919061409b565b6003840180546001600160801b0319166001600160801b03929092169190911790556001830187905585835560048301805463ffffffff191663ffffffff878116918217909255604080516001600160a01b038f168152602081018e90529081018c9052918a1660608301526080820189905260a0820188905260c082015281151560e08201528215156101008201527f58c3ceb7d4f068706ddc92911fae8701fac2c91c60bcc1b56ec7a6f56001aa5e906101200160405180910390a15050505050505050505050565b600061159683836135ad565b6000805160206141d0833981519152612a14816116ca565b158015612a285750612a2660006116ca565b155b612a445760405162461bcd60e51b8152600401610b5990613d0e565b33600090815261016a60205260409020541580612a71575033600090815261016a60205260409020548211155b612ab85760405162461bcd60e51b81526020600482015260186024820152771b5a5b9d195c88189d5c9b881b585e08195e18d95959195960421b6044820152606401610b59565b33600090815261016a60205260409020600301546001600160801b03161580612b2b575033600090815261016a6020526040902060030154612b0b908390600160801b90046001600160801b0316613dad565b33600090815261016a60205260409020600301546001600160801b031610155b612b775760405162461bcd60e51b815260206004820152601e60248201527f6d696e746572206275726e206461696c792063617020657863656564656400006044820152606401610b59565b33600090815261016a602052604090206003018054839190601090612bad908490600160801b90046001600160801b0316613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161016a6000336001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612c0a9190613dad565b909155505033600090815261016a60205260409020600101541580612c48575033600090815261016a60205260409020600181015460029091015411155b612c645760405162461bcd60e51b8152600401610b5990614038565b816101655410612c8c57816101656000828254612c819190613d96565b90915550612c939050565b6000610165555b33600090815261016360205260409020600201548211612cdb57336000908152610163602052604081206002018054849290612cd0908490613d96565b90915550612cf09050565b33600090815261016360205260408120600201555b6001600160a01b038316301415612d185761016654610fd0906001600160a01b0316836135d7565b61016654610fd0906001600160a01b03168484613624565b6000610a69825490565b612d4382610f67565b612d4d8133611b02565b610fd0838361314e565b80612d61816116ca565b158015612d755750612d7360006116ca565b155b612d915760405162461bcd60e51b8152600401610b5990613d0e565b600082815260c9602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba3190611ac19084815260200190565b60606000612deb836002613fef565b612df6906002613dad565b6001600160401b03811115612e0d57612e0d6139d8565b6040519080825280601f01601f191660200182016040528015612e37576020820181803683370190505b509050600360fc1b81600081518110612e5257612e52613e0d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e8157612e81613e0d565b60200101906001600160f81b031916908160001a9053506000612ea5846002613fef565b612eb0906001613dad565b90505b6001811115612f28576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612ee457612ee4613e0d565b1a60f81b828281518110612efa57612efa613e0d565b60200101906001600160f81b031916908160001a90535060049490941c93612f21816140c1565b9050612eb3565b5083156115965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b59565b612f846201518042614024565b61016880546001600160801b0319166001600160801b0392909216919091179055565b6000612ffc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136409092919063ffffffff16565b805190915015610fd0578080602001905181019061301a9190614065565b610fd05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b59565b613083828261159d565b6110415760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556130bb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600081815260018301602052604081205461314657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a69565b506000610a69565b613158828261159d565b156110415760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000818152600183016020526040812054801561329e5760006131d9600183613d96565b85549091506000906131ed90600190613d96565b905081811461325257600086600001828154811061320d5761320d613e0d565b906000526020600020015490508087600001848154811061323057613230613e0d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613263576132636140d8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a69565b6000915050610a69565b61012e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b1580156132ed57600080fd5b505afa158015613301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133259190613df0565b6001600160a01b031614610fac5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610b59565b803b6133df5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b59565b60008051602061416b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b61346d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b59565b600080846001600160a01b03168460405161348891906140ee565b600060405180830381855af49150503d80600081146134c3576040519150601f19603f3d011682016040523d82523d6000602084013e6134c8565b606091505b50915091506134f082826040518060600160405280602781526020016141f060279139613657565b95945050505050565b6135028161337b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff1680613552575060005460ff16155b61356e5760405162461bcd60e51b8152600401610b5990613f04565b600054610100900460ff161580156126ee576000805461ffff191661010117905580156111ab576000805461ff001916905550565b6110418282613079565b60008260000182815481106135c4576135c4613e0d565b9060005260206000200154905092915050565b611041826342966c68836040516024016135f391815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050613690565b610fd0836379cc679084846040516024016135f3929190614082565b606061364f848460008561372a565b949350505050565b60608315613666575081611596565b8251156136765782518084602001fd5b8160405162461bcd60e51b8152600401610b5991906138a8565b60006136c08260405180606001604052806025815260200161418b602591396001600160a01b0386169190613640565b805190915015610fd057808060200190518101906136de9190614065565b610fd05760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e4f7065726174696f6e3a20646964206e6f742073756363656564006044820152606401610b59565b60608247101561378b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b59565b843b6137d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b59565b600080866001600160a01b031685876040516137f591906140ee565b60006040518083038185875af1925050503d8060008114613832576040519150601f19603f3d011682016040523d82523d6000602084013e613837565b606091505b5091509150613847828286613657565b979650505050505050565b60006020828403121561386457600080fd5b81356001600160e01b03198116811461159657600080fd5b60005b8381101561389757818101518382015260200161387f565b838111156113a75750506000910152565b60208152600082518060208401526138c781604085016020870161387c565b601f01601f19169190910160400192915050565b6001600160801b0391909116815260200190565b6001600160a01b03811681146111ab57600080fd5b6000806040838503121561391757600080fd5b8235613922816138ef565b946020939093013593505050565b60006020828403121561394257600080fd5b5035919050565b6000806040838503121561395c57600080fd5b82359150602083013561396e816138ef565b809150509250929050565b60006020828403121561398b57600080fd5b8135611596816138ef565b6001600160a01b0391909116815260200190565b600080604083850312156139bd57600080fd5b82356139c8816138ef565b9150602083013561396e816138ef565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a1657613a166139d8565b604052919050565b60006001600160401b03821115613a3757613a376139d8565b50601f01601f191660200190565b600082601f830112613a5657600080fd5b8135613a69613a6482613a1e565b6139ee565b818152846020838601011115613a7e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613aae57600080fd5b8235613ab9816138ef565b915060208301356001600160401b03811115613ad457600080fd5b613ae085828601613a45565b9150509250929050565b803563ffffffff81168114613afe57600080fd5b919050565b80151581146111ab57600080fd5b600080600080600080600080610100898b031215613b2e57600080fd5b8835613b39816138ef565b97506020890135965060408901359550613b5560608a01613aea565b94506080890135935060a08901359250613b7160c08a01613aea565b915060e0890135613b8181613b03565b809150509295985092959890939650565b60008060408385031215613ba557600080fd5b50508035926020909101359150565b600080600060608486031215613bc957600080fd5b8335613bd4816138ef565b92506020840135915060408401356001600160401b03811115613bf657600080fd5b613c0286828701613a45565b9150509250925092565b600080600080600080600060e0888a031215613c2757600080fd5b8735613c32816138ef565b96506020880135955060408801359450613c4e60608901613aea565b93506080880135925060a08801359150613c6a60c08901613aea565b905092959891949750929550565b600060208284031215613c8a57600080fd5b81356001600160801b038116811461159657600080fd5b600060208284031215613cb357600080fd5b81516001600160401b03811115613cc957600080fd5b8201601f81018413613cda57600080fd5b8051613ce8613a6482613a1e565b818152856020838501011115613cfd57600080fd5b6134f082602083016020860161387c565b60208082526017908201527614185d5cd8589b1950dbdb9d1c9bdb0e881c185d5cd959604a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160801b0383811690831681811015613d7557613d75613d3f565b039392505050565b600060208284031215613d8f57600080fd5b5051919050565b600082821015613da857613da8613d3f565b500390565b60008219821115613dc057613dc0613d3f565b500190565b60006001600160801b03828116848216808303821115613de757613de7613d3f565b01949350505050565b600060208284031215613e0257600080fd5b8151611596816138ef565b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b726f6c65206d697373696e6760a01b604082015260600190565b600060208284031215613e5b57600080fd5b815160ff8116811461159657600080fd5b6020808252602c9082015260008051602061414b83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061414b83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008060408385031215613f6557600080fd5b8251613f70816138ef565b6020939093015192949293505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613fb281601785016020880161387c565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613fe381602884016020880161387c565b01602801949350505050565b600081600019048311821515161561400957614009613d3f565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826140335761403361400e565b500490565b6020808252601390820152721b5a5b9d195c8818d85c08195e18d959591959606a1b604082015260600190565b60006020828403121561407757600080fd5b815161159681613b03565b6001600160a01b03929092168252602082015260400190565b60006001600160801b03838116806140b5576140b561400e565b92169190910492915050565b6000816140d0576140d0613d3f565b506000190190565b634e487b7160e01b600052603160045260246000fd5b6000825161410081846020870161387c565b919091019291505056feb2a18ae5d0b623b41098012c516d0bf4bef38c068c9e397da870c290888b19999604fa49b1cb3aa782c099225b9c340b6afeb802be5d4b3314ba27a14502cdfa46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546f6b656e4f7065726174696f6e3a206c6f772d6c6576656c2063616c6c206661696c65645407862f04286ebe607684514c14b7fffc750b6bf52ba44ea49569174845a5bd62d52416825983abd68b16e092b60c2eac31fd673bcce92494e063af530d9c30416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6b601d6a8ea5419a4251765936e52b2763485fede82d3c5dfd765cd67d30f4f2255435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220be7110f5538b98b587216b8dab95f28e4e8578c585f700d28f068e1f1e0a323764736f6c63430008080033",
1260
+ "deployedBytecode": "0x60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde03146102945780630e15561a146102b657806317eebf21146102eb5780631b3c90a814610319578063248a9ca31461033057806324ea54f4146103505780632d000cc0146103725780632f2ff15d146103875780632f4dae9f146103a757806330d643b5146103c7578063313ce567146103fb57806336568abe146104225780633659cfe6146104425780633e6326fc1461046257806340c10f19146104905780634162169f146104b0578063485cc955146104d15780634cabdbfb146104f15780634f1ef286146105065780634f31e2b5146105195780635955b5921461053a5780635ad411611461055c5780635aef7de61461057c5780635c9302c91461059d578063673ea086146105be57806370a08231146105e65780638da5cb5b146106065780639010d07c1461061b57806391d148541461063b578063956092121461065b57806395d89b41146107335780639ac25d08146107485780639dc29fac1461075d5780639e9e46661461077d578063a19ff6801461079d578063a217fddf14610748578063a2309ff8146107bf578063a4c0ed36146107d6578063abccdb52146107f6578063b32ad1a614610816578063b5bfddea14610838578063ca15c8731461086c578063ca4fb87c1461088c578063d5391393146108ae578063d547741f146108d0578063d56b73a4146108f0578063e1758bd814610995578063e47cbcbe146109aa578063ed56531a146109c1578063f1755339146109e1578063fc0c546a14610a01578063fe2e98b914610a22575b600080fd5b34801561026b57600080fd5b5061027f61027a366004613852565b610a44565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610a6f565b60405161028b91906138a8565b3480156102c257600080fd5b50610169546102de90600160801b90046001600160801b031681565b60405161028b91906138db565b3480156102f757600080fd5b5061030b610306366004613904565b610af6565b60405190815260200161028b565b34801561032557600080fd5b5061032e610e1f565b005b34801561033c57600080fd5b5061030b61034b366004613930565b610f67565b34801561035c57600080fd5b5061030b60008051602061425783398151915281565b34801561037e57600080fd5b5061032e610f7c565b34801561039357600080fd5b5061032e6103a2366004613949565b610fae565b3480156103b357600080fd5b5061032e6103c2366004613930565b610fd5565b3480156103d357600080fd5b5061030b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b34801561040757600080fd5b50610410611045565b60405160ff909116815260200161028b565b34801561042e57600080fd5b5061032e61043d366004613949565b6110c3565b34801561044e57600080fd5b5061032e61045d366004613979565b6110e5565b34801561046e57600080fd5b5061013054610483906001600160a01b031681565b60405161028b9190613996565b34801561049c57600080fd5b5061027f6104ab366004613904565b6111ae565b3480156104bc57600080fd5b5061012e54610483906001600160a01b031681565b3480156104dd57600080fd5b5061032e6104ec3660046139aa565b611221565b3480156104fd57600080fd5b5061032e611342565b61032e610514366004613a9b565b6113ad565b34801561052557600080fd5b50610169546102de906001600160801b031681565b34801561054657600080fd5b5061030b60008051602061423783398151915281565b34801561056857600080fd5b5061032e610577366004613b11565b611463565b34801561058857600080fd5b5061012f54610483906001600160a01b031681565b3480156105a957600080fd5b50610168546102de906001600160801b031681565b3480156105ca57600080fd5b50610168546102de90600160801b90046001600160801b031681565b3480156105f257600080fd5b5061030b610601366004613979565b6114f4565b34801561061257600080fd5b50610483611576565b34801561062757600080fd5b50610483610636366004613b92565b61157e565b34801561064757600080fd5b5061027f610656366004613949565b61159d565b34801561066757600080fd5b506106da610676366004613979565b610163602052600090815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160801b0380831693600160801b93849004821693838316930482169163ffffffff821691600160201b90041689565b60408051998a5260208a0198909852968801959095526001600160801b0393841660608801529183166080870152821660a0860152811660c085015263ffffffff90911660e0840152166101008201526101200161028b565b34801561073f57600080fd5b506102a96115c8565b34801561075457600080fd5b5061030b600081565b34801561076957600080fd5b5061027f610778366004613904565b61160e565b34801561078957600080fd5b5061027f610798366004613930565b6116ca565b3480156107a957600080fd5b5061030b6000805160206141d083398151915281565b3480156107cb57600080fd5b5061030b6101655481565b3480156107e257600080fd5b5061027f6107f1366004613bb4565b6116df565b34801561080257600080fd5b5061032e610811366004613c0c565b611887565b34801561082257600080fd5b5061030b60008051602061410b83398151915281565b34801561084457600080fd5b5061030b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b34801561087857600080fd5b5061030b610887366004613930565b6118fc565b34801561089857600080fd5b5061030b6000805160206141b083398151915281565b3480156108ba57600080fd5b5061030b60008051602061421783398151915281565b3480156108dc57600080fd5b5061032e6108eb366004613949565b611913565b3480156108fc57600080fd5b5061095661090b366004613979565b61016a60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160801b0380821692600160801b909204169063ffffffff1686565b604080519687526020870195909552938501929092526001600160801b03908116606085015216608083015263ffffffff1660a082015260c00161028b565b3480156109a157600080fd5b5061048361191d565b3480156109b657600080fd5b5061030b6101645481565b3480156109cd57600080fd5b5061032e6109dc366004613930565b6119b5565b3480156109ed57600080fd5b5061032e6109fc366004613c78565b611a1a565b348015610a0d57600080fd5b5061016654610483906001600160a01b031681565b348015610a2e57600080fd5b5061030b60008051602061412b83398151915281565b60006001600160e01b03198216635a05180f60e01b1480610a695750610a6982611acd565b92915050565b61016654604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde03916004808301926000929190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af19190810190613ca1565b905090565b60006000805160206141b0833981519152610b118133611b02565b60008051602061412b833981519152610b29816116ca565b158015610b3d5750610b3b60006116ca565b155b610b625760405162461bcd60e51b8152600401610b5990613d0e565b60405180910390fd5b610b6b33611b66565b33600090815261016360205260408120600301546001600160801b031615610bcb573360009081526101636020526040902060030154610bbd906001600160801b03600160801b820481169116613d55565b6001600160801b0316610bcd565b845b610166546040516370a0823160e01b8152919250600091610c5c916001600160a01b0316906370a0823190610c06903090600401613996565b60206040518083038186803b158015610c1e57600080fd5b505afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c569190613d7d565b87611de8565b90506000610c73610c6d8389613d96565b84611de8565b9050610c7f8183613dad565b3360009081526101636020526040902060040180549197508791601090610cb7908490600160801b90046001600160801b0316613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508561016960108282829054906101000a90046001600160801b0316610d009190613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016960008282829054906101000a90046001600160801b0316610d499190613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000811115610d8057610d808882611dfe565b8115610d9e5761016654610d9e906001600160a01b031689846121ee565b80610dab57610dab612244565b61016954604080513381526001600160a01b038b1660208201528082018a905260608101859052608081018490526001600160801b0390921660a0830152517fdea51570922020f525c1f30d8c1c57bd3cffe5632d70d13aaf8f8451388dbd959181900360c00190a1505050505092915050565b6101305460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190613df0565b61012e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190613df0565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526065602052604090206001015490565b61016854600160801b90046001600160801b0316610fac5761016880546001600160801b03166176a760881b1790555b565b610fb882826123a6565b6000828152609760205260409020610fd090826123c3565b505050565b60408051808201909152600080516020614257833981519152815260006020820181905261100b9082905b60200201513361159d565b8061101c575061101c816001611000565b6110385760405162461bcd60e51b8152600401610b5990613e23565b611041826123d8565b5050565b610166546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561108b57600080fd5b505afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190613e49565b6110cd8282612484565b6000828152609760205260409020610fd090826124fe565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561112e5760405162461bcd60e51b8152600401610b5990613e6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611160612513565b6001600160a01b0316146111865760405162461bcd60e51b8152600401610b5990613ea6565b61118f8161252f565b604080516000808252602082019092526111ab91839190612537565b50565b60006000805160206142178339815191526111c98133611b02565b6111d233611b66565b6111dc8484611dfe565b7f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f033858560405161120f93929190613ee0565b60405180910390a15060019392505050565b600054610100900460ff168061123a575060005460ff16155b6112565760405162461bcd60e51b8152600401610b5990613f04565b600054610100900460ff16158015611278576000805461ffff19166101011790555b611280612677565b61128982612702565b6001600160a01b0383166112d45760405162461bcd60e51b81526020600482015260126024820152717a65726f2061646d696e206164647265737360701b6044820152606401610b59565b6112dc61191d565b61016680546001600160a01b0319166001600160a01b0392831617905561016880546001600160801b03166176a760881b17905561012f546113219160009116612726565b61132c600084612726565b8015610fd0576000805461ff0019169055505050565b61016660009054906101000a90046001600160a01b03166001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561139357600080fd5b505af11580156113a7573d6000803e3d6000fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156113f65760405162461bcd60e51b8152600401610b5990613e6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611428612513565b6001600160a01b03161461144e5760405162461bcd60e51b8152600401610b5990613ea6565b6114578261252f565b61104182826001612537565b600061146f8133611b02565b81156114aa5761148d6000805160206141b08339815191528a610fae565b6114a56000805160206142178339815191528a611913565b6114da565b6114c26000805160206142178339815191528a610fae565b6114da6000805160206141b08339815191528a611913565b6114e989898989898989612730565b505050505050505050565b610166546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611526908590600401613996565b60206040518083038186803b15801561153e57600080fd5b505afa158015611552573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613d7d565b6000610af181805b600082815260976020526040812061159690836129f0565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61016654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301926000929190829003018186803b158015610ab557600080fd5b60006000805160206142178339815191526116298133611b02565b600080516020614237833981519152611641816116ca565b158015611655575061165360006116ca565b155b6116715760405162461bcd60e51b8152600401610b5990613d0e565b61167a33611b66565b61168485856129fc565b7f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d093386866040516116b793929190613ee0565b60405180910390a1506001949350505050565b600090815260c9602052604090205460ff1690565b610166546000906001600160a01b031633146116fa57600080fd5b600080838060200190518101906117119190613f52565b9150915080600014156117555760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc818da185a5b925960a21b6044820152606401610b59565b6001600160a01b038216611769578561176b565b815b6101305460405163bf40fac160e01b815260206004820152601160248201527026aaa62a24a1a420a4a72fa927aaaa22a960791b60448201529193506001600160a01b03169063bf40fac19060640160206040518083038186803b1580156117d257600080fd5b505afa1580156117e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180a9190613df0565b60405163241dc2df60e01b81523060048201526001600160a01b0384811660248301526044820188905260648201849052919091169063241dc2df90608401600060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b5060019998505050505050505050565b6040805180820190915260008051602061425783398151915281526000602082018190526118b6908290611000565b806118c757506118c7816001611000565b6118e35760405162461bcd60e51b8152600401610b5990613e23565b6118f288888888888888612730565b5050505050505050565b6000818152609760205260408120610a6990612d30565b6110cd8282612d3a565b6101305460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561197d57600080fd5b505afa158015611991573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af19190613df0565b6040805180820190915260008051602061425783398151915281526000602082018190526119e4908290611000565b806119f557506119f5816001611000565b611a115760405162461bcd60e51b8152600401610b5990613e23565b61104182612d57565b604080518082019091526000805160206142578339815191528152600060208201819052611a49908290611000565b80611a5a5750611a5a816001611000565b611a765760405162461bcd60e51b8152600401610b5990613e23565b61016880546001600160801b03808516600160801b0291161790556040517f5497ec04d2873f2e2d376db2bb24e7e57851278c75fc1fcc9aab4db5fb70d22390611ac19084906138db565b60405180910390a15050565b60006001600160e01b03198216637965db0b60e01b1480610a6957506301ffc9a760e01b6001600160e01b0319831614610a69565b611b0c828261159d565b61104157611b24816001600160a01b03166014612ddc565b611b2f836020612ddc565b604051602001611b40929190613f80565b60408051601f198184030181529082905262461bcd60e51b8252610b59916004016138a8565b6001600160a01b03811660009081526101636020526040812060040154611b96906001600160801b031642613d96565b9050600061016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611be957600080fd5b505afa158015611bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c219190613d7d565b61016854909150600160801b90046001600160801b03168210611d37576001600160a01b0383166000908152610163602052604090206005015461271090611c6f9063ffffffff1683613fef565b611c799190614024565b6001600160a01b03841660009081526101636020908152604080832060030180546001600160801b0319166001600160801b03959095169490941790935561016a9052206004015461271090611cd59063ffffffff1683613fef565b611cdf9190614024565b6001600160a01b038416600090815261016a6020908152604080832060030180546001600160801b03199081166001600160801b03968716179091556101639092529091206004018054909116429092169190911790555b611d3f612f77565b6001600160a01b03831660009081526101636020526040902060050154610168546001600160801b03908116600160201b9092041614610fd05750506001600160a01b0316600090815261016360208181526040808420600380820180546001600160801b0390811690915561016a855292909520909401805482169055610168549290915260059092018054600160201b600160a01b03191691909216600160201b02179055565b6000818310611df75781611596565b5090919050565b60008051602061410b833981519152611e16816116ca565b158015611e2a5750611e2860006116ca565b155b611e465760405162461bcd60e51b8152600401610b5990613d0e565b6001600160a01b038316301415611e8e5760405162461bcd60e51b815260206004820152600c60248201526b36b4b73a103a379039b2b63360a11b6044820152606401610b59565b33600090815261016360205260409020541580611ebb575033600090815261016360205260409020548211155b611efd5760405162461bcd60e51b81526020600482015260136024820152721b5a5b9d195c881b585e08195e18d959591959606a1b6044820152606401610b59565b33600090815261016360205260409020600301546001600160801b03161580611f7057503360009081526101636020526040902060030154611f50908390600160801b90046001600160801b0316613dad565b33600090815261016360205260409020600301546001600160801b031610155b611fb85760405162461bcd60e51b81526020600482015260196024820152781b5a5b9d195c8819185a5b1e4818d85c08195e18d959591959603a1b6044820152606401610b59565b336000908152610163602052604090206003018054839190601090611fee908490600160801b90046001600160801b0316613dc5565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550816101636000336001600160a01b03166001600160a01b03168152602001908152602001600020600201600082825461204b9190613dad565b909155505033600090815261016360205260409020600101541580612089575033600090815261016360205260409020600181015460029091015411155b6120a55760405162461bcd60e51b8152600401610b5990614038565b8161016560008282546120b89190613dad565b909155505033600090815261016a602052604090206002015482116121055733600090815261016a6020526040812060020180548492906120fa908490613d96565b9091555061211a9050565b33600090815261016a60205260408120600201555b61012e5461012f54604051633203f21960e11b8152600481018590526001600160a01b03868116602483015291821660448201526000929190911690636407e43290606401602060405180830381600087803b15801561217957600080fd5b505af115801561218d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b19190614065565b9050806113a75760405162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b6044820152606401610b59565b610fd08363a9059cbb60e01b848460405160240161220d929190614082565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612fa7565b61016954610166546040516370a0823160e01b81526000926122e1926001600160801b03909116916001600160a01b03909116906370a082319061228c903090600401613996565b60206040518083038186803b1580156122a457600080fd5b505afa1580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc9190613d7d565b611de8565b905080156111ab5761016980548291906000906123089084906001600160801b0316613d55565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555080610165600082825461233f9190613d96565b909155505061016654604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561238b57600080fd5b505af115801561239f573d6000803e3d6000fd5b5050505050565b6123af82610f67565b6123b98133611b02565b610fd08383613079565b6000611596836001600160a01b0384166130ff565b806123e2816116ca565b806123f257506123f260006116ca565b61243c5760405162461bcd60e51b815260206004820152601b60248201527a14185d5cd8589b1950dbdb9d1c9bdb0e881b9bdd081c185d5cd959602a1b6044820152606401610b59565b600082815260c9602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a90611ac19084815260200190565b6001600160a01b03811633146124f45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b59565b611041828261314e565b6000611596836001600160a01b0384166131b5565b60008051602061416b833981519152546001600160a01b031690565b6111ab6132a8565b6000612541612513565b905061254c8461337b565b6000835111806125595750815b1561256a57612568848461340e565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661239f57805460ff191660011781556040516125e59086906125b6908590602401613996565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b17905261340e565b50805460ff191681556125f6612513565b6001600160a01b0316826001600160a01b03161461266e5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610b59565b61239f856134f9565b600054610100900460ff1680612690575060005460ff16155b6126ac5760405162461bcd60e51b8152600401610b5990613f04565b600054610100900460ff161580156126ce576000805461ffff19166101011790555b6126d6613539565b6126de613539565b6126e6613539565b6126ee613539565b80156111ab576000805461ff001916905550565b61013080546001600160a01b0319166001600160a01b0383161790556111ab610e1f565b610fb882826135a3565b6001600160a01b03871660009081526101636020908152604080832061016a90925282206004820154919290916001600160801b03161515906127816000805160206141b08339815191528c61159d565b600185018b905589855560058501805463ffffffff191663ffffffff8b16908117909155600480870180546001600160801b031916426001600160801b031617905561016654604080516318160ddd60e01b81529051949550612710946001600160a01b03909216926318160ddd928282019260209290829003018186803b15801561280c57600080fd5b505afa158015612820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128449190613d7d565b61284e9190613fef565b612858919061409b565b8460030160006101000a8154816001600160801b0302191690836001600160801b031602179055506127108563ffffffff1661016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d957600080fd5b505afa1580156128ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129119190613d7d565b61291b9190613fef565b612925919061409b565b6003840180546001600160801b0319166001600160801b03929092169190911790556001830187905585835560048301805463ffffffff191663ffffffff878116918217909255604080516001600160a01b038f168152602081018e90529081018c9052918a1660608301526080820189905260a0820188905260c082015281151560e08201528215156101008201527f58c3ceb7d4f068706ddc92911fae8701fac2c91c60bcc1b56ec7a6f56001aa5e906101200160405180910390a15050505050505050505050565b600061159683836135ad565b6000805160206141d0833981519152612a14816116ca565b158015612a285750612a2660006116ca565b155b612a445760405162461bcd60e51b8152600401610b5990613d0e565b33600090815261016a60205260409020541580612a71575033600090815261016a60205260409020548211155b612ab85760405162461bcd60e51b81526020600482015260186024820152771b5a5b9d195c88189d5c9b881b585e08195e18d95959195960421b6044820152606401610b59565b33600090815261016a60205260409020600301546001600160801b03161580612b2b575033600090815261016a6020526040902060030154612b0b908390600160801b90046001600160801b0316613dad565b33600090815261016a60205260409020600301546001600160801b031610155b612b775760405162461bcd60e51b815260206004820152601e60248201527f6d696e746572206275726e206461696c792063617020657863656564656400006044820152606401610b59565b33600090815261016a602052604090206003018054839190601090612bad908490600160801b90046001600160801b0316613dc5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161016a6000336001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612c0a9190613dad565b909155505033600090815261016a60205260409020600101541580612c48575033600090815261016a60205260409020600181015460029091015411155b612c645760405162461bcd60e51b8152600401610b5990614038565b816101655410612c8c57816101656000828254612c819190613d96565b90915550612c939050565b6000610165555b33600090815261016360205260409020600201548211612cdb57336000908152610163602052604081206002018054849290612cd0908490613d96565b90915550612cf09050565b33600090815261016360205260408120600201555b6001600160a01b038316301415612d185761016654610fd0906001600160a01b0316836135d7565b61016654610fd0906001600160a01b03168484613624565b6000610a69825490565b612d4382610f67565b612d4d8133611b02565b610fd0838361314e565b80612d61816116ca565b158015612d755750612d7360006116ca565b155b612d915760405162461bcd60e51b8152600401610b5990613d0e565b600082815260c9602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba3190611ac19084815260200190565b60606000612deb836002613fef565b612df6906002613dad565b6001600160401b03811115612e0d57612e0d6139d8565b6040519080825280601f01601f191660200182016040528015612e37576020820181803683370190505b509050600360fc1b81600081518110612e5257612e52613e0d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e8157612e81613e0d565b60200101906001600160f81b031916908160001a9053506000612ea5846002613fef565b612eb0906001613dad565b90505b6001811115612f28576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612ee457612ee4613e0d565b1a60f81b828281518110612efa57612efa613e0d565b60200101906001600160f81b031916908160001a90535060049490941c93612f21816140c1565b9050612eb3565b5083156115965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b59565b612f846201518042614024565b61016880546001600160801b0319166001600160801b0392909216919091179055565b6000612ffc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136409092919063ffffffff16565b805190915015610fd0578080602001905181019061301a9190614065565b610fd05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b59565b613083828261159d565b6110415760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556130bb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600081815260018301602052604081205461314657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a69565b506000610a69565b613158828261159d565b156110415760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000818152600183016020526040812054801561329e5760006131d9600183613d96565b85549091506000906131ed90600190613d96565b905081811461325257600086600001828154811061320d5761320d613e0d565b906000526020600020015490508087600001848154811061323057613230613e0d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613263576132636140d8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a69565b6000915050610a69565b61012e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b1580156132ed57600080fd5b505afa158015613301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133259190613df0565b6001600160a01b031614610fac5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610b59565b803b6133df5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b59565b60008051602061416b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b61346d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b59565b600080846001600160a01b03168460405161348891906140ee565b600060405180830381855af49150503d80600081146134c3576040519150601f19603f3d011682016040523d82523d6000602084013e6134c8565b606091505b50915091506134f082826040518060600160405280602781526020016141f060279139613657565b95945050505050565b6135028161337b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600054610100900460ff1680613552575060005460ff16155b61356e5760405162461bcd60e51b8152600401610b5990613f04565b600054610100900460ff161580156126ee576000805461ffff191661010117905580156111ab576000805461ff001916905550565b6110418282613079565b60008260000182815481106135c4576135c4613e0d565b9060005260206000200154905092915050565b611041826342966c68836040516024016135f391815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050613690565b610fd0836379cc679084846040516024016135f3929190614082565b606061364f848460008561372a565b949350505050565b60608315613666575081611596565b8251156136765782518084602001fd5b8160405162461bcd60e51b8152600401610b5991906138a8565b60006136c08260405180606001604052806025815260200161418b602591396001600160a01b0386169190613640565b805190915015610fd057808060200190518101906136de9190614065565b610fd05760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e4f7065726174696f6e3a20646964206e6f742073756363656564006044820152606401610b59565b60608247101561378b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b59565b843b6137d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b59565b600080866001600160a01b031685876040516137f591906140ee565b60006040518083038185875af1925050503d8060008114613832576040519150601f19603f3d011682016040523d82523d6000602084013e613837565b606091505b5091509150613847828286613657565b979650505050505050565b60006020828403121561386457600080fd5b81356001600160e01b03198116811461159657600080fd5b60005b8381101561389757818101518382015260200161387f565b838111156113a75750506000910152565b60208152600082518060208401526138c781604085016020870161387c565b601f01601f19169190910160400192915050565b6001600160801b0391909116815260200190565b6001600160a01b03811681146111ab57600080fd5b6000806040838503121561391757600080fd5b8235613922816138ef565b946020939093013593505050565b60006020828403121561394257600080fd5b5035919050565b6000806040838503121561395c57600080fd5b82359150602083013561396e816138ef565b809150509250929050565b60006020828403121561398b57600080fd5b8135611596816138ef565b6001600160a01b0391909116815260200190565b600080604083850312156139bd57600080fd5b82356139c8816138ef565b9150602083013561396e816138ef565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a1657613a166139d8565b604052919050565b60006001600160401b03821115613a3757613a376139d8565b50601f01601f191660200190565b600082601f830112613a5657600080fd5b8135613a69613a6482613a1e565b6139ee565b818152846020838601011115613a7e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613aae57600080fd5b8235613ab9816138ef565b915060208301356001600160401b03811115613ad457600080fd5b613ae085828601613a45565b9150509250929050565b803563ffffffff81168114613afe57600080fd5b919050565b80151581146111ab57600080fd5b600080600080600080600080610100898b031215613b2e57600080fd5b8835613b39816138ef565b97506020890135965060408901359550613b5560608a01613aea565b94506080890135935060a08901359250613b7160c08a01613aea565b915060e0890135613b8181613b03565b809150509295985092959890939650565b60008060408385031215613ba557600080fd5b50508035926020909101359150565b600080600060608486031215613bc957600080fd5b8335613bd4816138ef565b92506020840135915060408401356001600160401b03811115613bf657600080fd5b613c0286828701613a45565b9150509250925092565b600080600080600080600060e0888a031215613c2757600080fd5b8735613c32816138ef565b96506020880135955060408801359450613c4e60608901613aea565b93506080880135925060a08801359150613c6a60c08901613aea565b905092959891949750929550565b600060208284031215613c8a57600080fd5b81356001600160801b038116811461159657600080fd5b600060208284031215613cb357600080fd5b81516001600160401b03811115613cc957600080fd5b8201601f81018413613cda57600080fd5b8051613ce8613a6482613a1e565b818152856020838501011115613cfd57600080fd5b6134f082602083016020860161387c565b60208082526017908201527614185d5cd8589b1950dbdb9d1c9bdb0e881c185d5cd959604a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160801b0383811690831681811015613d7557613d75613d3f565b039392505050565b600060208284031215613d8f57600080fd5b5051919050565b600082821015613da857613da8613d3f565b500390565b60008219821115613dc057613dc0613d3f565b500190565b60006001600160801b03828116848216808303821115613de757613de7613d3f565b01949350505050565b600060208284031215613e0257600080fd5b8151611596816138ef565b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b726f6c65206d697373696e6760a01b604082015260600190565b600060208284031215613e5b57600080fd5b815160ff8116811461159657600080fd5b6020808252602c9082015260008051602061414b83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061414b83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008060408385031215613f6557600080fd5b8251613f70816138ef565b6020939093015192949293505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613fb281601785016020880161387c565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613fe381602884016020880161387c565b01602801949350505050565b600081600019048311821515161561400957614009613d3f565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826140335761403361400e565b500490565b6020808252601390820152721b5a5b9d195c8818d85c08195e18d959591959606a1b604082015260600190565b60006020828403121561407757600080fd5b815161159681613b03565b6001600160a01b03929092168252602082015260400190565b60006001600160801b03838116806140b5576140b561400e565b92169190910492915050565b6000816140d0576140d0613d3f565b506000190190565b634e487b7160e01b600052603160045260246000fd5b6000825161410081846020870161387c565b919091019291505056feb2a18ae5d0b623b41098012c516d0bf4bef38c068c9e397da870c290888b19999604fa49b1cb3aa782c099225b9c340b6afeb802be5d4b3314ba27a14502cdfa46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546f6b656e4f7065726174696f6e3a206c6f772d6c6576656c2063616c6c206661696c65645407862f04286ebe607684514c14b7fffc750b6bf52ba44ea49569174845a5bd62d52416825983abd68b16e092b60c2eac31fd673bcce92494e063af530d9c30416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6b601d6a8ea5419a4251765936e52b2763485fede82d3c5dfd765cd67d30f4f2255435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220be7110f5538b98b587216b8dab95f28e4e8578c585f700d28f068e1f1e0a323764736f6c63430008080033",
1261
+ "linkReferences": {},
1262
+ "deployedLinkReferences": {}
1263
+ }