@gearbox-protocol/sdk 0.0.110 → 1.0.0

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 (1153) hide show
  1. package/README.md +1 -0
  2. package/lib/apy/convexAPY.d.ts +1 -1
  3. package/lib/apy/convexAPY.js +7 -7
  4. package/lib/apy/curveAPY.js +4 -4
  5. package/lib/apy/index.d.ts +1 -1
  6. package/lib/apy/index.js +1 -1
  7. package/lib/apy/lidoAPY.js +7 -7
  8. package/lib/apy/yearnAPY.js +3 -3
  9. package/lib/contracts/adapters.js +1 -1
  10. package/lib/contracts/contracts.d.ts +5 -5
  11. package/lib/contracts/contracts.js +66 -71
  12. package/lib/contracts/contractsRegister.js +2 -2
  13. package/lib/contracts/protocols.js +6 -6
  14. package/lib/core/constants.d.ts +3 -2
  15. package/lib/core/constants.js +6 -5
  16. package/lib/core/creditAccount.d.ts +2 -2
  17. package/lib/core/creditManager.js +3 -3
  18. package/lib/core/creditSession.d.ts +1 -1
  19. package/lib/core/creditSession.js +1 -1
  20. package/lib/core/eventOrTx.d.ts +2 -2
  21. package/lib/core/eventOrTx.js +1 -1
  22. package/lib/core/events.d.ts +1 -1
  23. package/lib/core/events.js +32 -31
  24. package/lib/core/history.d.ts +2 -2
  25. package/lib/core/pool.js +1 -1
  26. package/lib/core/tokenDistributor.js +1 -1
  27. package/lib/core/transactions.js +22 -22
  28. package/lib/index.d.ts +29 -29
  29. package/lib/index.js +37 -37
  30. package/lib/oracles/oracles.d.ts +5 -6
  31. package/lib/oracles/priceFeeds.d.ts +1 -1
  32. package/lib/oracles/priceFeeds.js +292 -194
  33. package/lib/pathfinder/contracts.js +4 -4
  34. package/lib/pathfinder/curveLP.d.ts +2 -2
  35. package/lib/pathfinder/curveLP.js +4 -4
  36. package/lib/pathfinder/path.d.ts +3 -3
  37. package/lib/pathfinder/path.js +7 -7
  38. package/lib/pathfinder/tradeTypes.d.ts +2 -2
  39. package/lib/pathfinder/yVault.d.ts +3 -3
  40. package/lib/pathfinder/yVault.js +5 -5
  41. package/lib/strategies/convex.js +13 -13
  42. package/lib/strategies/creditFacade.js +6 -6
  43. package/lib/strategies/curve.js +13 -13
  44. package/lib/strategies/lido.d.ts +1 -1
  45. package/lib/strategies/lido.js +3 -3
  46. package/lib/strategies/uniswapV2.js +3 -3
  47. package/lib/strategies/uniswapV3.js +6 -6
  48. package/lib/strategies/yearn.js +7 -7
  49. package/lib/tokens/connectors.js +1 -1
  50. package/lib/tokens/convex.d.ts +2 -2
  51. package/lib/tokens/convex.js +50 -50
  52. package/lib/tokens/curveLP.d.ts +1 -1
  53. package/lib/tokens/curveLP.js +30 -30
  54. package/lib/tokens/gear.d.ts +1 -1
  55. package/lib/tokens/gear.js +6 -6
  56. package/lib/tokens/normal.js +176 -176
  57. package/lib/tokens/token.d.ts +3 -3
  58. package/lib/tokens/token.js +64 -64
  59. package/lib/tokens/tokenData.d.ts +1 -1
  60. package/lib/tokens/tokenData.js +4 -4
  61. package/lib/tokens/yearn.d.ts +1 -1
  62. package/lib/tokens/yearn.js +19 -19
  63. package/lib/utils/extracter.js +1 -1
  64. package/lib/utils/formatter.js +19 -12
  65. package/lib/utils/mappers.d.ts +1 -1
  66. package/lib/utils/mappers.js +1 -1
  67. package/lib/utils/multicall.js +2 -2
  68. package/lib/utils/network.js +3 -3
  69. package/lib/utils/repeater.js +6 -6
  70. package/package.json +30 -23
  71. package/.eslintignore +0 -5
  72. package/.eslintrc.js +0 -52
  73. package/.husky/pre-push +0 -4
  74. package/.idea/gearbox-sdk.iml +0 -12
  75. package/.idea/modules.xml +0 -8
  76. package/.idea/vcs.xml +0 -6
  77. package/.prettierrc +0 -10
  78. package/lib/apy/convexAPY copy.d.ts +0 -6
  79. package/lib/apy/convexAPY copy.js +0 -201
  80. package/lib/types/hardhat.d.ts +0 -2715
  81. package/src/abi/adapters/YearnV2.sol/YearnAdapter.dbg.json +0 -4
  82. package/src/abi/adapters/YearnV2.sol/YearnAdapter.json +0 -455
  83. package/src/abi/core/ACL.sol/ACL.dbg.json +0 -4
  84. package/src/abi/core/ACL.sol/ACL.json +0 -262
  85. package/src/abi/core/ACLTrait.sol/ACLTrait.dbg.json +0 -4
  86. package/src/abi/core/ACLTrait.sol/ACLTrait.json +0 -64
  87. package/src/abi/core/AccountMining.sol/AccountMining.dbg.json +0 -4
  88. package/src/abi/core/AccountMining.sol/AccountMining.json +0 -150
  89. package/src/abi/core/AddressProvider.sol/AddressProvider.dbg.json +0 -4
  90. package/src/abi/core/AddressProvider.sol/AddressProvider.json +0 -496
  91. package/src/abi/core/ContractsRegister.sol/ContractsRegister.dbg.json +0 -4
  92. package/src/abi/core/ContractsRegister.sol/ContractsRegister.json +0 -255
  93. package/src/abi/credit/LeverageActions.sol/LeveragedActions.dbg.json +0 -4
  94. package/src/abi/credit/LeverageActions.sol/LeveragedActions.json +0 -514
  95. package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.dbg.json +0 -4
  96. package/src/abi/deployer/AdaptersDeployer.sol/AdaptersDeployer.json +0 -160
  97. package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.dbg.json +0 -4
  98. package/src/abi/deployer/GenesisDeployer.sol/GenesisDeployer.json +0 -189
  99. package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.dbg.json +0 -4
  100. package/src/abi/deployer/PoolDeployer.sol/PoolDeployer.json +0 -215
  101. package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.dbg.json +0 -4
  102. package/src/abi/fuzzing/FuzzHarness.sol/FuzzHarness.json +0 -50
  103. package/src/abi/integrations/yearn/IYVault.sol/IYVault.dbg.json +0 -4
  104. package/src/abi/integrations/yearn/IYVault.sol/IYVault.json +0 -400
  105. package/src/abi/interfaces/IGearToken.sol/IGearToken.dbg.json +0 -4
  106. package/src/abi/interfaces/IGearToken.sol/IGearToken.json +0 -331
  107. package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.dbg.json +0 -4
  108. package/src/abi/interfaces/IMerkleDistributor.sol/IMerkleDistributor.json +0 -98
  109. package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.dbg.json +0 -4
  110. package/src/abi/mocks/core/ACLTraitTest.sol/ACLTraitTest.json +0 -96
  111. package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.dbg.json +0 -4
  112. package/src/abi/mocks/credit/ExecutorMock.sol/ExecutorMock.json +0 -61
  113. package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.dbg.json +0 -4
  114. package/src/abi/mocks/integrations/CurveMock.sol/CurveMock.json +0 -168
  115. package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.dbg.json +0 -4
  116. package/src/abi/mocks/integrations/YearnMock.sol/YearnMock.json +0 -556
  117. package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.dbg.json +0 -4
  118. package/src/abi/mocks/oracles/ChainlinkPriceFeedMock.sol/ChainlinkPriceFeedMock.json +0 -151
  119. package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.dbg.json +0 -4
  120. package/src/abi/mocks/pool/CreditManagerMockForPoolTest.sol/CreditManagerMockForPoolTest.json +0 -89
  121. package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.dbg.json +0 -4
  122. package/src/abi/mocks/tokens/ERC20Blocking.sol/ERC20BlockingMock.json +0 -387
  123. package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.dbg.json +0 -4
  124. package/src/abi/mocks/tokens/ERC20Fee.sol/TokenFeeMock.json +0 -385
  125. package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.dbg.json +0 -4
  126. package/src/abi/oracles/YearnPriceFeed.sol/YearnPriceFeed.json +0 -321
  127. package/src/abi/support/PathFinder.sol/PathFinder.dbg.json +0 -4
  128. package/src/abi/support/PathFinder.sol/PathFinder.json +0 -189
  129. package/src/abi/tokens/GearNFT.sol/GearBeta.dbg.json +0 -4
  130. package/src/abi/tokens/GearNFT.sol/GearBeta.json +0 -485
  131. package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.dbg.json +0 -4
  132. package/src/abi/tokens/TokenDistributor.sol/TokenDistributor.json +0 -439
  133. package/src/abi/tokens/Vesting.sol/StepVesting.dbg.json +0 -4
  134. package/src/abi/tokens/Vesting.sol/StepVesting.json +0 -254
  135. package/src/apy/convexAPY.ts +0 -201
  136. package/src/apy/curveAPY.ts +0 -68
  137. package/src/apy/index.ts +0 -8
  138. package/src/apy/lidoAPY.ts +0 -89
  139. package/src/apy/yearnAPY.ts +0 -66
  140. package/src/config.ts +0 -2
  141. package/src/contracts/adapters.ts +0 -18
  142. package/src/contracts/contracts.ts +0 -438
  143. package/src/contracts/contractsRegister.ts +0 -68
  144. package/src/contracts/protocols.ts +0 -40
  145. package/src/core/constants.ts +0 -51
  146. package/src/core/creditAccount.ts +0 -160
  147. package/src/core/creditManager.ts +0 -309
  148. package/src/core/creditOperation.ts +0 -9
  149. package/src/core/creditSession.ts +0 -87
  150. package/src/core/errors.ts +0 -71
  151. package/src/core/eventOrTx.ts +0 -97
  152. package/src/core/events.ts +0 -1259
  153. package/src/core/history.ts +0 -55
  154. package/src/core/multicall.ts +0 -6
  155. package/src/core/operations.ts +0 -41
  156. package/src/core/pool.ts +0 -81
  157. package/src/core/strategy.ts +0 -140
  158. package/src/core/tokenDistributor.ts +0 -14
  159. package/src/core/transactions.ts +0 -492
  160. package/src/index.ts +0 -64
  161. package/src/oracles/oracles.ts +0 -48
  162. package/src/oracles/priceFeeds.ts +0 -546
  163. package/src/pathfinder/contracts.ts +0 -19
  164. package/src/pathfinder/convexLP.ts +0 -37
  165. package/src/pathfinder/curveLP.ts +0 -75
  166. package/src/pathfinder/path.ts +0 -174
  167. package/src/pathfinder/priority.ts +0 -14
  168. package/src/pathfinder/trade.ts +0 -90
  169. package/src/pathfinder/tradeTypes.ts +0 -105
  170. package/src/pathfinder/yVault.ts +0 -90
  171. package/src/payload/creditAccount.ts +0 -7
  172. package/src/payload/creditManager.ts +0 -24
  173. package/src/payload/creditSession.ts +0 -24
  174. package/src/payload/graphPayload.ts +0 -10
  175. package/src/payload/pool.ts +0 -3
  176. package/src/payload/token.ts +0 -5
  177. package/src/strategies/convex.ts +0 -414
  178. package/src/strategies/creditFacade.ts +0 -119
  179. package/src/strategies/curve.ts +0 -478
  180. package/src/strategies/lido.ts +0 -88
  181. package/src/strategies/uniswapV2.ts +0 -109
  182. package/src/strategies/uniswapV3.ts +0 -127
  183. package/src/strategies/yearn.ts +0 -219
  184. package/src/tokens/connectors.ts +0 -8
  185. package/src/tokens/convex.ts +0 -358
  186. package/src/tokens/curveLP.ts +0 -191
  187. package/src/tokens/gear.ts +0 -58
  188. package/src/tokens/normal.ts +0 -812
  189. package/src/tokens/token.ts +0 -256
  190. package/src/tokens/tokenData.ts +0 -85
  191. package/src/tokens/tokenType.ts +0 -12
  192. package/src/tokens/yearn.ts +0 -146
  193. package/src/types/@chainlink/contracts/index.ts +0 -5
  194. package/src/types/@chainlink/contracts/src/index.ts +0 -5
  195. package/src/types/@chainlink/contracts/src/v0.8/index.ts +0 -5
  196. package/src/types/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.ts +0 -228
  197. package/src/types/@chainlink/contracts/src/v0.8/interfaces/index.ts +0 -4
  198. package/src/types/@chainlink/index.ts +0 -5
  199. package/src/types/@openzeppelin/contracts/access/Ownable.ts +0 -175
  200. package/src/types/@openzeppelin/contracts/access/index.ts +0 -4
  201. package/src/types/@openzeppelin/contracts/index.ts +0 -11
  202. package/src/types/@openzeppelin/contracts/security/Pausable.ts +0 -111
  203. package/src/types/@openzeppelin/contracts/security/index.ts +0 -4
  204. package/src/types/@openzeppelin/contracts/token/ERC20/ERC20.ts +0 -444
  205. package/src/types/@openzeppelin/contracts/token/ERC20/IERC20.ts +0 -322
  206. package/src/types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +0 -364
  207. package/src/types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +0 -4
  208. package/src/types/@openzeppelin/contracts/token/ERC20/index.ts +0 -7
  209. package/src/types/@openzeppelin/contracts/token/ERC721/ERC721.ts +0 -578
  210. package/src/types/@openzeppelin/contracts/token/ERC721/IERC721.ts +0 -527
  211. package/src/types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts +0 -120
  212. package/src/types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +0 -581
  213. package/src/types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +0 -4
  214. package/src/types/@openzeppelin/contracts/token/ERC721/index.ts +0 -8
  215. package/src/types/@openzeppelin/contracts/token/index.ts +0 -7
  216. package/src/types/@openzeppelin/contracts/utils/index.ts +0 -5
  217. package/src/types/@openzeppelin/contracts/utils/introspection/ERC165.ts +0 -102
  218. package/src/types/@openzeppelin/contracts/utils/introspection/IERC165.ts +0 -102
  219. package/src/types/@openzeppelin/contracts/utils/introspection/index.ts +0 -5
  220. package/src/types/@openzeppelin/index.ts +0 -5
  221. package/src/types/common.ts +0 -44
  222. package/src/types/contracts/adapters/AbstractAdapter.ts +0 -174
  223. package/src/types/contracts/adapters/UniversalAdapter.ts +0 -258
  224. package/src/types/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/ConvexV1BaseRewardPoolAdapter.ts +0 -1079
  225. package/src/types/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/index.ts +0 -4
  226. package/src/types/contracts/adapters/convex/ConvexV1_Booster.sol/ConvexV1BoosterAdapter.ts +0 -676
  227. package/src/types/contracts/adapters/convex/ConvexV1_Booster.sol/index.ts +0 -4
  228. package/src/types/contracts/adapters/convex/ConvexV1_ClaimZap.sol/ConvexV1ClaimZapAdapter.ts +0 -290
  229. package/src/types/contracts/adapters/convex/ConvexV1_ClaimZap.sol/index.ts +0 -4
  230. package/src/types/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/ConvexStakedPositionToken.ts +0 -393
  231. package/src/types/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/index.ts +0 -4
  232. package/src/types/contracts/adapters/convex/index.ts +0 -11
  233. package/src/types/contracts/adapters/curve/CurveV1_2.sol/CurveV1Adapter2Assets.ts +0 -1679
  234. package/src/types/contracts/adapters/curve/CurveV1_2.sol/index.ts +0 -4
  235. package/src/types/contracts/adapters/curve/CurveV1_3.sol/CurveV1Adapter3Assets.ts +0 -1685
  236. package/src/types/contracts/adapters/curve/CurveV1_3.sol/index.ts +0 -4
  237. package/src/types/contracts/adapters/curve/CurveV1_4.sol/CurveV1Adapter4Assets.ts +0 -1694
  238. package/src/types/contracts/adapters/curve/CurveV1_4.sol/index.ts +0 -4
  239. package/src/types/contracts/adapters/curve/CurveV1_Base.sol/CurveV1AdapterBase.ts +0 -1394
  240. package/src/types/contracts/adapters/curve/CurveV1_Base.sol/index.ts +0 -4
  241. package/src/types/contracts/adapters/curve/CurveV1_DepositZap.sol/CurveV1AdapterDeposit.ts +0 -1394
  242. package/src/types/contracts/adapters/curve/CurveV1_DepositZap.sol/index.ts +0 -4
  243. package/src/types/contracts/adapters/curve/CurveV1_stETH.sol/CurveV1AdapterStETH.ts +0 -1679
  244. package/src/types/contracts/adapters/curve/CurveV1_stETH.sol/index.ts +0 -4
  245. package/src/types/contracts/adapters/curve/CurveV1_stETHGateway.sol/CurveV1StETHPoolGateway.ts +0 -1232
  246. package/src/types/contracts/adapters/curve/CurveV1_stETHGateway.sol/index.ts +0 -4
  247. package/src/types/contracts/adapters/curve/index.ts +0 -17
  248. package/src/types/contracts/adapters/index.ts +0 -15
  249. package/src/types/contracts/adapters/lido/LidoV1.sol/LidoV1Adapter.ts +0 -689
  250. package/src/types/contracts/adapters/lido/LidoV1.sol/index.ts +0 -4
  251. package/src/types/contracts/adapters/lido/LidoV1_WETHGateway.sol/LidoV1Gateway.ts +0 -400
  252. package/src/types/contracts/adapters/lido/LidoV1_WETHGateway.sol/index.ts +0 -4
  253. package/src/types/contracts/adapters/lido/index.ts +0 -7
  254. package/src/types/contracts/adapters/uniswap/UniswapV2.sol/UniswapV2Adapter.ts +0 -1575
  255. package/src/types/contracts/adapters/uniswap/UniswapV2.sol/index.ts +0 -4
  256. package/src/types/contracts/adapters/uniswap/UniswapV3.sol/UniswapV3Adapter.ts +0 -532
  257. package/src/types/contracts/adapters/uniswap/UniswapV3.sol/index.ts +0 -4
  258. package/src/types/contracts/adapters/uniswap/index.ts +0 -7
  259. package/src/types/contracts/adapters/yearn/YearnV2.sol/YearnV2Adapter.ts +0 -744
  260. package/src/types/contracts/adapters/yearn/YearnV2.sol/index.ts +0 -4
  261. package/src/types/contracts/adapters/yearn/index.ts +0 -5
  262. package/src/types/contracts/core/ACL.ts +0 -564
  263. package/src/types/contracts/core/ACLTrait.ts +0 -170
  264. package/src/types/contracts/core/AccountFactory.ts +0 -680
  265. package/src/types/contracts/core/AddressProvider.ts +0 -706
  266. package/src/types/contracts/core/ContractsRegister.ts +0 -456
  267. package/src/types/contracts/core/DataCompressor.ts +0 -625
  268. package/src/types/contracts/core/WETHGateway.ts +0 -263
  269. package/src/types/contracts/core/index.ts +0 -10
  270. package/src/types/contracts/credit/CreditAccount.ts +0 -406
  271. package/src/types/contracts/credit/CreditConfigurator.ts +0 -1297
  272. package/src/types/contracts/credit/CreditFacade.ts +0 -1654
  273. package/src/types/contracts/credit/CreditManager.ts +0 -1834
  274. package/src/types/contracts/credit/index.ts +0 -7
  275. package/src/types/contracts/factories/CreditManagerFactory.ts +0 -539
  276. package/src/types/contracts/factories/GenesisFactory.ts +0 -274
  277. package/src/types/contracts/factories/PoolFactory.ts +0 -350
  278. package/src/types/contracts/factories/index.ts +0 -6
  279. package/src/types/contracts/index.ts +0 -29
  280. package/src/types/contracts/integrations/convex/IBaseRewardPool.ts +0 -856
  281. package/src/types/contracts/integrations/convex/IBooster.ts +0 -407
  282. package/src/types/contracts/integrations/convex/IClaimZap.ts +0 -183
  283. package/src/types/contracts/integrations/convex/IConvexToken.ts +0 -407
  284. package/src/types/contracts/integrations/convex/IRewards.sol/IBasicRewards.ts +0 -225
  285. package/src/types/contracts/integrations/convex/IRewards.sol/IRewards.ts +0 -395
  286. package/src/types/contracts/integrations/convex/IRewards.sol/index.ts +0 -5
  287. package/src/types/contracts/integrations/convex/Interfaces.sol/ICrvDeposit.ts +0 -128
  288. package/src/types/contracts/integrations/convex/Interfaces.sol/ICurveGauge.ts +0 -242
  289. package/src/types/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow.ts +0 -227
  290. package/src/types/contracts/integrations/convex/Interfaces.sol/IDeposit.ts +0 -371
  291. package/src/types/contracts/integrations/convex/Interfaces.sol/IFeeDistro.ts +0 -104
  292. package/src/types/contracts/integrations/convex/Interfaces.sol/IMinter.ts +0 -95
  293. package/src/types/contracts/integrations/convex/Interfaces.sol/IPools.ts +0 -290
  294. package/src/types/contracts/integrations/convex/Interfaces.sol/IRegistry.ts +0 -189
  295. package/src/types/contracts/integrations/convex/Interfaces.sol/IRewardFactory.ts +0 -310
  296. package/src/types/contracts/integrations/convex/Interfaces.sol/IRewards.ts +0 -395
  297. package/src/types/contracts/integrations/convex/Interfaces.sol/IStaker.ts +0 -652
  298. package/src/types/contracts/integrations/convex/Interfaces.sol/IStash.ts +0 -209
  299. package/src/types/contracts/integrations/convex/Interfaces.sol/IStashFactory.ts +0 -120
  300. package/src/types/contracts/integrations/convex/Interfaces.sol/ITokenFactory.ts +0 -104
  301. package/src/types/contracts/integrations/convex/Interfaces.sol/ITokenMinter.ts +0 -143
  302. package/src/types/contracts/integrations/convex/Interfaces.sol/IVestedEscrow.ts +0 -107
  303. package/src/types/contracts/integrations/convex/Interfaces.sol/IVoting.ts +0 -220
  304. package/src/types/contracts/integrations/convex/Interfaces.sol/IWalletChecker.ts +0 -84
  305. package/src/types/contracts/integrations/convex/Interfaces.sol/index.ts +0 -21
  306. package/src/types/contracts/integrations/convex/index.ts +0 -11
  307. package/src/types/contracts/integrations/curve/ICRVToken.ts +0 -422
  308. package/src/types/contracts/integrations/curve/ICurvePool.ts +0 -894
  309. package/src/types/contracts/integrations/curve/ICurvePoolStETH.ts +0 -772
  310. package/src/types/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets.ts +0 -1179
  311. package/src/types/contracts/integrations/curve/ICurvePool_2.sol/index.ts +0 -4
  312. package/src/types/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets.ts +0 -1185
  313. package/src/types/contracts/integrations/curve/ICurvePool_3.sol/index.ts +0 -4
  314. package/src/types/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets.ts +0 -1194
  315. package/src/types/contracts/integrations/curve/ICurvePool_4.sol/index.ts +0 -4
  316. package/src/types/contracts/integrations/curve/ICurveRegistry.ts +0 -148
  317. package/src/types/contracts/integrations/curve/index.ts +0 -13
  318. package/src/types/contracts/integrations/index.ts +0 -13
  319. package/src/types/contracts/integrations/lido/ILidoOracle.ts +0 -115
  320. package/src/types/contracts/integrations/lido/IstETH.sol/IstETH.ts +0 -534
  321. package/src/types/contracts/integrations/lido/IstETH.sol/IstETHGetters.ts +0 -507
  322. package/src/types/contracts/integrations/lido/IstETH.sol/index.ts +0 -5
  323. package/src/types/contracts/integrations/lido/index.ts +0 -6
  324. package/src/types/contracts/integrations/uniswap/IQuoter.ts +0 -263
  325. package/src/types/contracts/integrations/uniswap/IUniswapV2Router01.ts +0 -1128
  326. package/src/types/contracts/integrations/uniswap/IUniswapV2Router02.ts +0 -1446
  327. package/src/types/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter.ts +0 -318
  328. package/src/types/contracts/integrations/uniswap/IUniswapV3.sol/index.ts +0 -4
  329. package/src/types/contracts/integrations/uniswap/IUniswapV3SwapCallback.ts +0 -117
  330. package/src/types/contracts/integrations/uniswap/index.ts +0 -9
  331. package/src/types/contracts/integrations/yearn/IYVault.ts +0 -640
  332. package/src/types/contracts/integrations/yearn/index.ts +0 -4
  333. package/src/types/contracts/interfaces/IACL.sol/IACL.ts +0 -261
  334. package/src/types/contracts/interfaces/IACL.sol/IACLEvents.ts +0 -135
  335. package/src/types/contracts/interfaces/IACL.sol/index.ts +0 -5
  336. package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactory.ts +0 -396
  337. package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents.ts +0 -158
  338. package/src/types/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters.ts +0 -198
  339. package/src/types/contracts/interfaces/IAccountFactory.sol/index.ts +0 -6
  340. package/src/types/contracts/interfaces/IAddressProvider.sol/IAddressProvider.ts +0 -290
  341. package/src/types/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents.ts +0 -79
  342. package/src/types/contracts/interfaces/IAddressProvider.sol/index.ts +0 -5
  343. package/src/types/contracts/interfaces/IContractsRegister.sol/IContractsRegister.ts +0 -305
  344. package/src/types/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents.ts +0 -89
  345. package/src/types/contracts/interfaces/IContractsRegister.sol/index.ts +0 -5
  346. package/src/types/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions.ts +0 -55
  347. package/src/types/contracts/interfaces/ICreditAccount.sol/ICreditAccount.ts +0 -406
  348. package/src/types/contracts/interfaces/ICreditAccount.sol/index.ts +0 -5
  349. package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator.ts +0 -666
  350. package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents.ts +0 -384
  351. package/src/types/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions.ts +0 -56
  352. package/src/types/contracts/interfaces/ICreditConfigurator.sol/index.ts +0 -6
  353. package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacade.ts +0 -1236
  354. package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents.ts +0 -358
  355. package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions.ts +0 -55
  356. package/src/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended.ts +0 -143
  357. package/src/types/contracts/interfaces/ICreditFacade.sol/index.ts +0 -7
  358. package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2.ts +0 -1534
  359. package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events.ts +0 -98
  360. package/src/types/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions.ts +0 -55
  361. package/src/types/contracts/interfaces/ICreditManagerV2.sol/index.ts +0 -6
  362. package/src/types/contracts/interfaces/IDataCompressor.sol/IDataCompressor.ts +0 -516
  363. package/src/types/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions.ts +0 -55
  364. package/src/types/contracts/interfaces/IDataCompressor.sol/index.ts +0 -5
  365. package/src/types/contracts/interfaces/IDegenNFT.sol/IDegenNFT.ts +0 -209
  366. package/src/types/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions.ts +0 -55
  367. package/src/types/contracts/interfaces/IDegenNFT.sol/index.ts +0 -5
  368. package/src/types/contracts/interfaces/IGearToken.ts +0 -560
  369. package/src/types/contracts/interfaces/IInterestRateModel.ts +0 -123
  370. package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed.ts +0 -379
  371. package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents.ts +0 -80
  372. package/src/types/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions.ts +0 -55
  373. package/src/types/contracts/interfaces/ILPPriceFeed.sol/index.ts +0 -6
  374. package/src/types/contracts/interfaces/IMerkleDistributor.ts +0 -200
  375. package/src/types/contracts/interfaces/IPhantomERC20.ts +0 -381
  376. package/src/types/contracts/interfaces/IPoolService.sol/IPoolService.ts +0 -901
  377. package/src/types/contracts/interfaces/IPoolService.sol/IPoolServiceEvents.ts +0 -277
  378. package/src/types/contracts/interfaces/IPoolService.sol/index.ts +0 -5
  379. package/src/types/contracts/interfaces/IPriceFeedAddress.ts +0 -177
  380. package/src/types/contracts/interfaces/IPriceFeedType.ts +0 -108
  381. package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2.ts +0 -387
  382. package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events.ts +0 -79
  383. package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions.ts +0 -55
  384. package/src/types/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext.ts +0 -429
  385. package/src/types/contracts/interfaces/IPriceOracle.sol/index.ts +0 -7
  386. package/src/types/contracts/interfaces/IVersion.ts +0 -81
  387. package/src/types/contracts/interfaces/IWETHGateway.ts +0 -201
  388. package/src/types/contracts/interfaces/V1/ICreditFilter.ts +0 -1288
  389. package/src/types/contracts/interfaces/V1/ICreditManager.ts +0 -1194
  390. package/src/types/contracts/interfaces/V1/IPriceOracle.sol/IPriceOracleV2.ts +0 -220
  391. package/src/types/contracts/interfaces/V1/IPriceOracle.sol/index.ts +0 -4
  392. package/src/types/contracts/interfaces/V1/index.ts +0 -7
  393. package/src/types/contracts/interfaces/adapters/IAdapter.sol/IAdapter.ts +0 -174
  394. package/src/types/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions.ts +0 -55
  395. package/src/types/contracts/interfaces/adapters/IAdapter.sol/index.ts +0 -5
  396. package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter.ts +0 -258
  397. package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions.ts +0 -55
  398. package/src/types/contracts/interfaces/adapters/IUniversalAdapter.sol/index.ts +0 -5
  399. package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter.ts +0 -1088
  400. package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors.ts +0 -56
  401. package/src/types/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/index.ts +0 -5
  402. package/src/types/contracts/interfaces/adapters/convex/IConvexV1BoosterAdapter.ts +0 -553
  403. package/src/types/contracts/interfaces/adapters/convex/index.ts +0 -6
  404. package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1Adapter.ts +0 -1397
  405. package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions.ts +0 -55
  406. package/src/types/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/index.ts +0 -5
  407. package/src/types/contracts/interfaces/adapters/curve/index.ts +0 -5
  408. package/src/types/contracts/interfaces/adapters/index.ts +0 -15
  409. package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1Adapter.ts +0 -486
  410. package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents.ts +0 -69
  411. package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions.ts +0 -55
  412. package/src/types/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/index.ts +0 -6
  413. package/src/types/contracts/interfaces/adapters/lido/index.ts +0 -5
  414. package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV2Adapter.ts +0 -1595
  415. package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter.ts +0 -532
  416. package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions.ts +0 -55
  417. package/src/types/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/index.ts +0 -5
  418. package/src/types/contracts/interfaces/adapters/uniswap/index.ts +0 -6
  419. package/src/types/contracts/interfaces/external/IWETH.ts +0 -159
  420. package/src/types/contracts/interfaces/external/index.ts +0 -4
  421. package/src/types/contracts/interfaces/index.ts +0 -43
  422. package/src/types/contracts/libraries/Errors.ts +0 -894
  423. package/src/types/contracts/libraries/index.ts +0 -4
  424. package/src/types/contracts/oracles/LPPriceFeed.ts +0 -451
  425. package/src/types/contracts/oracles/PriceFeedChecker.ts +0 -55
  426. package/src/types/contracts/oracles/PriceOracle.ts +0 -535
  427. package/src/types/contracts/oracles/ZeroPriceFeed.ts +0 -244
  428. package/src/types/contracts/oracles/curve/AbstractCurveLPPriceFeed.ts +0 -485
  429. package/src/types/contracts/oracles/curve/CurveLP2PriceFeed.ts +0 -519
  430. package/src/types/contracts/oracles/curve/CurveLP3PriceFeed.ts +0 -536
  431. package/src/types/contracts/oracles/curve/CurveLP4PriceFeed.ts +0 -553
  432. package/src/types/contracts/oracles/curve/index.ts +0 -7
  433. package/src/types/contracts/oracles/index.ts +0 -11
  434. package/src/types/contracts/oracles/yearn/YearnPriceFeed.ts +0 -499
  435. package/src/types/contracts/oracles/yearn/index.ts +0 -4
  436. package/src/types/contracts/pathfinder/ConvexPathFinder.ts +0 -211
  437. package/src/types/contracts/pathfinder/CurveLPPathFinder.ts +0 -335
  438. package/src/types/contracts/pathfinder/CurvePathFinder.ts +0 -514
  439. package/src/types/contracts/pathfinder/ISwapper.ts +0 -208
  440. package/src/types/contracts/pathfinder/NormalTokenPathFinder.ts +0 -526
  441. package/src/types/contracts/pathfinder/SwapPathFinder.ts +0 -424
  442. package/src/types/contracts/pathfinder/UniswapV2PathFinder.ts +0 -422
  443. package/src/types/contracts/pathfinder/UniswapV3PathFinder.ts +0 -559
  444. package/src/types/contracts/pathfinder/YearnPathFinder.ts +0 -200
  445. package/src/types/contracts/pathfinder/data/Balances.sol/BalanceOps.ts +0 -55
  446. package/src/types/contracts/pathfinder/data/Balances.sol/index.ts +0 -4
  447. package/src/types/contracts/pathfinder/data/index.ts +0 -5
  448. package/src/types/contracts/pathfinder/index.ts +0 -14
  449. package/src/types/contracts/pool/LinearInterestRateModel.ts +0 -276
  450. package/src/types/contracts/pool/PoolService.ts +0 -1314
  451. package/src/types/contracts/pool/index.ts +0 -5
  452. package/src/types/contracts/support/ContractUpgrader.ts +0 -284
  453. package/src/types/contracts/support/MerkleDistributor.ts +0 -200
  454. package/src/types/contracts/support/MultiCall.sol/Multicall2.ts +0 -451
  455. package/src/types/contracts/support/MultiCall.sol/index.ts +0 -4
  456. package/src/types/contracts/support/PauseMulticall.ts +0 -286
  457. package/src/types/contracts/support/index.ts +0 -8
  458. package/src/types/contracts/test/Playground.t.sol/PlaygroundTest.ts +0 -425
  459. package/src/types/contracts/test/Playground.t.sol/index.ts +0 -4
  460. package/src/types/contracts/test/adapters/AbstractAdapter.t.sol/AbstractAdapterTest.ts +0 -1196
  461. package/src/types/contracts/test/adapters/AbstractAdapter.t.sol/index.ts +0 -4
  462. package/src/types/contracts/test/adapters/AdapterTestHelper.ts +0 -814
  463. package/src/types/contracts/test/adapters/ConvexAdapterHelper.ts +0 -1351
  464. package/src/types/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/ConvexV1AdapterBasePoolTest.ts +0 -1701
  465. package/src/types/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/index.ts +0 -4
  466. package/src/types/contracts/test/adapters/ConvexV1_Booster.t.sol/ConvexV1AdapterBoosterTest.ts +0 -1583
  467. package/src/types/contracts/test/adapters/ConvexV1_Booster.t.sol/index.ts +0 -4
  468. package/src/types/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/ConvexV1ClaimZapAdapterTest.ts +0 -1551
  469. package/src/types/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/index.ts +0 -4
  470. package/src/types/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/CurveV1AdapterBaseMetaPoolTest.ts +0 -1021
  471. package/src/types/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/index.ts +0 -4
  472. package/src/types/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/CurveV1AdapterBaseTest.ts +0 -1325
  473. package/src/types/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/index.ts +0 -4
  474. package/src/types/contracts/test/adapters/CurveV1AdapterHelper.ts +0 -814
  475. package/src/types/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/CurveV1Adapter2AssetsTest.ts +0 -1080
  476. package/src/types/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/index.ts +0 -4
  477. package/src/types/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/CurveV1Adapter3AssetsTest.ts +0 -1080
  478. package/src/types/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/index.ts +0 -4
  479. package/src/types/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/CurveV1Adapter4AssetsTest.ts +0 -1110
  480. package/src/types/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/index.ts +0 -4
  481. package/src/types/contracts/test/adapters/CurveV1StETHTest.t.sol/CurveV1StEthAdapterTest.ts +0 -1100
  482. package/src/types/contracts/test/adapters/CurveV1StETHTest.t.sol/index.ts +0 -4
  483. package/src/types/contracts/test/adapters/LidoV1Adapter.t.sol/LidoV1AdapterTest.ts +0 -1146
  484. package/src/types/contracts/test/adapters/LidoV1Adapter.t.sol/index.ts +0 -4
  485. package/src/types/contracts/test/adapters/UniswapV2Adapter.t.sol/UniswapV2AdapterTest.ts +0 -1210
  486. package/src/types/contracts/test/adapters/UniswapV2Adapter.t.sol/index.ts +0 -4
  487. package/src/types/contracts/test/adapters/UniswapV3Adapter.t.sol/UniswapV3AdapterTest.ts +0 -1124
  488. package/src/types/contracts/test/adapters/UniswapV3Adapter.t.sol/index.ts +0 -4
  489. package/src/types/contracts/test/adapters/YearnV2Adapter.t.sol/YearnV2AdapterTest.ts +0 -1408
  490. package/src/types/contracts/test/adapters/YearnV2Adapter.t.sol/index.ts +0 -4
  491. package/src/types/contracts/test/adapters/index.ts +0 -34
  492. package/src/types/contracts/test/core/ACL.t.sol/ACLTest.ts +0 -659
  493. package/src/types/contracts/test/core/ACL.t.sol/index.ts +0 -4
  494. package/src/types/contracts/test/core/AddressProvider.t.sol/AddressProviderTest.ts +0 -783
  495. package/src/types/contracts/test/core/AddressProvider.t.sol/index.ts +0 -4
  496. package/src/types/contracts/test/core/index.ts +0 -7
  497. package/src/types/contracts/test/credit/CreditConfigurator.t.sol/CreditConfiguratorTest.ts +0 -1958
  498. package/src/types/contracts/test/credit/CreditConfigurator.t.sol/index.ts +0 -4
  499. package/src/types/contracts/test/credit/CreditFacade.t.sol/CreditFacadeTest.ts +0 -2860
  500. package/src/types/contracts/test/credit/CreditFacade.t.sol/index.ts +0 -4
  501. package/src/types/contracts/test/credit/CreditManager.t.sol/CreditManagerTest.ts +0 -2480
  502. package/src/types/contracts/test/credit/CreditManager.t.sol/index.ts +0 -4
  503. package/src/types/contracts/test/credit/index.ts +0 -9
  504. package/src/types/contracts/test/index.ts +0 -31
  505. package/src/types/contracts/test/lib/cheatCodes.sol/CheatCodes.ts +0 -926
  506. package/src/types/contracts/test/lib/cheatCodes.sol/index.ts +0 -4
  507. package/src/types/contracts/test/lib/constants.sol/Roles.ts +0 -375
  508. package/src/types/contracts/test/lib/constants.sol/index.ts +0 -4
  509. package/src/types/contracts/test/lib/index.ts +0 -9
  510. package/src/types/contracts/test/lib/test.sol/DSTest.ts +0 -375
  511. package/src/types/contracts/test/lib/test.sol/index.ts +0 -4
  512. package/src/types/contracts/test/mainnet/MainnetTokens.sol/MainnetTokensTestSuite.ts +0 -346
  513. package/src/types/contracts/test/mainnet/MainnetTokens.sol/index.ts +0 -4
  514. package/src/types/contracts/test/mainnet/TotalValueCalculator.ts +0 -104
  515. package/src/types/contracts/test/mainnet/index.ts +0 -6
  516. package/src/types/contracts/test/mocks/adapters/AdapterMock.ts +0 -458
  517. package/src/types/contracts/test/mocks/adapters/TargetContractMock.ts +0 -81
  518. package/src/types/contracts/test/mocks/adapters/index.ts +0 -5
  519. package/src/types/contracts/test/mocks/core/ACLTraitTest.ts +0 -238
  520. package/src/types/contracts/test/mocks/core/AddressProviderACLMock.ts +0 -186
  521. package/src/types/contracts/test/mocks/core/index.ts +0 -5
  522. package/src/types/contracts/test/mocks/credit/CreditManagerInternal.ts +0 -2197
  523. package/src/types/contracts/test/mocks/credit/index.ts +0 -4
  524. package/src/types/contracts/test/mocks/dao/TreasuryMock.ts +0 -69
  525. package/src/types/contracts/test/mocks/dao/index.ts +0 -4
  526. package/src/types/contracts/test/mocks/index.ts +0 -21
  527. package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/BaseRewardPoolMock.ts +0 -1069
  528. package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/IBaseRewardPoolMockEvents.ts +0 -140
  529. package/src/types/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/index.ts +0 -5
  530. package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/BoosterMock.ts +0 -1002
  531. package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/IBoosterMockEvents.ts +0 -122
  532. package/src/types/contracts/test/mocks/integrations/ConvexBoosterMock.sol/index.ts +0 -5
  533. package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/ClaimZapMock.ts +0 -209
  534. package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/IBasicRewards.ts +0 -225
  535. package/src/types/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/index.ts +0 -5
  536. package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/ExtraRewardPoolMock.ts +0 -731
  537. package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/IExtraRewardPoolMockEvents.ts +0 -141
  538. package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/VirtualBalanceWrapper.ts +0 -203
  539. package/src/types/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/index.ts +0 -6
  540. package/src/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/TokenRewardContractMock.ts +0 -425
  541. package/src/types/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/index.ts +0 -4
  542. package/src/types/contracts/test/mocks/integrations/CurveV1MetapoolMock.ts +0 -1101
  543. package/src/types/contracts/test/mocks/integrations/CurveV1Mock.ts +0 -1124
  544. package/src/types/contracts/test/mocks/integrations/CurveV1Mock_2Assets.ts +0 -1409
  545. package/src/types/contracts/test/mocks/integrations/CurveV1Mock_3Assets.ts +0 -1415
  546. package/src/types/contracts/test/mocks/integrations/CurveV1Mock_4Assets.ts +0 -1424
  547. package/src/types/contracts/test/mocks/integrations/CurveV1StETHMock.ts +0 -880
  548. package/src/types/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents.ts +0 -82
  549. package/src/types/contracts/test/mocks/integrations/LidoMock.sol/LidoMock.ts +0 -747
  550. package/src/types/contracts/test/mocks/integrations/LidoMock.sol/index.ts +0 -5
  551. package/src/types/contracts/test/mocks/integrations/UniswapV2Mock.ts +0 -1553
  552. package/src/types/contracts/test/mocks/integrations/UniswapV3Mock.ts +0 -953
  553. package/src/types/contracts/test/mocks/integrations/YearnV2Mock.ts +0 -898
  554. package/src/types/contracts/test/mocks/integrations/index.ts +0 -24
  555. package/src/types/contracts/test/mocks/libraries/PercentageMathTest.ts +0 -143
  556. package/src/types/contracts/test/mocks/libraries/WadRayMathTest.ts +0 -315
  557. package/src/types/contracts/test/mocks/libraries/index.ts +0 -5
  558. package/src/types/contracts/test/mocks/oracles/LPPriceFeedMock.ts +0 -486
  559. package/src/types/contracts/test/mocks/oracles/PriceFeedMock.ts +0 -368
  560. package/src/types/contracts/test/mocks/oracles/index.ts +0 -5
  561. package/src/types/contracts/test/mocks/pool/CreditManagerMockForPoolTest.ts +0 -285
  562. package/src/types/contracts/test/mocks/pool/PoolServiceMock.ts +0 -1401
  563. package/src/types/contracts/test/mocks/pool/TestPoolService.ts +0 -1439
  564. package/src/types/contracts/test/mocks/pool/index.ts +0 -6
  565. package/src/types/contracts/test/mocks/token/CERC20Mock.ts +0 -635
  566. package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedFalse.ts +0 -544
  567. package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedRevert.ts +0 -544
  568. package/src/types/contracts/test/mocks/token/ERC20ApproveRestricted.sol/index.ts +0 -5
  569. package/src/types/contracts/test/mocks/token/ERC20Blocking.sol/ERC20BlockingMock.ts +0 -620
  570. package/src/types/contracts/test/mocks/token/ERC20Blocking.sol/index.ts +0 -4
  571. package/src/types/contracts/test/mocks/token/ERC20Fee.sol/TokenFeeMock.ts +0 -595
  572. package/src/types/contracts/test/mocks/token/ERC20Fee.sol/index.ts +0 -4
  573. package/src/types/contracts/test/mocks/token/ERC20Mock.ts +0 -695
  574. package/src/types/contracts/test/mocks/token/ERC20NonCompliant.sol/NonCompliantERC20.ts +0 -105
  575. package/src/types/contracts/test/mocks/token/ERC20NonCompliant.sol/index.ts +0 -4
  576. package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/ERC721ReceiverMock.ts +0 -118
  577. package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/IERC721Receiver.ts +0 -120
  578. package/src/types/contracts/test/mocks/token/ERC721ReceiverMock.sol/index.ts +0 -5
  579. package/src/types/contracts/test/mocks/token/StETHMock.ts +0 -618
  580. package/src/types/contracts/test/mocks/token/WETHMock.ts +0 -488
  581. package/src/types/contracts/test/mocks/token/index.ts +0 -17
  582. package/src/types/contracts/test/oracles/CurveLPPriceFeed.t.sol/CurveLPPriceFeedTest.ts +0 -749
  583. package/src/types/contracts/test/oracles/CurveLPPriceFeed.t.sol/index.ts +0 -4
  584. package/src/types/contracts/test/oracles/LPPriceFeed.t.sol/LPPriceFeedTest.ts +0 -617
  585. package/src/types/contracts/test/oracles/LPPriceFeed.t.sol/index.ts +0 -4
  586. package/src/types/contracts/test/oracles/PriceOracle.t.sol/PriceOracleTest.ts +0 -758
  587. package/src/types/contracts/test/oracles/PriceOracle.t.sol/index.ts +0 -4
  588. package/src/types/contracts/test/oracles/YearnPriceFeed.t.sol/YearnFeedTest.ts +0 -595
  589. package/src/types/contracts/test/oracles/YearnPriceFeed.t.sol/index.ts +0 -4
  590. package/src/types/contracts/test/oracles/ZeroPriceFeed.t.sol/ZeroFeedTest.ts +0 -503
  591. package/src/types/contracts/test/oracles/ZeroPriceFeed.t.sol/index.ts +0 -4
  592. package/src/types/contracts/test/oracles/index.ts +0 -13
  593. package/src/types/contracts/test/pathfinder/CurveLPPathFinder.t.sol/CurveLPPathFinderTest.ts +0 -897
  594. package/src/types/contracts/test/pathfinder/CurveLPPathFinder.t.sol/index.ts +0 -4
  595. package/src/types/contracts/test/pathfinder/CurvePathFinder.t.sol/CurvePathFinderTest.ts +0 -1058
  596. package/src/types/contracts/test/pathfinder/CurvePathFinder.t.sol/index.ts +0 -4
  597. package/src/types/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/NormalTokenPathFinderTest.ts +0 -1243
  598. package/src/types/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/index.ts +0 -4
  599. package/src/types/contracts/test/pathfinder/PathFinderTestHelper.ts +0 -815
  600. package/src/types/contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest.ts +0 -1328
  601. package/src/types/contracts/test/pathfinder/SwapPathFinder.t.sol/index.ts +0 -4
  602. package/src/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderTest.ts +0 -1108
  603. package/src/types/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/index.ts +0 -4
  604. package/src/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderTest.ts +0 -1142
  605. package/src/types/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/index.ts +0 -4
  606. package/src/types/contracts/test/pathfinder/YearnPathFinder.t.sol/YearnPathFinderTest.ts +0 -927
  607. package/src/types/contracts/test/pathfinder/YearnPathFinder.t.sol/index.ts +0 -4
  608. package/src/types/contracts/test/pathfinder/index.ts +0 -18
  609. package/src/types/contracts/test/pool/PoolService.t.sol/PoolServiceTest.ts +0 -1671
  610. package/src/types/contracts/test/pool/PoolService.t.sol/index.ts +0 -4
  611. package/src/types/contracts/test/pool/index.ts +0 -5
  612. package/src/types/contracts/test/sigp/AttackingContractNonPayable.sol/AttackContractNonPayable.ts +0 -81
  613. package/src/types/contracts/test/sigp/AttackingContractNonPayable.sol/index.ts +0 -4
  614. package/src/types/contracts/test/sigp/DummyMulticallTarget.ts +0 -175
  615. package/src/types/contracts/test/sigp/FlashLoanAttacker2.ts +0 -240
  616. package/src/types/contracts/test/sigp/Interfaces.sol/ICrvDeposit.ts +0 -128
  617. package/src/types/contracts/test/sigp/Interfaces.sol/ICurveGauge.ts +0 -242
  618. package/src/types/contracts/test/sigp/Interfaces.sol/ICurveVoteEscrow.ts +0 -227
  619. package/src/types/contracts/test/sigp/Interfaces.sol/IDeposit.ts +0 -371
  620. package/src/types/contracts/test/sigp/Interfaces.sol/IFeeDistro.ts +0 -104
  621. package/src/types/contracts/test/sigp/Interfaces.sol/IMinter.ts +0 -95
  622. package/src/types/contracts/test/sigp/Interfaces.sol/IPools.ts +0 -290
  623. package/src/types/contracts/test/sigp/Interfaces.sol/IRegistry.ts +0 -189
  624. package/src/types/contracts/test/sigp/Interfaces.sol/IRewardFactory.ts +0 -310
  625. package/src/types/contracts/test/sigp/Interfaces.sol/IRewards.ts +0 -395
  626. package/src/types/contracts/test/sigp/Interfaces.sol/IStaker.ts +0 -652
  627. package/src/types/contracts/test/sigp/Interfaces.sol/IStash.ts +0 -209
  628. package/src/types/contracts/test/sigp/Interfaces.sol/IStashFactory.ts +0 -120
  629. package/src/types/contracts/test/sigp/Interfaces.sol/ITokenFactory.ts +0 -104
  630. package/src/types/contracts/test/sigp/Interfaces.sol/ITokenMinter.ts +0 -143
  631. package/src/types/contracts/test/sigp/Interfaces.sol/IVestedEscrow.ts +0 -107
  632. package/src/types/contracts/test/sigp/Interfaces.sol/IVoting.ts +0 -220
  633. package/src/types/contracts/test/sigp/Interfaces.sol/IWalletChecker.ts +0 -84
  634. package/src/types/contracts/test/sigp/Interfaces.sol/index.ts +0 -21
  635. package/src/types/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/NewBaseRewardPoolMock.ts +0 -1069
  636. package/src/types/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/index.ts +0 -4
  637. package/src/types/contracts/test/sigp/NewConvexBoosterMock.sol/NewBoosterMock.ts +0 -1002
  638. package/src/types/contracts/test/sigp/NewConvexBoosterMock.sol/index.ts +0 -4
  639. package/src/types/contracts/test/sigp/NewCreditConfigurator.ts +0 -1262
  640. package/src/types/contracts/test/sigp/UniswapHelper.sol/UniswapV3AdapterTestHelper.ts +0 -326
  641. package/src/types/contracts/test/sigp/UniswapHelper.sol/index.ts +0 -4
  642. package/src/types/contracts/test/sigp/index.ts +0 -20
  643. package/src/types/contracts/test/sigp/interfaces/ILockedCvx.ts +0 -832
  644. package/src/types/contracts/test/sigp/interfaces/index.ts +0 -4
  645. package/src/types/contracts/test/sigp/stETHMock.sol/StETHMockERC20.ts +0 -725
  646. package/src/types/contracts/test/sigp/stETHMock.sol/index.ts +0 -4
  647. package/src/types/contracts/test/suites/BalanceHelper.ts +0 -375
  648. package/src/types/contracts/test/suites/BaseCreditTestSuite.ts +0 -649
  649. package/src/types/contracts/test/suites/CreditFacadeHelper.ts +0 -472
  650. package/src/types/contracts/test/suites/CreditFacadeTestSuite.ts +0 -821
  651. package/src/types/contracts/test/suites/CreditManagerTestSuite.ts +0 -748
  652. package/src/types/contracts/test/suites/PoolServiceTestSuite.ts +0 -209
  653. package/src/types/contracts/test/suites/TokensTestSuite.ts +0 -980
  654. package/src/types/contracts/test/suites/index.ts +0 -10
  655. package/src/types/contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest.ts +0 -551
  656. package/src/types/contracts/test/support/PauseMulticall.t.sol/index.ts +0 -4
  657. package/src/types/contracts/test/support/index.ts +0 -5
  658. package/src/types/contracts/test/tokens/DegenNFT.t.sol/DegenNFTTest.ts +0 -970
  659. package/src/types/contracts/test/tokens/DegenNFT.t.sol/index.ts +0 -4
  660. package/src/types/contracts/test/tokens/index.ts +0 -5
  661. package/src/types/contracts/tokens/DegenNFT.ts +0 -967
  662. package/src/types/contracts/tokens/DieselToken.ts +0 -618
  663. package/src/types/contracts/tokens/GearToken.ts +0 -994
  664. package/src/types/contracts/tokens/PhantomERC20.ts +0 -379
  665. package/src/types/contracts/tokens/index.ts +0 -7
  666. package/src/types/factories/@chainlink/contracts/index.ts +0 -4
  667. package/src/types/factories/@chainlink/contracts/src/index.ts +0 -4
  668. package/src/types/factories/@chainlink/contracts/src/v0.8/index.ts +0 -4
  669. package/src/types/factories/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface__factory.ts +0 -141
  670. package/src/types/factories/@chainlink/contracts/src/v0.8/interfaces/index.ts +0 -4
  671. package/src/types/factories/@chainlink/index.ts +0 -4
  672. package/src/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +0 -78
  673. package/src/types/factories/@openzeppelin/contracts/access/index.ts +0 -4
  674. package/src/types/factories/@openzeppelin/contracts/index.ts +0 -7
  675. package/src/types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +0 -65
  676. package/src/types/factories/@openzeppelin/contracts/security/index.ts +0 -4
  677. package/src/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +0 -349
  678. package/src/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +0 -206
  679. package/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +0 -248
  680. package/src/types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +0 -4
  681. package/src/types/factories/@openzeppelin/contracts/token/ERC20/index.ts +0 -6
  682. package/src/types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +0 -409
  683. package/src/types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts +0 -60
  684. package/src/types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts +0 -311
  685. package/src/types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +0 -356
  686. package/src/types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +0 -4
  687. package/src/types/factories/@openzeppelin/contracts/token/ERC721/index.ts +0 -7
  688. package/src/types/factories/@openzeppelin/contracts/token/index.ts +0 -5
  689. package/src/types/factories/@openzeppelin/contracts/utils/index.ts +0 -4
  690. package/src/types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts +0 -42
  691. package/src/types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts +0 -45
  692. package/src/types/factories/@openzeppelin/contracts/utils/introspection/index.ts +0 -5
  693. package/src/types/factories/@openzeppelin/index.ts +0 -4
  694. package/src/types/factories/contracts/adapters/AbstractAdapter__factory.ts +0 -107
  695. package/src/types/factories/contracts/adapters/UniversalAdapter__factory.ts +0 -230
  696. package/src/types/factories/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/ConvexV1BaseRewardPoolAdapter__factory.ts +0 -806
  697. package/src/types/factories/contracts/adapters/convex/ConvexV1_BaseRewardPool.sol/index.ts +0 -4
  698. package/src/types/factories/contracts/adapters/convex/ConvexV1_Booster.sol/ConvexV1BoosterAdapter__factory.ts +0 -533
  699. package/src/types/factories/contracts/adapters/convex/ConvexV1_Booster.sol/index.ts +0 -4
  700. package/src/types/factories/contracts/adapters/convex/ConvexV1_ClaimZap.sol/ConvexV1ClaimZapAdapter__factory.ts +0 -254
  701. package/src/types/factories/contracts/adapters/convex/ConvexV1_ClaimZap.sol/index.ts +0 -4
  702. package/src/types/factories/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/ConvexStakedPositionToken__factory.ts +0 -338
  703. package/src/types/factories/contracts/adapters/convex/ConvexV1_StakedPositionToken.sol/index.ts +0 -4
  704. package/src/types/factories/contracts/adapters/convex/index.ts +0 -7
  705. package/src/types/factories/contracts/adapters/curve/CurveV1_2.sol/CurveV1Adapter2Assets__factory.ts +0 -1137
  706. package/src/types/factories/contracts/adapters/curve/CurveV1_2.sol/index.ts +0 -4
  707. package/src/types/factories/contracts/adapters/curve/CurveV1_3.sol/CurveV1Adapter3Assets__factory.ts +0 -1137
  708. package/src/types/factories/contracts/adapters/curve/CurveV1_3.sol/index.ts +0 -4
  709. package/src/types/factories/contracts/adapters/curve/CurveV1_4.sol/CurveV1Adapter4Assets__factory.ts +0 -1137
  710. package/src/types/factories/contracts/adapters/curve/CurveV1_4.sol/index.ts +0 -4
  711. package/src/types/factories/contracts/adapters/curve/CurveV1_Base.sol/CurveV1AdapterBase__factory.ts +0 -1003
  712. package/src/types/factories/contracts/adapters/curve/CurveV1_Base.sol/index.ts +0 -4
  713. package/src/types/factories/contracts/adapters/curve/CurveV1_DepositZap.sol/CurveV1AdapterDeposit__factory.ts +0 -998
  714. package/src/types/factories/contracts/adapters/curve/CurveV1_DepositZap.sol/index.ts +0 -4
  715. package/src/types/factories/contracts/adapters/curve/CurveV1_stETH.sol/CurveV1AdapterStETH__factory.ts +0 -1124
  716. package/src/types/factories/contracts/adapters/curve/CurveV1_stETH.sol/index.ts +0 -4
  717. package/src/types/factories/contracts/adapters/curve/CurveV1_stETHGateway.sol/CurveV1StETHPoolGateway__factory.ts +0 -855
  718. package/src/types/factories/contracts/adapters/curve/CurveV1_stETHGateway.sol/index.ts +0 -4
  719. package/src/types/factories/contracts/adapters/curve/index.ts +0 -10
  720. package/src/types/factories/contracts/adapters/index.ts +0 -10
  721. package/src/types/factories/contracts/adapters/lido/LidoV1.sol/LidoV1Adapter__factory.ts +0 -558
  722. package/src/types/factories/contracts/adapters/lido/LidoV1.sol/index.ts +0 -4
  723. package/src/types/factories/contracts/adapters/lido/LidoV1_WETHGateway.sol/LidoV1Gateway__factory.ts +0 -336
  724. package/src/types/factories/contracts/adapters/lido/LidoV1_WETHGateway.sol/index.ts +0 -4
  725. package/src/types/factories/contracts/adapters/lido/index.ts +0 -5
  726. package/src/types/factories/contracts/adapters/uniswap/UniswapV2.sol/UniswapV2Adapter__factory.ts +0 -1152
  727. package/src/types/factories/contracts/adapters/uniswap/UniswapV2.sol/index.ts +0 -4
  728. package/src/types/factories/contracts/adapters/uniswap/UniswapV3.sol/UniswapV3Adapter__factory.ts +0 -473
  729. package/src/types/factories/contracts/adapters/uniswap/UniswapV3.sol/index.ts +0 -4
  730. package/src/types/factories/contracts/adapters/uniswap/index.ts +0 -5
  731. package/src/types/factories/contracts/adapters/yearn/YearnV2.sol/YearnV2Adapter__factory.ts +0 -556
  732. package/src/types/factories/contracts/adapters/yearn/YearnV2.sol/index.ts +0 -4
  733. package/src/types/factories/contracts/adapters/yearn/index.ts +0 -4
  734. package/src/types/factories/contracts/core/ACLTrait__factory.ts +0 -107
  735. package/src/types/factories/contracts/core/ACL__factory.ts +0 -320
  736. package/src/types/factories/contracts/core/AccountFactory__factory.ts +0 -479
  737. package/src/types/factories/contracts/core/AddressProvider__factory.ts +0 -404
  738. package/src/types/factories/contracts/core/ContractsRegister__factory.ts +0 -357
  739. package/src/types/factories/contracts/core/DataCompressor__factory.ts +0 -910
  740. package/src/types/factories/contracts/core/WETHGateway__factory.ts +0 -191
  741. package/src/types/factories/contracts/core/index.ts +0 -10
  742. package/src/types/factories/contracts/credit/CreditAccount__factory.ts +0 -263
  743. package/src/types/factories/contracts/credit/CreditConfigurator__factory.ts +0 -931
  744. package/src/types/factories/contracts/credit/CreditFacade__factory.ts +0 -1254
  745. package/src/types/factories/contracts/credit/CreditManager__factory.ts +0 -1180
  746. package/src/types/factories/contracts/credit/index.ts +0 -7
  747. package/src/types/factories/contracts/factories/CreditManagerFactory__factory.ts +0 -392
  748. package/src/types/factories/contracts/factories/GenesisFactory__factory.ts +0 -202
  749. package/src/types/factories/contracts/factories/PoolFactory__factory.ts +0 -248
  750. package/src/types/factories/contracts/factories/index.ts +0 -6
  751. package/src/types/factories/contracts/index.ts +0 -16
  752. package/src/types/factories/contracts/integrations/convex/IBaseRewardPool__factory.ts +0 -541
  753. package/src/types/factories/contracts/integrations/convex/IBooster__factory.ts +0 -277
  754. package/src/types/factories/contracts/integrations/convex/IClaimZap__factory.ts +0 -105
  755. package/src/types/factories/contracts/integrations/convex/IConvexToken__factory.ts +0 -274
  756. package/src/types/factories/contracts/integrations/convex/IRewards.sol/IBasicRewards__factory.ts +0 -93
  757. package/src/types/factories/contracts/integrations/convex/IRewards.sol/IRewards__factory.ts +0 -190
  758. package/src/types/factories/contracts/integrations/convex/IRewards.sol/index.ts +0 -5
  759. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICrvDeposit__factory.ts +0 -57
  760. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICurveGauge__factory.ts +0 -123
  761. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow__factory.ts +0 -90
  762. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IDeposit__factory.ts +0 -230
  763. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IFeeDistro__factory.ts +0 -46
  764. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IMinter__factory.ts +0 -39
  765. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IPools__factory.ts +0 -189
  766. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRegistry__factory.ts +0 -114
  767. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRewardFactory__factory.ts +0 -164
  768. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IRewards__factory.ts +0 -190
  769. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStaker__factory.ts +0 -324
  770. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStashFactory__factory.ts +0 -60
  771. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IStash__factory.ts +0 -95
  772. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ITokenFactory__factory.ts +0 -45
  773. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/ITokenMinter__factory.ts +0 -62
  774. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IVestedEscrow__factory.ts +0 -50
  775. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IVoting__factory.ts +0 -131
  776. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/IWalletChecker__factory.ts +0 -45
  777. package/src/types/factories/contracts/integrations/convex/Interfaces.sol/index.ts +0 -21
  778. package/src/types/factories/contracts/integrations/convex/index.ts +0 -9
  779. package/src/types/factories/contracts/integrations/curve/ICRVToken__factory.ts +0 -270
  780. package/src/types/factories/contracts/integrations/curve/ICurvePoolStETH__factory.ts +0 -478
  781. package/src/types/factories/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets__factory.ts +0 -717
  782. package/src/types/factories/contracts/integrations/curve/ICurvePool_2.sol/index.ts +0 -4
  783. package/src/types/factories/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets__factory.ts +0 -717
  784. package/src/types/factories/contracts/integrations/curve/ICurvePool_3.sol/index.ts +0 -4
  785. package/src/types/factories/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets__factory.ts +0 -717
  786. package/src/types/factories/contracts/integrations/curve/ICurvePool_4.sol/index.ts +0 -4
  787. package/src/types/factories/contracts/integrations/curve/ICurvePool__factory.ts +0 -571
  788. package/src/types/factories/contracts/integrations/curve/ICurveRegistry__factory.ts +0 -83
  789. package/src/types/factories/contracts/integrations/curve/index.ts +0 -10
  790. package/src/types/factories/contracts/integrations/index.ts +0 -8
  791. package/src/types/factories/contracts/integrations/lido/ILidoOracle__factory.ts +0 -49
  792. package/src/types/factories/contracts/integrations/lido/IstETH.sol/IstETHGetters__factory.ts +0 -344
  793. package/src/types/factories/contracts/integrations/lido/IstETH.sol/IstETH__factory.ts +0 -360
  794. package/src/types/factories/contracts/integrations/lido/IstETH.sol/index.ts +0 -5
  795. package/src/types/factories/contracts/integrations/lido/index.ts +0 -5
  796. package/src/types/factories/contracts/integrations/uniswap/IQuoter__factory.ts +0 -152
  797. package/src/types/factories/contracts/integrations/uniswap/IUniswapV2Router01__factory.ts +0 -775
  798. package/src/types/factories/contracts/integrations/uniswap/IUniswapV2Router02__factory.ts +0 -977
  799. package/src/types/factories/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter__factory.ts +0 -240
  800. package/src/types/factories/contracts/integrations/uniswap/IUniswapV3.sol/index.ts +0 -4
  801. package/src/types/factories/contracts/integrations/uniswap/IUniswapV3SwapCallback__factory.ts +0 -53
  802. package/src/types/factories/contracts/integrations/uniswap/index.ts +0 -8
  803. package/src/types/factories/contracts/integrations/yearn/IYVault__factory.ts +0 -415
  804. package/src/types/factories/contracts/integrations/yearn/index.ts +0 -4
  805. package/src/types/factories/contracts/interfaces/IACL.sol/IACLEvents__factory.ts +0 -78
  806. package/src/types/factories/contracts/interfaces/IACL.sol/IACL__factory.ts +0 -145
  807. package/src/types/factories/contracts/interfaces/IACL.sol/index.ts +0 -5
  808. package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents__factory.ts +0 -107
  809. package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters__factory.ts +0 -120
  810. package/src/types/factories/contracts/interfaces/IAccountFactory.sol/IAccountFactory__factory.ts +0 -243
  811. package/src/types/factories/contracts/interfaces/IAccountFactory.sol/index.ts +0 -6
  812. package/src/types/factories/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents__factory.ts +0 -49
  813. package/src/types/factories/contracts/interfaces/IAddressProvider.sol/IAddressProvider__factory.ts +0 -175
  814. package/src/types/factories/contracts/interfaces/IAddressProvider.sol/index.ts +0 -5
  815. package/src/types/factories/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents__factory.ts +0 -56
  816. package/src/types/factories/contracts/interfaces/IContractsRegister.sol/IContractsRegister__factory.ts +0 -193
  817. package/src/types/factories/contracts/interfaces/IContractsRegister.sol/index.ts +0 -5
  818. package/src/types/factories/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions__factory.ts +0 -40
  819. package/src/types/factories/contracts/interfaces/ICreditAccount.sol/ICreditAccount__factory.ts +0 -227
  820. package/src/types/factories/contracts/interfaces/ICreditAccount.sol/index.ts +0 -5
  821. package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents__factory.ts +0 -293
  822. package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions__factory.ts +0 -90
  823. package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator__factory.ts +0 -495
  824. package/src/types/factories/contracts/interfaces/ICreditConfigurator.sol/index.ts +0 -6
  825. package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents__factory.ts +0 -302
  826. package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions__factory.ts +0 -176
  827. package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended__factory.ts +0 -61
  828. package/src/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacade__factory.ts +0 -972
  829. package/src/types/factories/contracts/interfaces/ICreditFacade.sol/index.ts +0 -7
  830. package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events__factory.ts +0 -62
  831. package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions__factory.ts +0 -95
  832. package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2__factory.ts +0 -928
  833. package/src/types/factories/contracts/interfaces/ICreditManagerV2.sol/index.ts +0 -6
  834. package/src/types/factories/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions__factory.ts +0 -40
  835. package/src/types/factories/contracts/interfaces/IDataCompressor.sol/IDataCompressor__factory.ts +0 -790
  836. package/src/types/factories/contracts/interfaces/IDataCompressor.sol/index.ts +0 -5
  837. package/src/types/factories/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions__factory.ts +0 -46
  838. package/src/types/factories/contracts/interfaces/IDegenNFT.sol/IDegenNFT__factory.ts +0 -134
  839. package/src/types/factories/contracts/interfaces/IDegenNFT.sol/index.ts +0 -5
  840. package/src/types/factories/contracts/interfaces/IGearToken__factory.ts +0 -346
  841. package/src/types/factories/contracts/interfaces/IInterestRateModel__factory.ts +0 -63
  842. package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.ts +0 -45
  843. package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.ts +0 -40
  844. package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed__factory.ts +0 -244
  845. package/src/types/factories/contracts/interfaces/ILPPriceFeed.sol/index.ts +0 -6
  846. package/src/types/factories/contracts/interfaces/IMerkleDistributor__factory.ts +0 -124
  847. package/src/types/factories/contracts/interfaces/IPhantomERC20__factory.ts +0 -261
  848. package/src/types/factories/contracts/interfaces/IPoolService.sol/IPoolServiceEvents__factory.ts +0 -222
  849. package/src/types/factories/contracts/interfaces/IPoolService.sol/IPoolService__factory.ts +0 -581
  850. package/src/types/factories/contracts/interfaces/IPoolService.sol/index.ts +0 -5
  851. package/src/types/factories/contracts/interfaces/IPriceFeedAddress__factory.ts +0 -104
  852. package/src/types/factories/contracts/interfaces/IPriceFeedType__factory.ts +0 -52
  853. package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events__factory.ts +0 -49
  854. package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.ts +0 -45
  855. package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext__factory.ts +0 -274
  856. package/src/types/factories/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2__factory.ts +0 -256
  857. package/src/types/factories/contracts/interfaces/IPriceOracle.sol/index.ts +0 -7
  858. package/src/types/factories/contracts/interfaces/IVersion__factory.ts +0 -39
  859. package/src/types/factories/contracts/interfaces/IWETHGateway__factory.ts +0 -90
  860. package/src/types/factories/contracts/interfaces/V1/ICreditFilter__factory.ts +0 -704
  861. package/src/types/factories/contracts/interfaces/V1/ICreditManager__factory.ts +0 -773
  862. package/src/types/factories/contracts/interfaces/V1/IPriceOracle.sol/IPriceOracleV2__factory.ts +0 -116
  863. package/src/types/factories/contracts/interfaces/V1/IPriceOracle.sol/index.ts +0 -4
  864. package/src/types/factories/contracts/interfaces/V1/index.ts +0 -6
  865. package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions__factory.ts +0 -37
  866. package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/IAdapter__factory.ts +0 -102
  867. package/src/types/factories/contracts/interfaces/adapters/IAdapter.sol/index.ts +0 -5
  868. package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions__factory.ts +0 -46
  869. package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter__factory.ts +0 -173
  870. package/src/types/factories/contracts/interfaces/adapters/IUniversalAdapter.sol/index.ts +0 -5
  871. package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors__factory.ts +0 -43
  872. package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter__factory.ts +0 -723
  873. package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BaseRewardPoolAdapter.sol/index.ts +0 -5
  874. package/src/types/factories/contracts/interfaces/adapters/convex/IConvexV1BoosterAdapter__factory.ts +0 -377
  875. package/src/types/factories/contracts/interfaces/adapters/convex/index.ts +0 -5
  876. package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions__factory.ts +0 -35
  877. package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/ICurveV1Adapter__factory.ts +0 -900
  878. package/src/types/factories/contracts/interfaces/adapters/curve/ICurveV1Adapter.sol/index.ts +0 -5
  879. package/src/types/factories/contracts/interfaces/adapters/curve/index.ts +0 -4
  880. package/src/types/factories/contracts/interfaces/adapters/index.ts +0 -9
  881. package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.ts +0 -43
  882. package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.ts +0 -35
  883. package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/ILidoV1Adapter__factory.ts +0 -324
  884. package/src/types/factories/contracts/interfaces/adapters/lido/ILidoV1Adapter.sol/index.ts +0 -6
  885. package/src/types/factories/contracts/interfaces/adapters/lido/index.ts +0 -4
  886. package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV2Adapter__factory.ts +0 -1082
  887. package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions__factory.ts +0 -35
  888. package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.ts +0 -408
  889. package/src/types/factories/contracts/interfaces/adapters/uniswap/IUniswapV3Adapter.sol/index.ts +0 -5
  890. package/src/types/factories/contracts/interfaces/adapters/uniswap/index.ts +0 -5
  891. package/src/types/factories/contracts/interfaces/external/IWETH__factory.ts +0 -67
  892. package/src/types/factories/contracts/interfaces/external/index.ts +0 -4
  893. package/src/types/factories/contracts/interfaces/index.ts +0 -27
  894. package/src/types/factories/contracts/libraries/Errors__factory.ts +0 -488
  895. package/src/types/factories/contracts/libraries/index.ts +0 -4
  896. package/src/types/factories/contracts/oracles/LPPriceFeed__factory.ts +0 -350
  897. package/src/types/factories/contracts/oracles/PriceFeedChecker__factory.ts +0 -77
  898. package/src/types/factories/contracts/oracles/PriceOracle__factory.ts +0 -458
  899. package/src/types/factories/contracts/oracles/ZeroPriceFeed__factory.ts +0 -204
  900. package/src/types/factories/contracts/oracles/curve/AbstractCurveLPPriceFeed__factory.ts +0 -380
  901. package/src/types/factories/contracts/oracles/curve/CurveLP2PriceFeed__factory.ts +0 -493
  902. package/src/types/factories/contracts/oracles/curve/CurveLP3PriceFeed__factory.ts +0 -515
  903. package/src/types/factories/contracts/oracles/curve/CurveLP4PriceFeed__factory.ts +0 -537
  904. package/src/types/factories/contracts/oracles/curve/index.ts +0 -7
  905. package/src/types/factories/contracts/oracles/index.ts +0 -9
  906. package/src/types/factories/contracts/oracles/yearn/YearnPriceFeed__factory.ts +0 -462
  907. package/src/types/factories/contracts/oracles/yearn/index.ts +0 -4
  908. package/src/types/factories/contracts/pathfinder/ConvexPathFinder__factory.ts +0 -224
  909. package/src/types/factories/contracts/pathfinder/CurveLPPathFinder__factory.ts +0 -323
  910. package/src/types/factories/contracts/pathfinder/CurvePathFinder__factory.ts +0 -443
  911. package/src/types/factories/contracts/pathfinder/ISwapper__factory.ts +0 -226
  912. package/src/types/factories/contracts/pathfinder/NormalTokenPathFinder__factory.ts +0 -623
  913. package/src/types/factories/contracts/pathfinder/SwapPathFinder__factory.ts +0 -443
  914. package/src/types/factories/contracts/pathfinder/UniswapV2PathFinder__factory.ts +0 -395
  915. package/src/types/factories/contracts/pathfinder/UniswapV3PathFinder__factory.ts +0 -516
  916. package/src/types/factories/contracts/pathfinder/YearnPathFinder__factory.ts +0 -181
  917. package/src/types/factories/contracts/pathfinder/data/Balances.sol/BalanceOps__factory.ts +0 -73
  918. package/src/types/factories/contracts/pathfinder/data/Balances.sol/index.ts +0 -4
  919. package/src/types/factories/contracts/pathfinder/data/index.ts +0 -4
  920. package/src/types/factories/contracts/pathfinder/index.ts +0 -13
  921. package/src/types/factories/contracts/pool/LinearInterestRateModel__factory.ts +0 -249
  922. package/src/types/factories/contracts/pool/PoolService__factory.ts +0 -917
  923. package/src/types/factories/contracts/pool/index.ts +0 -5
  924. package/src/types/factories/contracts/support/ContractUpgrader__factory.ts +0 -130
  925. package/src/types/factories/contracts/support/MerkleDistributor__factory.ts +0 -191
  926. package/src/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.ts +0 -373
  927. package/src/types/factories/contracts/support/MultiCall.sol/index.ts +0 -4
  928. package/src/types/factories/contracts/support/PauseMulticall__factory.ts +0 -206
  929. package/src/types/factories/contracts/support/index.ts +0 -7
  930. package/src/types/factories/contracts/test/Playground.t.sol/PlaygroundTest__factory.ts +0 -370
  931. package/src/types/factories/contracts/test/Playground.t.sol/index.ts +0 -4
  932. package/src/types/factories/contracts/test/adapters/AbstractAdapter.t.sol/AbstractAdapterTest__factory.ts +0 -966
  933. package/src/types/factories/contracts/test/adapters/AbstractAdapter.t.sol/index.ts +0 -4
  934. package/src/types/factories/contracts/test/adapters/AdapterTestHelper__factory.ts +0 -740
  935. package/src/types/factories/contracts/test/adapters/ConvexAdapterHelper__factory.ts +0 -1190
  936. package/src/types/factories/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/ConvexV1AdapterBasePoolTest__factory.ts +0 -1280
  937. package/src/types/factories/contracts/test/adapters/ConvexV1_BaseRewardPool.t.sol/index.ts +0 -4
  938. package/src/types/factories/contracts/test/adapters/ConvexV1_Booster.t.sol/ConvexV1AdapterBoosterTest__factory.ts +0 -1250
  939. package/src/types/factories/contracts/test/adapters/ConvexV1_Booster.t.sol/index.ts +0 -4
  940. package/src/types/factories/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/ConvexV1ClaimZapAdapterTest__factory.ts +0 -1245
  941. package/src/types/factories/contracts/test/adapters/ConvexV1_ClaimZap.t.sol/index.ts +0 -4
  942. package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/CurveV1AdapterBaseMetaPoolTest__factory.ts +0 -819
  943. package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseMetapoolTest.t.sol/index.ts +0 -4
  944. package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/CurveV1AdapterBaseTest__factory.ts +0 -899
  945. package/src/types/factories/contracts/test/adapters/CurveV1AdapterBaseTest.t.sol/index.ts +0 -4
  946. package/src/types/factories/contracts/test/adapters/CurveV1AdapterHelper__factory.ts +0 -749
  947. package/src/types/factories/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/CurveV1Adapter2AssetsTest__factory.ts +0 -831
  948. package/src/types/factories/contracts/test/adapters/CurveV1Adapter_2AssetsTest.t.sol/index.ts +0 -4
  949. package/src/types/factories/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/CurveV1Adapter3AssetsTest__factory.ts +0 -831
  950. package/src/types/factories/contracts/test/adapters/CurveV1Adapter_3AssetsTest.t.sol/index.ts +0 -4
  951. package/src/types/factories/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/CurveV1Adapter4AssetsTest__factory.ts +0 -838
  952. package/src/types/factories/contracts/test/adapters/CurveV1Adapter_4AssetsTest.t.sol/index.ts +0 -4
  953. package/src/types/factories/contracts/test/adapters/CurveV1StETHTest.t.sol/CurveV1StEthAdapterTest__factory.ts +0 -850
  954. package/src/types/factories/contracts/test/adapters/CurveV1StETHTest.t.sol/index.ts +0 -4
  955. package/src/types/factories/contracts/test/adapters/LidoV1Adapter.t.sol/LidoV1AdapterTest__factory.ts +0 -884
  956. package/src/types/factories/contracts/test/adapters/LidoV1Adapter.t.sol/index.ts +0 -4
  957. package/src/types/factories/contracts/test/adapters/UniswapV2Adapter.t.sol/UniswapV2AdapterTest__factory.ts +0 -913
  958. package/src/types/factories/contracts/test/adapters/UniswapV2Adapter.t.sol/index.ts +0 -4
  959. package/src/types/factories/contracts/test/adapters/UniswapV3Adapter.t.sol/UniswapV3AdapterTest__factory.ts +0 -846
  960. package/src/types/factories/contracts/test/adapters/UniswapV3Adapter.t.sol/index.ts +0 -4
  961. package/src/types/factories/contracts/test/adapters/YearnV2Adapter.t.sol/YearnV2AdapterTest__factory.ts +0 -918
  962. package/src/types/factories/contracts/test/adapters/YearnV2Adapter.t.sol/index.ts +0 -4
  963. package/src/types/factories/contracts/test/adapters/index.ts +0 -20
  964. package/src/types/factories/contracts/test/core/ACL.t.sol/ACLTest__factory.ts +0 -457
  965. package/src/types/factories/contracts/test/core/ACL.t.sol/index.ts +0 -4
  966. package/src/types/factories/contracts/test/core/AddressProvider.t.sol/AddressProviderTest__factory.ts +0 -466
  967. package/src/types/factories/contracts/test/core/AddressProvider.t.sol/index.ts +0 -4
  968. package/src/types/factories/contracts/test/core/index.ts +0 -5
  969. package/src/types/factories/contracts/test/credit/CreditConfigurator.t.sol/CreditConfiguratorTest__factory.ts +0 -1048
  970. package/src/types/factories/contracts/test/credit/CreditConfigurator.t.sol/index.ts +0 -4
  971. package/src/types/factories/contracts/test/credit/CreditFacade.t.sol/CreditFacadeTest__factory.ts +0 -1368
  972. package/src/types/factories/contracts/test/credit/CreditFacade.t.sol/index.ts +0 -4
  973. package/src/types/factories/contracts/test/credit/CreditManager.t.sol/CreditManagerTest__factory.ts +0 -1003
  974. package/src/types/factories/contracts/test/credit/CreditManager.t.sol/index.ts +0 -4
  975. package/src/types/factories/contracts/test/credit/index.ts +0 -6
  976. package/src/types/factories/contracts/test/index.ts +0 -17
  977. package/src/types/factories/contracts/test/lib/cheatCodes.sol/CheatCodes__factory.ts +0 -472
  978. package/src/types/factories/contracts/test/lib/cheatCodes.sol/index.ts +0 -4
  979. package/src/types/factories/contracts/test/lib/constants.sol/Roles__factory.ts +0 -358
  980. package/src/types/factories/contracts/test/lib/constants.sol/index.ts +0 -4
  981. package/src/types/factories/contracts/test/lib/index.ts +0 -6
  982. package/src/types/factories/contracts/test/lib/test.sol/DSTest__factory.ts +0 -353
  983. package/src/types/factories/contracts/test/lib/test.sol/index.ts +0 -4
  984. package/src/types/factories/contracts/test/mainnet/MainnetTokens.sol/MainnetTokensTestSuite__factory.ts +0 -237
  985. package/src/types/factories/contracts/test/mainnet/MainnetTokens.sol/index.ts +0 -4
  986. package/src/types/factories/contracts/test/mainnet/TotalValueCalculator__factory.ts +0 -95
  987. package/src/types/factories/contracts/test/mainnet/index.ts +0 -5
  988. package/src/types/factories/contracts/test/mocks/adapters/AdapterMock__factory.ts +0 -373
  989. package/src/types/factories/contracts/test/mocks/adapters/TargetContractMock__factory.ts +0 -84
  990. package/src/types/factories/contracts/test/mocks/adapters/index.ts +0 -5
  991. package/src/types/factories/contracts/test/mocks/core/ACLTraitTest__factory.ts +0 -185
  992. package/src/types/factories/contracts/test/mocks/core/AddressProviderACLMock__factory.ts +0 -153
  993. package/src/types/factories/contracts/test/mocks/core/index.ts +0 -5
  994. package/src/types/factories/contracts/test/mocks/credit/CreditManagerInternal__factory.ts +0 -1395
  995. package/src/types/factories/contracts/test/mocks/credit/index.ts +0 -4
  996. package/src/types/factories/contracts/test/mocks/dao/TreasuryMock__factory.ts +0 -79
  997. package/src/types/factories/contracts/test/mocks/dao/index.ts +0 -4
  998. package/src/types/factories/contracts/test/mocks/index.ts +0 -12
  999. package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/BaseRewardPoolMock__factory.ts +0 -763
  1000. package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/IBaseRewardPoolMockEvents__factory.ts +0 -105
  1001. package/src/types/factories/contracts/test/mocks/integrations/ConvexBaseRewardPoolMock.sol/index.ts +0 -5
  1002. package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/BoosterMock__factory.ts +0 -776
  1003. package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/IBoosterMockEvents__factory.ts +0 -94
  1004. package/src/types/factories/contracts/test/mocks/integrations/ConvexBoosterMock.sol/index.ts +0 -5
  1005. package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/ClaimZapMock__factory.ts +0 -187
  1006. package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/IBasicRewards__factory.ts +0 -93
  1007. package/src/types/factories/contracts/test/mocks/integrations/ConvexClaimZapMock.sol/index.ts +0 -5
  1008. package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/ExtraRewardPoolMock__factory.ts +0 -558
  1009. package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/IExtraRewardPoolMockEvents__factory.ts +0 -105
  1010. package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/VirtualBalanceWrapper__factory.ts +0 -186
  1011. package/src/types/factories/contracts/test/mocks/integrations/ConvexExtraRewardPoolMock.sol/index.ts +0 -6
  1012. package/src/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/TokenRewardContractMock__factory.ts +0 -345
  1013. package/src/types/factories/contracts/test/mocks/integrations/ConvexTokenRewardContractMock.sol/index.ts +0 -4
  1014. package/src/types/factories/contracts/test/mocks/integrations/CurveV1MetapoolMock__factory.ts +0 -747
  1015. package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_2Assets__factory.ts +0 -902
  1016. package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_3Assets__factory.ts +0 -902
  1017. package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock_4Assets__factory.ts +0 -902
  1018. package/src/types/factories/contracts/test/mocks/integrations/CurveV1Mock__factory.ts +0 -756
  1019. package/src/types/factories/contracts/test/mocks/integrations/CurveV1StETHMock__factory.ts +0 -594
  1020. package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents__factory.ts +0 -51
  1021. package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/LidoMock__factory.ts +0 -525
  1022. package/src/types/factories/contracts/test/mocks/integrations/LidoMock.sol/index.ts +0 -5
  1023. package/src/types/factories/contracts/test/mocks/integrations/UniswapV2Mock__factory.ts +0 -1060
  1024. package/src/types/factories/contracts/test/mocks/integrations/UniswapV3Mock__factory.ts +0 -776
  1025. package/src/types/factories/contracts/test/mocks/integrations/YearnV2Mock__factory.ts +0 -609
  1026. package/src/types/factories/contracts/test/mocks/integrations/index.ts +0 -18
  1027. package/src/types/factories/contracts/test/mocks/libraries/PercentageMathTest__factory.ts +0 -110
  1028. package/src/types/factories/contracts/test/mocks/libraries/WadRayMathTest__factory.ts +0 -248
  1029. package/src/types/factories/contracts/test/mocks/libraries/index.ts +0 -5
  1030. package/src/types/factories/contracts/test/mocks/oracles/LPPriceFeedMock__factory.ts +0 -449
  1031. package/src/types/factories/contracts/test/mocks/oracles/PriceFeedMock__factory.ts +0 -297
  1032. package/src/types/factories/contracts/test/mocks/oracles/index.ts +0 -5
  1033. package/src/types/factories/contracts/test/mocks/pool/CreditManagerMockForPoolTest__factory.ts +0 -194
  1034. package/src/types/factories/contracts/test/mocks/pool/PoolServiceMock__factory.ts +0 -899
  1035. package/src/types/factories/contracts/test/mocks/pool/TestPoolService__factory.ts +0 -976
  1036. package/src/types/factories/contracts/test/mocks/pool/index.ts +0 -6
  1037. package/src/types/factories/contracts/test/mocks/token/CERC20Mock__factory.ts +0 -486
  1038. package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedFalse__factory.ts +0 -395
  1039. package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/ERC20ApproveRestrictedRevert__factory.ts +0 -395
  1040. package/src/types/factories/contracts/test/mocks/token/ERC20ApproveRestricted.sol/index.ts +0 -5
  1041. package/src/types/factories/contracts/test/mocks/token/ERC20Blocking.sol/ERC20BlockingMock__factory.ts +0 -446
  1042. package/src/types/factories/contracts/test/mocks/token/ERC20Blocking.sol/index.ts +0 -4
  1043. package/src/types/factories/contracts/test/mocks/token/ERC20Fee.sol/TokenFeeMock__factory.ts +0 -454
  1044. package/src/types/factories/contracts/test/mocks/token/ERC20Fee.sol/index.ts +0 -4
  1045. package/src/types/factories/contracts/test/mocks/token/ERC20Mock__factory.ts +0 -526
  1046. package/src/types/factories/contracts/test/mocks/token/ERC20NonCompliant.sol/NonCompliantERC20__factory.ts +0 -86
  1047. package/src/types/factories/contracts/test/mocks/token/ERC20NonCompliant.sol/index.ts +0 -4
  1048. package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/ERC721ReceiverMock__factory.ts +0 -96
  1049. package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/IERC721Receiver__factory.ts +0 -60
  1050. package/src/types/factories/contracts/test/mocks/token/ERC721ReceiverMock.sol/index.ts +0 -5
  1051. package/src/types/factories/contracts/test/mocks/token/StETHMock__factory.ts +0 -441
  1052. package/src/types/factories/contracts/test/mocks/token/WETHMock__factory.ts +0 -364
  1053. package/src/types/factories/contracts/test/mocks/token/index.ts +0 -12
  1054. package/src/types/factories/contracts/test/oracles/CurveLPPriceFeed.t.sol/CurveLPPriceFeedTest__factory.ts +0 -543
  1055. package/src/types/factories/contracts/test/oracles/CurveLPPriceFeed.t.sol/index.ts +0 -4
  1056. package/src/types/factories/contracts/test/oracles/LPPriceFeed.t.sol/LPPriceFeedTest__factory.ts +0 -480
  1057. package/src/types/factories/contracts/test/oracles/LPPriceFeed.t.sol/index.ts +0 -4
  1058. package/src/types/factories/contracts/test/oracles/PriceOracle.t.sol/PriceOracleTest__factory.ts +0 -511
  1059. package/src/types/factories/contracts/test/oracles/PriceOracle.t.sol/index.ts +0 -4
  1060. package/src/types/factories/contracts/test/oracles/YearnPriceFeed.t.sol/YearnFeedTest__factory.ts +0 -474
  1061. package/src/types/factories/contracts/test/oracles/YearnPriceFeed.t.sol/index.ts +0 -4
  1062. package/src/types/factories/contracts/test/oracles/ZeroPriceFeed.t.sol/ZeroFeedTest__factory.ts +0 -422
  1063. package/src/types/factories/contracts/test/oracles/ZeroPriceFeed.t.sol/index.ts +0 -4
  1064. package/src/types/factories/contracts/test/oracles/index.ts +0 -8
  1065. package/src/types/factories/contracts/test/pathfinder/CurveLPPathFinder.t.sol/CurveLPPathFinderTest__factory.ts +0 -673
  1066. package/src/types/factories/contracts/test/pathfinder/CurveLPPathFinder.t.sol/index.ts +0 -4
  1067. package/src/types/factories/contracts/test/pathfinder/CurvePathFinder.t.sol/CurvePathFinderTest__factory.ts +0 -750
  1068. package/src/types/factories/contracts/test/pathfinder/CurvePathFinder.t.sol/index.ts +0 -4
  1069. package/src/types/factories/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/NormalTokenPathFinderTest__factory.ts +0 -839
  1070. package/src/types/factories/contracts/test/pathfinder/NormalTokenPathFinder.t.sol/index.ts +0 -4
  1071. package/src/types/factories/contracts/test/pathfinder/PathFinderTestHelper__factory.ts +0 -652
  1072. package/src/types/factories/contracts/test/pathfinder/SwapPathFinder.t.sol/SwapPathFinderTest__factory.ts +0 -912
  1073. package/src/types/factories/contracts/test/pathfinder/SwapPathFinder.t.sol/index.ts +0 -4
  1074. package/src/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/UniswapV2PathFinderTest__factory.ts +0 -806
  1075. package/src/types/factories/contracts/test/pathfinder/UniswapV2PathFinder.t.sol/index.ts +0 -4
  1076. package/src/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/UniswapV3PathFinderTest__factory.ts +0 -826
  1077. package/src/types/factories/contracts/test/pathfinder/UniswapV3PathFinder.t.sol/index.ts +0 -4
  1078. package/src/types/factories/contracts/test/pathfinder/YearnPathFinder.t.sol/YearnPathFinderTest__factory.ts +0 -676
  1079. package/src/types/factories/contracts/test/pathfinder/YearnPathFinder.t.sol/index.ts +0 -4
  1080. package/src/types/factories/contracts/test/pathfinder/index.ts +0 -11
  1081. package/src/types/factories/contracts/test/pool/PoolService.t.sol/PoolServiceTest__factory.ts +0 -804
  1082. package/src/types/factories/contracts/test/pool/PoolService.t.sol/index.ts +0 -4
  1083. package/src/types/factories/contracts/test/pool/index.ts +0 -4
  1084. package/src/types/factories/contracts/test/sigp/AttackingContractNonPayable.sol/AttackContractNonPayable__factory.ts +0 -88
  1085. package/src/types/factories/contracts/test/sigp/AttackingContractNonPayable.sol/index.ts +0 -4
  1086. package/src/types/factories/contracts/test/sigp/DummyMulticallTarget__factory.ts +0 -131
  1087. package/src/types/factories/contracts/test/sigp/FlashLoanAttacker2__factory.ts +0 -164
  1088. package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICrvDeposit__factory.ts +0 -57
  1089. package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICurveGauge__factory.ts +0 -123
  1090. package/src/types/factories/contracts/test/sigp/Interfaces.sol/ICurveVoteEscrow__factory.ts +0 -90
  1091. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IDeposit__factory.ts +0 -230
  1092. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IFeeDistro__factory.ts +0 -46
  1093. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IMinter__factory.ts +0 -39
  1094. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IPools__factory.ts +0 -189
  1095. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRegistry__factory.ts +0 -114
  1096. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRewardFactory__factory.ts +0 -164
  1097. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IRewards__factory.ts +0 -190
  1098. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStaker__factory.ts +0 -324
  1099. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStashFactory__factory.ts +0 -60
  1100. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IStash__factory.ts +0 -95
  1101. package/src/types/factories/contracts/test/sigp/Interfaces.sol/ITokenFactory__factory.ts +0 -45
  1102. package/src/types/factories/contracts/test/sigp/Interfaces.sol/ITokenMinter__factory.ts +0 -62
  1103. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IVestedEscrow__factory.ts +0 -50
  1104. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IVoting__factory.ts +0 -131
  1105. package/src/types/factories/contracts/test/sigp/Interfaces.sol/IWalletChecker__factory.ts +0 -45
  1106. package/src/types/factories/contracts/test/sigp/Interfaces.sol/index.ts +0 -21
  1107. package/src/types/factories/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/NewBaseRewardPoolMock__factory.ts +0 -767
  1108. package/src/types/factories/contracts/test/sigp/NewConvexBaseRewardPoolMock.sol/index.ts +0 -4
  1109. package/src/types/factories/contracts/test/sigp/NewConvexBoosterMock.sol/NewBoosterMock__factory.ts +0 -776
  1110. package/src/types/factories/contracts/test/sigp/NewConvexBoosterMock.sol/index.ts +0 -4
  1111. package/src/types/factories/contracts/test/sigp/NewCreditConfigurator__factory.ts +0 -922
  1112. package/src/types/factories/contracts/test/sigp/UniswapHelper.sol/UniswapV3AdapterTestHelper__factory.ts +0 -244
  1113. package/src/types/factories/contracts/test/sigp/UniswapHelper.sol/index.ts +0 -4
  1114. package/src/types/factories/contracts/test/sigp/index.ts +0 -13
  1115. package/src/types/factories/contracts/test/sigp/interfaces/ILockedCvx__factory.ts +0 -442
  1116. package/src/types/factories/contracts/test/sigp/interfaces/index.ts +0 -4
  1117. package/src/types/factories/contracts/test/sigp/stETHMock.sol/StETHMockERC20__factory.ts +0 -482
  1118. package/src/types/factories/contracts/test/sigp/stETHMock.sol/index.ts +0 -4
  1119. package/src/types/factories/contracts/test/suites/BalanceHelper__factory.ts +0 -356
  1120. package/src/types/factories/contracts/test/suites/BaseCreditTestSuite__factory.ts +0 -589
  1121. package/src/types/factories/contracts/test/suites/CreditFacadeHelper__factory.ts +0 -421
  1122. package/src/types/factories/contracts/test/suites/CreditFacadeTestSuite__factory.ts +0 -685
  1123. package/src/types/factories/contracts/test/suites/CreditManagerTestSuite__factory.ts +0 -677
  1124. package/src/types/factories/contracts/test/suites/PoolServiceTestSuite__factory.ts +0 -186
  1125. package/src/types/factories/contracts/test/suites/TokensTestSuite__factory.ts +0 -744
  1126. package/src/types/factories/contracts/test/suites/index.ts +0 -10
  1127. package/src/types/factories/contracts/test/support/PauseMulticall.t.sol/PauseMulticallTest__factory.ts +0 -398
  1128. package/src/types/factories/contracts/test/support/PauseMulticall.t.sol/index.ts +0 -4
  1129. package/src/types/factories/contracts/test/support/index.ts +0 -4
  1130. package/src/types/factories/contracts/test/tokens/DegenNFT.t.sol/DegenNFTTest__factory.ts +0 -560
  1131. package/src/types/factories/contracts/test/tokens/DegenNFT.t.sol/index.ts +0 -4
  1132. package/src/types/factories/contracts/test/tokens/index.ts +0 -4
  1133. package/src/types/factories/contracts/tokens/DegenNFT__factory.ts +0 -699
  1134. package/src/types/factories/contracts/tokens/DieselToken__factory.ts +0 -464
  1135. package/src/types/factories/contracts/tokens/GearToken__factory.ts +0 -719
  1136. package/src/types/factories/contracts/tokens/PhantomERC20__factory.ts +0 -261
  1137. package/src/types/factories/contracts/tokens/index.ts +0 -7
  1138. package/src/types/factories/index.ts +0 -6
  1139. package/src/types/hardhat.d.ts +0 -2715
  1140. package/src/types/index.ts +0 -562
  1141. package/src/utils/errors.ts +0 -11
  1142. package/src/utils/extracter.ts +0 -30
  1143. package/src/utils/formatter.ts +0 -146
  1144. package/src/utils/loading.ts +0 -17
  1145. package/src/utils/mappers.ts +0 -32
  1146. package/src/utils/math.ts +0 -42
  1147. package/src/utils/multicall.ts +0 -80
  1148. package/src/utils/network.ts +0 -28
  1149. package/src/utils/price.ts +0 -33
  1150. package/src/utils/repeater.ts +0 -18
  1151. package/src/utils/types.ts +0 -7
  1152. package/src/utils/validate.ts +0 -8
  1153. package/tsconfig.json +0 -62
@@ -1,189 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "GenesisDeployer",
4
- "sourceName": "contracts/deployer/GenesisDeployer.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "components": [
10
- {
11
- "internalType": "address",
12
- "name": "treasury",
13
- "type": "address"
14
- },
15
- {
16
- "internalType": "address",
17
- "name": "wethToken",
18
- "type": "address"
19
- },
20
- {
21
- "components": [
22
- {
23
- "internalType": "address",
24
- "name": "token",
25
- "type": "address"
26
- },
27
- {
28
- "internalType": "address",
29
- "name": "swapContract",
30
- "type": "address"
31
- }
32
- ],
33
- "internalType": "struct DataTypes.MiningApproval[]",
34
- "name": "miningApprovals",
35
- "type": "tuple[]"
36
- }
37
- ],
38
- "internalType": "struct GenesisDeployer.GenesisOpts",
39
- "name": "opts",
40
- "type": "tuple"
41
- }
42
- ],
43
- "stateMutability": "nonpayable",
44
- "type": "constructor"
45
- },
46
- {
47
- "anonymous": false,
48
- "inputs": [
49
- {
50
- "indexed": true,
51
- "internalType": "address",
52
- "name": "previousOwner",
53
- "type": "address"
54
- },
55
- {
56
- "indexed": true,
57
- "internalType": "address",
58
- "name": "newOwner",
59
- "type": "address"
60
- }
61
- ],
62
- "name": "OwnershipTransferred",
63
- "type": "event"
64
- },
65
- {
66
- "inputs": [],
67
- "name": "acl",
68
- "outputs": [
69
- {
70
- "internalType": "contract ACL",
71
- "name": "",
72
- "type": "address"
73
- }
74
- ],
75
- "stateMutability": "view",
76
- "type": "function"
77
- },
78
- {
79
- "inputs": [
80
- {
81
- "components": [
82
- {
83
- "internalType": "address",
84
- "name": "token",
85
- "type": "address"
86
- },
87
- {
88
- "internalType": "address",
89
- "name": "priceFeed",
90
- "type": "address"
91
- }
92
- ],
93
- "internalType": "struct GenesisDeployer.PriceFeedConfig[]",
94
- "name": "priceFeeds",
95
- "type": "tuple[]"
96
- },
97
- {
98
- "components": [
99
- {
100
- "internalType": "address",
101
- "name": "yVault",
102
- "type": "address"
103
- },
104
- {
105
- "internalType": "uint256",
106
- "name": "yearnLowerBound",
107
- "type": "uint256"
108
- },
109
- {
110
- "internalType": "uint256",
111
- "name": "yearnMaxAPY",
112
- "type": "uint256"
113
- }
114
- ],
115
- "internalType": "struct GenesisDeployer.YearnPriceFeedConfig[]",
116
- "name": "yPFConfig",
117
- "type": "tuple[]"
118
- }
119
- ],
120
- "name": "addPriceFeeds",
121
- "outputs": [],
122
- "stateMutability": "nonpayable",
123
- "type": "function"
124
- },
125
- {
126
- "inputs": [],
127
- "name": "addressProvider",
128
- "outputs": [
129
- {
130
- "internalType": "contract AddressProvider",
131
- "name": "",
132
- "type": "address"
133
- }
134
- ],
135
- "stateMutability": "view",
136
- "type": "function"
137
- },
138
- {
139
- "inputs": [],
140
- "name": "owner",
141
- "outputs": [
142
- {
143
- "internalType": "address",
144
- "name": "",
145
- "type": "address"
146
- }
147
- ],
148
- "stateMutability": "view",
149
- "type": "function"
150
- },
151
- {
152
- "inputs": [],
153
- "name": "priceOracle",
154
- "outputs": [
155
- {
156
- "internalType": "contract PriceOracle",
157
- "name": "",
158
- "type": "address"
159
- }
160
- ],
161
- "stateMutability": "view",
162
- "type": "function"
163
- },
164
- {
165
- "inputs": [],
166
- "name": "renounceOwnership",
167
- "outputs": [],
168
- "stateMutability": "nonpayable",
169
- "type": "function"
170
- },
171
- {
172
- "inputs": [
173
- {
174
- "internalType": "address",
175
- "name": "newOwner",
176
- "type": "address"
177
- }
178
- ],
179
- "name": "transferOwnership",
180
- "outputs": [],
181
- "stateMutability": "nonpayable",
182
- "type": "function"
183
- }
184
- ],
185
- "bytecode": "0x60806040523480156200001157600080fd5b506040516201b5f43803806201b5f4833981810160405281019062000037919062000f0a565b60006200004962000caa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350604051620000f59062000cb2565b604051809103906000f08015801562000112573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386e09c0882602001516040518263ffffffff1660e01b8152600401620001b4919062001076565b600060405180830381600087803b158015620001cf57600080fd5b505af1158015620001e4573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ed6511082600001516040518263ffffffff1660e01b815260040162000249919062001076565b600060405180830381600087803b1580156200026457600080fd5b505af115801562000279573d6000803e3d6000fd5b505050506040516200028b9062000cc0565b604051809103906000f080158015620002a8573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376aad605600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000368919062001076565b600060405180830381600087803b1580156200038357600080fd5b505af115801562000398573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620003cf9062000cce565b620003db919062001076565b604051809103906000f080158015620003f8573d6000803e3d6000fd5b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce3c4ae4826040518263ffffffff1660e01b815260040162000458919062001076565b600060405180830381600087803b1580156200047357600080fd5b505af115801562000488573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620004bf9062000cdc565b620004cb919062001076565b604051809103906000f080158015620004e8573d6000803e3d6000fd5b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5120b39826040518263ffffffff1660e01b815260040162000548919062001076565b600060405180830381600087803b1580156200056357600080fd5b505af115801562000578573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620005ad9062000cea565b620005b9919062001076565b604051809103906000f080158015620005d6573d6000803e3d6000fd5b50600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663530e784f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040162000696919062001076565b600060405180830381600087803b158015620006b157600080fd5b505af1158015620006c6573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006fd9062000cf8565b62000709919062001076565b604051809103906000f08015801562000726573d6000803e3d6000fd5b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663addc1a76826040518263ffffffff1660e01b815260040162000786919062001076565b600060405180830381600087803b158015620007a157600080fd5b505af1158015620007b6573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16633b9c486785604001516040518263ffffffff1660e01b8152600401620007f99190620010dd565b600060405180830381600087803b1580156200081457600080fd5b505af115801562000829573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620008609062000d06565b6200086c919062001076565b604051809103906000f08015801562000889573d6000803e3d6000fd5b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321da5837826040518263ffffffff1660e01b8152600401620008e9919062001093565b600060405180830381600087803b1580156200090457600080fd5b505af115801562000919573d6000803e3d6000fd5b505050506000306040516200092e9062000d14565b6200093a919062001076565b604051809103906000f08015801562000957573d6000803e3d6000fd5b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bcaead98826040518263ffffffff1660e01b8152600401620009b7919062001076565b600060405180830381600087803b158015620009d257600080fd5b505af1158015620009e7573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040162000a43919062001076565b60206040518083038186803b15801562000a5c57600080fd5b505afa15801562000a71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a97919062000f4f565b6040518363ffffffff1660e01b815260040162000ab6929190620010b0565b602060405180830381600087803b15801562000ad157600080fd5b505af115801562000ae6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b0c919062000ede565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040162000b48919062001093565b600060405180830381600087803b15801562000b6357600080fd5b505af115801562000b78573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040162000bd9919062001093565b600060405180830381600087803b15801562000bf457600080fd5b505af115801562000c09573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040162000c6a919062001093565b600060405180830381600087803b15801562000c8557600080fd5b505af115801562000c9a573d6000803e3d6000fd5b5050505050505050505062001273565b600033905090565b611be98062003c1a83390190565b610f32806200580383390190565b611756806200673583390190565b6163708062007e8b83390190565b611957806200e1fb83390190565b6152d6806200fb5283390190565b6129a28062014e2883390190565b613e2a80620177ca83390190565b600062000d3962000d338462001135565b62001101565b9050808382526020820190508285604086028201111562000d5957600080fd5b60005b8581101562000d8d578162000d72888262000e74565b84526020840193506040830192505060018101905062000d5c565b5050509392505050565b60008151905062000da88162001225565b92915050565b600082601f83011262000dc057600080fd5b815162000dd284826020860162000d22565b91505092915050565b60008151905062000dec816200123f565b92915050565b60006060828403121562000e0557600080fd5b62000e11606062001101565b9050600062000e238482850162000d97565b600083015250602062000e398482850162000d97565b602083015250604082015167ffffffffffffffff81111562000e5a57600080fd5b62000e688482850162000dae565b60408301525092915050565b60006040828403121562000e8757600080fd5b62000e93604062001101565b9050600062000ea58482850162000d97565b600083015250602062000ebb8482850162000d97565b60208301525092915050565b60008151905062000ed88162001259565b92915050565b60006020828403121562000ef157600080fd5b600062000f018482850162000ddb565b91505092915050565b60006020828403121562000f1d57600080fd5b600082015167ffffffffffffffff81111562000f3857600080fd5b62000f468482850162000df2565b91505092915050565b60006020828403121562000f6257600080fd5b600062000f728482850162000ec7565b91505092915050565b600062000f89838362001032565b60408301905092915050565b62000fa081620011e7565b82525050565b62000fb1816200119d565b82525050565b62000fc2816200119d565b82525050565b600062000fd58262001174565b62000fe181856200118c565b935062000fee8362001164565b8060005b838110156200102557815162001009888262000f7b565b975062001016836200117f565b92505060018101905062000ff2565b5085935050505092915050565b6040820160008201516200104a600085018262000fa6565b5060208201516200105f602085018262000fa6565b50505050565b6200107081620011dd565b82525050565b60006020820190506200108d600083018462000fb7565b92915050565b6000602082019050620010aa600083018462000f95565b92915050565b6000604082019050620010c7600083018562000f95565b620010d6602083018462001065565b9392505050565b60006020820190508181036000830152620010f9818462000fc8565b905092915050565b6000604051905081810181811067ffffffffffffffff821117156200112b576200112a62001223565b5b8060405250919050565b600067ffffffffffffffff82111562001153576200115262001223565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b6000620011aa82620011bd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620011f482620011fb565b9050919050565b600062001208826200120f565b9050919050565b60006200121c82620011bd565b9050919050565bfe5b62001230816200119d565b81146200123c57600080fd5b50565b6200124a81620011b1565b81146200125657600080fd5b50565b6200126481620011dd565b81146200127057600080fd5b50565b61299780620012836000396000f3fe60806040523480156200001157600080fd5b5060043610620000885760003560e01c8063715018a61162000063578063715018a614620000f15780638da5cb5b14620000fd578063de287359146200011f578063f2fde38b14620001415762000088565b80632630c12f146200008d5780632954018c14620000af5780635544dd2614620000d1575b600080fd5b6200009762000161565b604051620000a6919062000dc0565b60405180910390f35b620000b962000187565b604051620000c8919062000da3565b60405180910390f35b620000ef6004803603810190620000e9919062000be0565b620001ad565b005b620000fb620006f0565b005b6200010762000862565b60405162000116919062000cc2565b60405180910390f35b620001296200088b565b60405162000138919062000d86565b60405180910390f35b6200015f600480360381019062000159919062000b88565b620008b1565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620001b762000aaa565b73ffffffffffffffffffffffffffffffffffffffff16620001d762000862565b73ffffffffffffffffffffffffffffffffffffffff161462000261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b848490508110156200035d57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8a97a3e868684818110620002bb57fe5b9050604002016000016020810190620002d5919062000b88565b878785818110620002e257fe5b9050604002016020016020810190620002fc919062000b88565b6040518363ffffffff1660e01b81526004016200031b92919062000cfc565b600060405180830381600087803b1580156200033657600080fd5b505af11580156200034b573d6000803e3d6000fd5b50505050808060010191505062000264565b5060005b8282905081101562000645576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484848181106200039f57fe5b9050606002016000016020810190620003b9919062000b88565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dcb511a8787878181106200040457fe5b90506060020160000160208101906200041e919062000b88565b73ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046457600080fd5b505afa15801562000479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049f919062000bb4565b6040518263ffffffff1660e01b8152600401620004bd919062000cc2565b60206040518083038186803b158015620004d657600080fd5b505afa158015620004eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000511919062000bb4565b8686868181106200051e57fe5b905060600201602001358787878181106200053557fe5b905060600201604001356040516200054d9062000ab2565b6200055d95949392919062000d29565b604051809103906000f0801580156200057a573d6000803e3d6000fd5b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8a97a3e858585818110620005c857fe5b9050606002016000016020810190620005e2919062000b88565b836040518363ffffffff1660e01b81526004016200060292919062000cfc565b600060405180830381600087803b1580156200061d57600080fd5b505af115801562000632573d6000803e3d6000fd5b5050505050808060010191505062000361565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401620006a3919062000cdf565b600060405180830381600087803b158015620006be57600080fd5b505af1158015620006d3573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff16ff5b620006fa62000aaa565b73ffffffffffffffffffffffffffffffffffffffff166200071a62000862565b73ffffffffffffffffffffffffffffffffffffffff1614620007a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620008bb62000aaa565b73ffffffffffffffffffffffffffffffffffffffff16620008db62000862565b73ffffffffffffffffffffffffffffffffffffffff161462000965576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620009ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806200293c6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b611a528062000eea83390190565b60008135905062000ad18162000ecf565b92915050565b60008151905062000ae88162000ecf565b92915050565b60008083601f84011262000b0157600080fd5b8235905067ffffffffffffffff81111562000b1b57600080fd5b60208301915083604082028301111562000b3457600080fd5b9250929050565b60008083601f84011262000b4e57600080fd5b8235905067ffffffffffffffff81111562000b6857600080fd5b60208301915083606082028301111562000b8157600080fd5b9250929050565b60006020828403121562000b9b57600080fd5b600062000bab8482850162000ac0565b91505092915050565b60006020828403121562000bc757600080fd5b600062000bd78482850162000ad7565b91505092915050565b6000806000806040858703121562000bf757600080fd5b600085013567ffffffffffffffff81111562000c1257600080fd5b62000c208782880162000aee565b9450945050602085013567ffffffffffffffff81111562000c4057600080fd5b62000c4e8782880162000b3b565b925092505092959194509250565b62000c678162000e1b565b82525050565b62000c788162000ddd565b82525050565b62000c898162000e2f565b82525050565b62000c9a8162000e57565b82525050565b62000cab8162000e7f565b82525050565b62000cbc8162000e11565b82525050565b600060208201905062000cd9600083018462000c6d565b92915050565b600060208201905062000cf6600083018462000c5c565b92915050565b600060408201905062000d13600083018562000c6d565b62000d22602083018462000c6d565b9392505050565b600060a08201905062000d40600083018862000c6d565b62000d4f602083018762000c6d565b62000d5e604083018662000c6d565b62000d6d606083018562000cb1565b62000d7c608083018462000cb1565b9695505050505050565b600060208201905062000d9d600083018462000c7e565b92915050565b600060208201905062000dba600083018462000c8f565b92915050565b600060208201905062000dd7600083018462000ca0565b92915050565b600062000dea8262000df1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000e288262000ea7565b9050919050565b600062000e3c8262000e43565b9050919050565b600062000e508262000df1565b9050919050565b600062000e648262000e6b565b9050919050565b600062000e788262000df1565b9050919050565b600062000e8c8262000e93565b9050919050565b600062000ea08262000df1565b9050919050565b600062000eb48262000ebb565b9050919050565b600062000ec88262000df1565b9050919050565b62000eda8162000ddd565b811462000ee657600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001a5238038062001a52833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508460008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906200019c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200016057808201518184015260208101905062000143565b50505050905090810190601f1680156200018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d60208110156200021057600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015620002cd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620003ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200037157808201518184015260208101905062000354565b50505050905090810190601f1680156200039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049957600080fd5b505afa158015620004ae573d6000803e3d6000fd5b505050506040513d6020811015620004c557600080fd5b810190808051906020019092919050505060ff16600a0a600381905550620004f48282620004ff60201b60201c565b50505050506200064d565b600082118015620005105750600081115b6040518060400160405280600381526020017f595032000000000000000000000000000000000000000000000000000000000081525090620005f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005b457808201518184015260208101905062000597565b50505050905090810190601f168015620005e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508160048190555080600581905550426006819055507f82e7ee47180a631312683eeb2a85ad264c9af490d54de5a75bbdb95b968c6de2600454600554604051808381526020018281526020019250505060405180910390a15050565b6113f5806200065d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80635c975abb116100975780639a6fc8f5116100665780639a6fc8f5146102cc578063a384d6ff1461034e578063a834559e1461036c578063feaf968c1461038a576100f5565b80635c975abb146101eb5780637284e4161461020b578063741bef1a1461028e5780638456cb59146102c2576100f5565b806333303f8e116100d357806333303f8e146101715780633f4ba83a146101a557806349cc4675146101af57806354fd4d50146101cd576100f5565b80630bdea781146100fa5780632c51298c14610132578063313ce56714610150575b600080fd5b6101306004803603604081101561011057600080fd5b8101908080359060200190929190803590602001909291905050506103dc565b005b61013a61058b565b6040518082815260200191505060405180910390f35b610158610591565b604051808260ff16815260200191505060405180910390f35b61017961063b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ad610661565b005b6101b761080c565b6040518082815260200191505060405180910390f35b6101d5610812565b6040518082815260200191505060405180910390f35b6101f36108bc565b60405180821515815260200191505060405180910390f35b6102136108d2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610296610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ca610a60565b005b610304600480360360208110156102e257600080fd5b81019080803569ffffffffffffffffffff169060200190929190505050610c0b565b604051808669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1681526020019550505050505060405180910390f35b610356610c81565b6040518082815260200191505060405180910390f35b610374610c87565b6040518082815260200191505060405180910390f35b610392610c8d565b604051808669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1681526020019550505050505060405180910390f35b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d602081101561048f57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061057c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610541578082015181840152602081019050610526565b50505050905090810190601f16801561056e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506105878282610f69565b5050565b60065481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d602081101561062557600080fd5b8101908080519060200190929190505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107c65780820151818401526020810190506107ab565b50505050905090810190601f1680156107f35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061080a6110b2565b565b60055481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b15801561087c57600080fd5b505afa158015610890573d6000803e3d6000fd5b505050506040513d60208110156108a657600080fd5b8101908080519060200190929190505050905090565b60008060009054906101000a900460ff16905090565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561097a57600080fd5b810190808051604051939291908464010000000082111561099a57600080fd5b838201915060208201858111156109b057600080fd5b82518660018202830111640100000000821117156109cd57600080fd5b8083526020830192505050908051906020019080838360005b83811015610a015780820151818401526020810190506109e6565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b50604052505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d6020811015610b1357600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bc5578082015181840152602081019050610baa565b50505050905090810190601f168015610bf25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610c0961119c565b565b60008060008060006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f46756e6374696f6e206973206e6f7420737570706f727465640000000000000081525060200191505060405180910390fd5b60045481565b60035481565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610cfd57600080fd5b505afa158015610d11573d6000803e3d6000fd5b505050506040513d60a0811015610d2757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505080955081965082975083985084995050505050506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399530b066040518163ffffffff1660e01b815260040160206040518083038186803b158015610dde57600080fd5b505afa158015610df2573d6000803e3d6000fd5b505050506040513d6020811015610e0857600080fd5b8101908080519060200190929190505050905060006127106301e1338060065442036005540281610e3557fe5b04612710016004540281610e4557fe5b0490506004548210158015610e5a5750808211155b6040518060400160405280600381526020017f595031000000000000000000000000000000000000000000000000000000000081525090610f36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610efb578082015181840152602081019050610ee0565b50505050905090810190601f168015610f285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610f5e600354610f50888561128790919063ffffffff16565b61130d90919063ffffffff16565b955050509091929394565b600082118015610f795750600081115b6040518060400160405280600381526020017f595032000000000000000000000000000000000000000000000000000000000081525090611055576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561101a578082015181840152602081019050610fff565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508160048190555080600581905550426006819055507f82e7ee47180a631312683eeb2a85ad264c9af490d54de5a75bbdb95b968c6de2600454600554604051808381526020018281526020019250505060405180910390a15050565b6110ba6108bc565b61112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61116f611396565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6111a46108bc565b15611217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861125a611396565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008083141561129a5760009050611307565b60008284029050828482816112ab57fe5b0414611302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061139f6021913960400191505060405180910390fd5b809150505b92915050565b6000808211611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161138d57fe5b04905092915050565b60003390509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d401a69f556c52dd258d6c540e8b64ad42dec9f8843cbe1dca78fbf7799c856364736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212209ed399dc87f0d2bbff8475e3497ebe5a1c3961cf4e4bdd15d8d3729d08cb820564736f6c63430007060033608060405234801561001057600080fd5b50600061002161012860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503073ffffffffffffffffffffffffffffffffffffffff167f414444524553535f50524f5649444552000000000000000000000000000000007fb37614c7d254ea8d16eb81fa11dddaeb266aa8ba4917980859c7740aff30c69160405160405180910390a3610130565b600033905090565b611aaa8061013f6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806377532ed91161011a578063ae5a98ba116100ad578063c513c9bb1161007c578063c513c9bb146107b3578063ce3c4ae4146107e7578063f2fde38b1461082b578063f9366f471461086f578063fca513a81461088d57610206565b8063ae5a98ba146106d9578063affd9243146106f7578063bcaead981461072b578063c5120b391461076f57610206565b80638da5cb5b116100e95780638da5cb5b1461060f5780639068a868146106435780639e9df2b914610677578063addc1a761461069557610206565b806377532ed9146105355780637af53532146105695780637b6757ff1461058757806386e09c08146105cb57610206565b806326c74fc31161019d578063530e784f1161016c578063530e784f1461042d578063699f200f14610471578063715018a6146104c957806372788be7146104d357806376aad605146104f157610206565b806326c74fc31461037357806337d277d4146103a757806344b88563146103c55780634c252f91146103f957610206565b80630e3b95dc116101d95780630e3b95dc146102af578063124a6462146102cd5780631ed65110146102eb57806321da58371461032f57610206565b806305197d101461020b578063060678c214610229578063087376951461025d5780630a19399a14610291575b600080fd5b6102136108c1565b6040518082815260200191505060405180910390f35b6102316108e5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610265610915565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610299610945565b6040518082815260200191505060405180910390f35b6102b7610969565b6040518082815260200191505060405180910390f35b6102d561098d565b6040518082815260200191505060405180910390f35b61032d6004803603602081101561030157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b1565b005b6103716004803603602081101561034557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a8d565b005b61037b610b69565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103af610b99565b6040518082815260200191505060405180910390f35b6103cd610bbd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610401610bed565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61046f6004803603602081101561044357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c1d565b005b61049d6004803603602081101561048757600080fd5b8101908080359060200190929190505050610cf9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104d1610d2c565b005b6104db610e99565b6040518082815260200191505060405180910390f35b6105336004803603602081101561050757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ebd565b005b61053d610f99565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610571610fc9565b6040518082815260200191505060405180910390f35b6105c96004803603602081101561059d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fed565b005b61060d600480360360208110156105e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c9565b005b6106176111a5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61064b6111ce565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61067f6111fe565b6040518082815260200191505060405180910390f35b6106d7600480360360208110156106ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611222565b005b6106e16112fe565b6040518082815260200191505060405180910390f35b6106ff611322565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61076d6004803603602081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611352565b005b6107b16004803603602081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061142e565b005b6107bb61150a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610829600480360360208110156107fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061153a565b005b61086d6004803603602081101561084157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611616565b005b610877611808565b6040518082815260200191505060405180910390f35b61089561182c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b7f4143434f554e545f464143544f5259000000000000000000000000000000000081565b60006109107f444154415f434f4d50524553534f52000000000000000000000000000000000061185c565b905090565b60006109407f41434c000000000000000000000000000000000000000000000000000000000061185c565b905090565b7f50524943455f4f5241434c45000000000000000000000000000000000000000081565b7f4c45564552414745445f414354494f4e5300000000000000000000000000000081565b7f474541525f544f4b454e0000000000000000000000000000000000000000000081565b6109b96119ac565b73ffffffffffffffffffffffffffffffffffffffff166109d76111a5565b73ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610a8a7f54524541535552595f434f4e5452414354000000000000000000000000000000826119b4565b50565b610a956119ac565b73ffffffffffffffffffffffffffffffffffffffff16610ab36111a5565b73ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610b667f574554485f474154455741590000000000000000000000000000000000000000826119b4565b50565b6000610b947f54524541535552595f434f4e545241435400000000000000000000000000000061185c565b905090565b7f574554485f544f4b454e0000000000000000000000000000000000000000000081565b6000610be87f4c45564552414745445f414354494f4e5300000000000000000000000000000061185c565b905090565b6000610c187f574554485f544f4b454e0000000000000000000000000000000000000000000061185c565b905090565b610c256119ac565b73ffffffffffffffffffffffffffffffffffffffff16610c436111a5565b73ffffffffffffffffffffffffffffffffffffffff1614610ccc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610cf67f50524943455f4f5241434c450000000000000000000000000000000000000000826119b4565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d346119ac565b73ffffffffffffffffffffffffffffffffffffffff16610d526111a5565b73ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b7f444154415f434f4d50524553534f52000000000000000000000000000000000081565b610ec56119ac565b73ffffffffffffffffffffffffffffffffffffffff16610ee36111a5565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610f967f41434c0000000000000000000000000000000000000000000000000000000000826119b4565b50565b6000610fc47f574554485f47415445574159000000000000000000000000000000000000000061185c565b905090565b7f41434c000000000000000000000000000000000000000000000000000000000081565b610ff56119ac565b73ffffffffffffffffffffffffffffffffffffffff166110136111a5565b73ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6110c67f4c45564552414745445f414354494f4e53000000000000000000000000000000826119b4565b50565b6110d16119ac565b73ffffffffffffffffffffffffffffffffffffffff166110ef6111a5565b73ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6111a27f574554485f544f4b454e00000000000000000000000000000000000000000000826119b4565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006111f97f4143434f554e545f464143544f5259000000000000000000000000000000000061185c565b905090565b7f54524541535552595f434f4e545241435400000000000000000000000000000081565b61122a6119ac565b73ffffffffffffffffffffffffffffffffffffffff166112486111a5565b73ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6112fb7f4143434f554e545f464143544f52590000000000000000000000000000000000826119b4565b50565b7f574554485f47415445574159000000000000000000000000000000000000000081565b600061134d7f474541525f544f4b454e0000000000000000000000000000000000000000000061185c565b905090565b61135a6119ac565b73ffffffffffffffffffffffffffffffffffffffff166113786111a5565b73ffffffffffffffffffffffffffffffffffffffff1614611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61142b7f474541525f544f4b454e00000000000000000000000000000000000000000000826119b4565b50565b6114366119ac565b73ffffffffffffffffffffffffffffffffffffffff166114546111a5565b73ffffffffffffffffffffffffffffffffffffffff16146114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6115077f444154415f434f4d50524553534f520000000000000000000000000000000000826119b4565b50565b60006115357f434f4e5452414354535f5245474953544552000000000000000000000000000061185c565b905090565b6115426119ac565b73ffffffffffffffffffffffffffffffffffffffff166115606111a5565b73ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6116137f434f4e5452414354535f52454749535445520000000000000000000000000000826119b4565b50565b61161e6119ac565b73ffffffffffffffffffffffffffffffffffffffff1661163c6111a5565b73ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561174b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611a4f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f434f4e5452414354535f5245474953544552000000000000000000000000000081565b60006118577f50524943455f4f5241434c45000000000000000000000000000000000000000061185c565b905090565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600381526020017f4150310000000000000000000000000000000000000000000000000000000000815250906119a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561196757808201518184015260208101905061194c565b50505050905090810190601f1680156119945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080915050919050565b600033905090565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16827fb37614c7d254ea8d16eb81fa11dddaeb266aa8ba4917980859c7740aff30c69160405160405180910390a3505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212206e99f1bbb2b01d58f19cb92a24c5e881661e99489a17b3ebffc54b631209758c64736f6c63430007060033608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b610e57806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063819ad68e11610071578063819ad68e1461026f5780638da5cb5b146102b3578063adce758d146102e7578063ba306df11461032b578063d4eb5db01461036f578063f2fde38b146103c9576100b4565b806335914829146100b95780633a41ec64146101135780634910832f1461016d5780635f259aba146101b1578063715018a61461020b5780637328181914610215575b600080fd5b6100fb600480360360208110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061040d565b60405180821515815260200191505060405180910390f35b6101556004803603602081101561012957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061042d565b60405180821515815260200191505060405180910390f35b6101af6004803603602081101561018357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610483565b005b6101f3600480360360208110156101c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cf565b60405180821515815260200191505060405180910390f35b61021361060e565b005b6102576004803603602081101561022b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077b565b60405180821515815260200191505060405180910390f35b6102b16004803603602081101561028557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079b565b005b6102bb6108e8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610329600480360360208110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610911565b005b61036d6004803603602081101561034157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a5e565b005b6103b16004803603602081101561038557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bab565b60405180821515815260200191505060405180910390f35b61040b600480360360208110156103df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c01565b005b60016020528060005260406000206000915054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61048b610df3565b73ffffffffffffffffffffffffffffffffffffffff166104a96108e8565b73ffffffffffffffffffffffffffffffffffffffff1614610532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fae26b1cfe9454ba87274a4e8330b6654684362d0f3d7bbd17f7449a1d38387c660405160405180910390a250565b60006105d96108e8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b610616610df3565b73ffffffffffffffffffffffffffffffffffffffff166106346108e8565b73ffffffffffffffffffffffffffffffffffffffff16146106bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60026020528060005260406000206000915054906101000a900460ff1681565b6107a3610df3565b73ffffffffffffffffffffffffffffffffffffffff166107c16108e8565b73ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd400da6c0c0a894dacc0981730b88af0545d00272ee8fff1437bf560ff245fc460405160405180910390a250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610919610df3565b73ffffffffffffffffffffffffffffffffffffffff166109376108e8565b73ffffffffffffffffffffffffffffffffffffffff16146109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f1998397e7203f7baca9d6f41b9e4da6e768daac5caad4234fb9bf5869d27154560405160405180910390a250565b610a66610df3565b73ffffffffffffffffffffffffffffffffffffffff16610a846108e8565b73ffffffffffffffffffffffffffffffffffffffff1614610b0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f28b01395b7e25d20552a0c8dc8ecd3b1d4abc986f14dad7885fd45b6fd73c8d960405160405180910390a250565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c09610df3565b73ffffffffffffffffffffffffffffffffffffffff16610c276108e8565b73ffffffffffffffffffffffffffffffffffffffff1614610cb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610dfc6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212207534b554d3f38092ec5f707e934a3eab98e6aece307cd87b0550afc9c23b4a3a64736f6c63430007060033608060405234801561001057600080fd5b506040516117563803806117568339818101604052602081101561003357600080fd5b81019080805190602001909291905050508060008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509061016c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610131578082015181840152602081019050610116565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b357600080fd5b505afa1580156101c7573d6000803e3d6000fd5b505050506040513d60208110156101dd57600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506115178061023f6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638456cb591161008c578063b4ac686011610066578063b4ac68601461032a578063c29277cd14610348578063d914cd4b14610366578063e26b2f63146103aa576100cf565b80638456cb59146102695780639414485614610273578063ac4afa38146102d2576100cf565b80631e16e4fc146100d45780633f4ba83a1461012c5780635b16ebb7146101365780635c975abb14610190578063673a2a1f146101b05780636fbc6f6b1461020f575b600080fd5b610100600480360360208110156100ea57600080fd5b81019080803590602001909291905050506103ee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013461042d565b005b6101786004803603602081101561014c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105d8565b60405180821515815260200191505060405180910390f35b6101986105f8565b60405180821515815260200191505060405180910390f35b6101b861060e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101fb5780820151818401526020810190506101e0565b505050509050019250505060405180910390f35b6102516004803603602081101561022557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061069c565b60405180821515815260200191505060405180910390f35b6102716106bc565b005b61027b610867565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102be5780820151818401526020810190506102a3565b505050509050019250505060405180910390f35b6102fe600480360360208110156102e857600080fd5b81019080803590602001909291905050506108f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610332610934565b6040518082815260200191505060405180910390f35b610350610941565b6040518082815260200191505060405180910390f35b6103a86004803603602081101561037c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061094e565b005b6103ec600480360360208110156103c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e29565b005b600381815481106103fe57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104b657600080fd5b505afa1580156104ca573d6000803e3d6000fd5b505050506040513d60208110156104e057600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3100000000000000000000000000000000000000000000000000000000815250906105cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610592578082015181840152602081019050610577565b50505050905090810190601f1680156105bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506105d6611304565b565b60026020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900460ff16905090565b6060600180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561074557600080fd5b505afa158015610759573d6000803e3d6000fd5b505050506040513d602081101561076f57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c31000000000000000000000000000000000000000000000000000000008152509061085c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610821578082015181840152602081019050610806565b50505050905090810190601f16801561084e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506108656113ee565b565b606060038054806020026020016040519081016040528092919081815260200182805480156108eb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116108a1575b5050505050905090565b6001818154811061090557600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600180549050905090565b6000600380549050905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109d757600080fd5b505afa1580156109eb573d6000803e3d6000fd5b505050506040513d6020811015610a0157600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ab3578082015181840152602081019050610a98565b50505050905090810190601f168015610ae05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090610bfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bc1578082015181840152602081019050610ba6565b50505050905090810190601f168015610bee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156040518060400160405280600381526020017f435231000000000000000000000000000000000000000000000000000000000081525090610d27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cec578082015181840152602081019050610cd1565b50505050905090810190601f168015610d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167ff816b5143086c89d103a0683286be86c2b741e83ebfa75135aae606e2f5c6e5360405160405180910390a250565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610eb257600080fd5b505afa158015610ec6573d6000803e3d6000fd5b505050506040513d6020811015610edc57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610fc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f8e578082015181840152602081019050610f73565b50505050905090810190601f168015610fbb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561109c578082015181840152602081019050611081565b50505050905090810190601f1680156110c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156040518060400160405280600381526020017f435232000000000000000000000000000000000000000000000000000000000081525090611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111c75780820151818401526020810190506111ac565b50505050905090810190601f1680156111f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f58ad3cfc4b6552a53c8c4128ae9b080e14b4378a159280643a62c6f709cee24f60405160405180910390a250565b61130c6105f8565b61137e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6113c16114d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6113f66105f8565b15611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114ac6114d9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60003390509056fea2646970667358221220c8bf5ac883f8317607575ad9d8d92810c8a8ad2ddc04dcebf1bc4d345c0e729e64736f6c6343000706003360c06040523480156200001157600080fd5b5060405162006370380380620063708339818101604052810190620000379190620002f1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620000e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000d991906200035e565b60405180910390fd5b50806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c513c9bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018a57600080fd5b505afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c59190620002f1565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d9190620002f1565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505062000433565b600081519050620002eb8162000419565b92915050565b6000602082840312156200030457600080fd5b60006200031484828501620002da565b91505092915050565b60006200032a8262000382565b6200033681856200038d565b935062000348818560208601620003d2565b620003538162000408565b840191505092915050565b600060208201905081810360008301526200037a81846200031d565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000620003ab82620003b2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620003f2578082015181840152602081019050620003d5565b8381111562000402576000848401525b50505050565b6000601f19601f8301169050919050565b62000424816200039e565b81146200043057600080fd5b50565b60805160601c60a05160601c615ec8620004a86000398061127e5280612078528061291a525080610aea52806115915280611c125280611d15528061209f52806122cf52806122fd52806123a4528061255252806125f952806131ad52806132b05280613b225280613cdf5250615ec86000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80634c472fc911610097578063b816903911610066578063b8169039146102c2578063ba3b7345146102f2578063bf2eb19e14610322578063fc9914cb14610352576100f5565b80634c472fc9146102145780637a0c7b2114610244578063a80deda314610262578063b10b074e14610292576100f5565b80631bcd8fc0116100d35780631bcd8fc01461018a5780632954018c146101a857806339595cf8146101c65780634b2f336d146101f6576100f5565b80630dbd616d146100fa57806313d21cdf1461012a578063191482d41461015a575b600080fd5b610114600480360381019061010f9190614801565b610382565b60405161012191906159e2565b60405180910390f35b610144600480360381019061013f91906147af565b610adf565b6040516101519190615a26565b60405180910390f35b610174600480360381019061016f9190614801565b611586565b60405161018191906159c0565b60405180910390f35b610192611c0c565b60405161019f91906158e9565b60405180910390f35b6101b0611df5565b6040516101bd9190615948565b60405180910390f35b6101e060048036038101906101db91906148a4565b611e19565b6040516101ed9190615a42565b60405180910390f35b6101fe612076565b60405161020b9190615801565b60405180910390f35b61022e60048036038101906102299190614801565b61209a565b60405161023b9190615801565b60405180910390f35b61024c6122cd565b6040516102599190615963565b60405180910390f35b61027c600480360381019061027791906147af565b6122f1565b60405161028991906158a5565b60405180910390f35b6102ac60048036038101906102a79190614801565b612773565b6040516102b99190615a04565b60405180910390f35b6102dc60048036038101906102d791906147af565b6131a7565b6040516102e991906158c7565b60405180910390f35b61030c6004803603810190610307919061483d565b613393565b6040516103199190615a42565b60405180910390f35b61033c6004803603810190610337919061496a565b61391e565b604051610349919061590b565b60405180910390f35b61036c60048036038101906103679190614801565b613b1d565b604051610379919061592d565b60405180910390f35b61038a6141fc565b60008061039685613cd9565b9150915060008273ffffffffffffffffffffffffffffffffffffffff1663e958b704866040518263ffffffff1660e01b81526004016103d59190615801565b60206040518083038186803b1580156103ed57600080fd5b505afa158015610401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042591906147d8565b905061042f6141fc565b85816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055591906147d8565b816080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1663c7de38a6836040518263ffffffff1660e01b81526004016105c59190615801565b60206040518083038186803b1580156105dd57600080fd5b505afa1580156105f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106159190614a3e565b8160c00181815250508273ffffffffffffffffffffffffffffffffffffffff1663dfd59465836040518263ffffffff1660e01b81526004016106579190615801565b60206040518083038186803b15801561066f57600080fd5b505afa158015610683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a79190614a3e565b8160e001818152505060008473ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073091906147d8565b90508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b09190614a3e565b8261010001818152505060008473ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b815260040160206040518083038186803b15801561080257600080fd5b505afa158015610816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083a9190614a3e565b90508067ffffffffffffffff8111801561085357600080fd5b5060405190808252806020026020018201604052801561088d57816020015b61087a6142a9565b8152602001906001900390816108725790505b5083610120018190525060005b81811015610a3d576108aa6142a9565b8673ffffffffffffffffffffffffffffffffffffffff1663af0a650287846040518363ffffffff1660e01b81526004016108e5929190615845565b60806040518083038186803b1580156108fd57600080fd5b505afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190614907565b9050508260000183602001828152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050508673ffffffffffffffffffffffffffffffffffffffff1663f9eaee0d82600001516040518263ffffffff1660e01b81526004016109b39190615801565b60206040518083038186803b1580156109cb57600080fd5b505afa1580156109df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0391906149ab565b816040019015159081151581525050808561012001518381518110610a2457fe5b602002602001018190525050808060010191505061089a565b508473ffffffffffffffffffffffffffffffffffffffff16633192195c856040518263ffffffff1660e01b8152600401610a779190615801565b60206040518083038186803b158015610a8f57600080fd5b505afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190614a3e565b8360a001818152505082965050505050505092915050565b610ae76142e2565b817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635b16ebb7826040518263ffffffff1660e01b8152600401610b419190615801565b60206040518083038186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9191906149ab565b6040518060400160405280600281526020017f525000000000000000000000000000000000000000000000000000000000000081525090610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff919061597e565b60405180910390fd5b50610c116142e2565b600084905084826000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663fe14112d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9457600080fd5b505afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc9190614a3e565b8260c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663ef8d96036040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1b57600080fd5b505afa158015610d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d539190614a3e565b8260e00181815250508073ffffffffffffffffffffffffffffffffffffffff1663743753596040518163ffffffff1660e01b815260040160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda9190614a3e565b8260a00181815250508073ffffffffffffffffffffffffffffffffffffffff16634c19386c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2957600080fd5b505afa158015610e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e619190614a3e565b826101000181815250508073ffffffffffffffffffffffffffffffffffffffff1663788c6bfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb157600080fd5b505afa158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190614a3e565b826101600181815250508073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3957600080fd5b505afa158015610f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f719190614a3e565b8260800181815250508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc057600080fd5b505afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190614a3e565b826101400181815250508073ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108091906147d8565b826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff166336dda7d56040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fd57600080fd5b505afa158015611111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113591906147d8565b826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663788c6bfe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190614a3e565b826101600181815250508073ffffffffffffffffffffffffffffffffffffffff1663e941fa786040518163ffffffff1660e01b815260040160206040518083038186803b15801561123a57600080fd5b505afa15801561124e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112729190614a3e565b826101800181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff16148260200190151590811515815250508073ffffffffffffffffffffffffffffffffffffffff1663609ae3176040518163ffffffff1660e01b815260040160206040518083038186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190614a3e565b826101c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663dbcb313b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ac57600080fd5b505afa1580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e49190614a3e565b826101a00181815250506000826060015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190614a3e565b905060008273ffffffffffffffffffffffffffffffffffffffff16635427c938836040518263ffffffff1660e01b81526004016114af9190615a42565b60206040518083038186803b1580156114c757600080fd5b505afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190614a3e565b905060008114611568576115638161155561152a876101800151612710613e8790919063ffffffff16565b611547886101000151896101400151613f0a90919063ffffffff16565b613f9090919063ffffffff16565b6140eb90919063ffffffff16565b61156f565b8361014001515b846101200181815250508395505050505050919050565b61158e61439c565b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b81526004016115e89190615801565b60206040518083038186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163891906149ab565b6040518060400160405280600281526020017f4350000000000000000000000000000000000000000000000000000000000000815250906116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a6919061597e565b60405180910390fd5b506116b861439c565b60006116c48686610382565b90508060000151826000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060200151826020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060600151826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060800151826080019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060a001518260a00181815250508060c001518260c00181815250508060e001518260e00181815250508061010001518261010001818152505080610120015182610120018190525060008673ffffffffffffffffffffffffffffffffffffffff1663e958b704876040518263ffffffff1660e01b815260040161183a9190615801565b60206040518083038186803b15801561185257600080fd5b505afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a91906147d8565b90508073ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d257600080fd5b505afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190614a3e565b836101a00181815250508073ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b815260040160206040518083038186803b15801561195a57600080fd5b505afa15801561196e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119929190614a3e565b836101c00181815250508073ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e257600080fd5b505afa1580156119f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1a9190614a3e565b836101e00181815250508673ffffffffffffffffffffffffffffffffffffffff16633ce073558760006040518363ffffffff1660e01b8152600401611a6092919061581c565b60206040518083038186803b158015611a7857600080fd5b505afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab09190614a3e565b836101400181815250508673ffffffffffffffffffffffffffffffffffffffff16633ce073558760016040518363ffffffff1660e01b8152600401611af692919061581c565b60206040518083038186803b158015611b0e57600080fd5b505afa158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b469190614a3e565b8361016001818152505060008773ffffffffffffffffffffffffffffffffffffffff1663996329f8838560c0015160006040518463ffffffff1660e01b8152600401611b949392919061586e565b60a06040518083038186803b158015611bac57600080fd5b505afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190614a67565b5050925050506000811184610180019015159081151581525050839550505050505092915050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b4ac68606040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7657600080fd5b505afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae9190614a3e565b905060008167ffffffffffffffff81118015611cc957600080fd5b50604051908082528060200260200182016040528015611d0357816020015b611cf06142e2565b815260200190600190039081611ce85790505b50905060005b82811015611dec5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ac4afa38836040518263ffffffff1660e01b8152600401611d6c9190615a42565b60206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbc91906147d8565b9050611dc781610adf565b838381518110611dd357fe5b6020026020010181905250508080600101915050611d09565b50809250505090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000611e2787613cd9565b9150915060008173ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7357600080fd5b505afa158015611e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eab91906147d8565b905060006120538373ffffffffffffffffffffffffffffffffffffffff1663783274388a6040518263ffffffff1660e01b8152600401611eeb9190615801565b60206040518083038186803b158015611f0357600080fd5b505afa158015611f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3b9190614a3e565b8373ffffffffffffffffffffffffffffffffffffffff1663b66102df8a8c8973ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9f57600080fd5b505afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd791906147d8565b6040518463ffffffff1660e01b8152600401611ff593929190615a5d565b60206040518083038186803b15801561200d57600080fd5b505afa158015612021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120459190614a3e565b613f0a90919063ffffffff16565b905061206886826140eb90919063ffffffff16565b945050505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b81526004016120f69190615801565b60206040518083038186803b15801561210e57600080fd5b505afa158015612122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214691906149ab565b6040518060400160405280600281526020017f4350000000000000000000000000000000000000000000000000000000000000815250906121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b4919061597e565b60405180910390fd5b508373ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561220457600080fd5b505afa158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c91906149d4565b73ffffffffffffffffffffffffffffffffffffffff1663fdd57645846040518263ffffffff1660e01b81526004016122749190615801565b60206040518083038186803b15801561228c57600080fd5b505afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c491906147d8565b91505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600080600090505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561236157600080fd5b505afa158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190614a3e565b8110156124f25760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e16e4fc836040518263ffffffff1660e01b81526004016123fb9190615a42565b60206040518083038186803b15801561241357600080fd5b505afa158015612427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244b91906147d8565b90508073ffffffffffffffffffffffffffffffffffffffff1663256ac915866040518263ffffffff1660e01b81526004016124869190615801565b60206040518083038186803b15801561249e57600080fd5b505afa1580156124b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d691906149ab565b156124e45782806001019350505b5080806001019150506122fb565b5060008167ffffffffffffffff8111801561250c57600080fd5b5060405190808252806020026020018201604052801561254657816020015b6125336141fc565b81526020019060019003908161252b5790505b5090506000915060005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b657600080fd5b505afa1580156125ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ee9190614a3e565b8110156127685760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e16e4fc836040518263ffffffff1660e01b81526004016126509190615a42565b60206040518083038186803b15801561266857600080fd5b505afa15801561267c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a091906147d8565b90508073ffffffffffffffffffffffffffffffffffffffff1663256ac915876040518263ffffffff1660e01b81526004016126db9190615801565b60206040518083038186803b1580156126f357600080fd5b505afa158015612707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272b91906149ab565b1561275a5761273a8187610382565b83858151811061274657fe5b602002602001018190525083806001019450505b508080600101915050612550565b508092505050919050565b61277b614475565b60008061278785613cd9565b91509150612793614475565b85816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1663256ac915866040518263ffffffff1660e01b81526004016128049190615801565b60206040518083038186803b15801561281c57600080fd5b505afa158015612830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285491906149ab565b8160200190151590811515815250508173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156128a957600080fd5b505afa1580156128bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e191906147d8565b816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff161481606001901515908115158152505060008373ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b815260040160206040518083038186803b1580156129c257600080fd5b505afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa91906147d8565b90508073ffffffffffffffffffffffffffffffffffffffff16632e97ca21886040518263ffffffff1660e01b8152600401612a359190615801565b60206040518083038186803b158015612a4d57600080fd5b505afa158015612a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8591906149ab565b8260800190151590811515815250508073ffffffffffffffffffffffffffffffffffffffff166345d31f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ada57600080fd5b505afa158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b129190614a3e565b8260a00181815250508073ffffffffffffffffffffffffffffffffffffffff1663743753596040518163ffffffff1660e01b815260040160206040518083038186803b158015612b6157600080fd5b505afa158015612b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b999190614a3e565b826101200181815250508373ffffffffffffffffffffffffffffffffffffffff16639b2cb5d86040518163ffffffff1660e01b815260040160206040518083038186803b158015612be957600080fd5b505afa158015612bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c219190614a3e565b8260c00181815250508373ffffffffffffffffffffffffffffffffffffffff16635f48f3936040518163ffffffff1660e01b815260040160206040518083038186803b158015612c7057600080fd5b505afa158015612c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca89190614a3e565b8260e00181815250508373ffffffffffffffffffffffffffffffffffffffff1663b2c53a6c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cf757600080fd5b505afa158015612d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2f9190614a3e565b8261010001818152505060008373ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b815260040160206040518083038186803b158015612d8157600080fd5b505afa158015612d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db99190614a3e565b90508067ffffffffffffffff81118015612dd257600080fd5b50604051908082528060200260200182016040528015612e015781602001602082028036833780820191505090505b5083610140018190525060005b81811015612ef7578473ffffffffffffffffffffffffffffffffffffffff16635e5f2e26826040518263ffffffff1660e01b8152600401612e4f9190615a42565b60206040518083038186803b158015612e6757600080fd5b505afa158015612e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9f91906147d8565b8461014001518281518110612eb057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050612e0e565b5060008473ffffffffffffffffffffffffffffffffffffffff166350e036ff6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f4057600080fd5b505afa158015612f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f789190614a3e565b90508067ffffffffffffffff81118015612f9157600080fd5b50604051908082528060200260200182016040528015612fcb57816020015b612fb8614508565b815260200190600190039081612fb05790505b5084610160018190525060005b8181101561319757612fe8614508565b8673ffffffffffffffffffffffffffffffffffffffff16635094cb4f836040518263ffffffff1660e01b81526004016130219190615a42565b60206040518083038186803b15801561303957600080fd5b505afa15801561304d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307191906147d8565b816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1663fdd5764582600001516040518263ffffffff1660e01b81526004016130e59190615801565b60206040518083038186803b1580156130fd57600080fd5b505afa158015613111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313591906147d8565b816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080866101600151838151811061317e57fe5b6020026020010181905250508080600101915050612fd8565b5083965050505050505092915050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c29277cd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561321157600080fd5b505afa158015613225573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132499190614a3e565b905060008167ffffffffffffffff8111801561326457600080fd5b5060405190808252806020026020018201604052801561329e57816020015b61328b614475565b8152602001906001900390816132835790505b50905060005b828110156133885760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e16e4fc836040518263ffffffff1660e01b81526004016133079190615a42565b60206040518083038186803b15801561331f57600080fd5b505afa158015613333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335791906147d8565b90506133638187612773565b83838151811061336f57fe5b60200260200101819052505080806001019150506132a4565b508092505050919050565b60008060006133a186613cd9565b9150915060008273ffffffffffffffffffffffffffffffffffffffff1663e958b704876040518263ffffffff1660e01b81526004016133e09190615801565b60206040518083038186803b1580156133f857600080fd5b505afa15801561340c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343091906147d8565b905060008273ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561347a57600080fd5b505afa15801561348e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b291906147d8565b905060008373ffffffffffffffffffffffffffffffffffffffff166320a05ff76040518163ffffffff1660e01b815260040160206040518083038186803b1580156134fc57600080fd5b505afa158015613510573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135349190614a3e565b905080875114613579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613570906159a0565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156135c257600080fd5b505afa1580156135d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135fa91906147d8565b905060005b83811015613872576138636138548873ffffffffffffffffffffffffffffffffffffffff1663783274388a73ffffffffffffffffffffffffffffffffffffffff16635e5f2e26866040518263ffffffff1660e01b81526004016136629190615a42565b60206040518083038186803b15801561367a57600080fd5b505afa15801561368e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b291906147d8565b6040518263ffffffff1660e01b81526004016136ce9190615801565b60206040518083038186803b1580156136e657600080fd5b505afa1580156136fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371e9190614a3e565b8773ffffffffffffffffffffffffffffffffffffffff1663b66102df8e868151811061374657fe5b60200260200101518c73ffffffffffffffffffffffffffffffffffffffff16635e5f2e26886040518263ffffffff1660e01b81526004016137879190615a42565b60206040518083038186803b15801561379f57600080fd5b505afa1580156137b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d791906147d8565b886040518463ffffffff1660e01b81526004016137f693929190615a5d565b60206040518083038186803b15801561380e57600080fd5b505afa158015613822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138469190614a3e565b613f0a90919063ffffffff16565b8461417490919063ffffffff16565b925080806001019150506135ff565b5061390e8673ffffffffffffffffffffffffffffffffffffffff16633192195c876040518263ffffffff1660e01b81526004016138af9190615801565b60206040518083038186803b1580156138c757600080fd5b505afa1580156138db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ff9190614a3e565b836140eb90919063ffffffff16565b9750505050505050509392505050565b60606000825167ffffffffffffffff8111801561393a57600080fd5b5060405190808252806020026020018201604052801561397457816020015b61396161454e565b8152602001906001900390816139595790505b50905060005b8351811015613b1357604051806060016040528085838151811061399a57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018583815181106139c957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015613a1657600080fd5b505afa158015613a2a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a5391906149fd565b8152602001858381518110613a6457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015613ab157600080fd5b505afa158015613ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae99190614ade565b60ff16815250828281518110613afb57fe5b6020026020010181905250808060010191505061397a565b5080915050919050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401613b799190615801565b60206040518083038186803b158015613b9157600080fd5b505afa158015613ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc991906149ab565b6040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090613c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c37919061597e565b60405180910390fd5b5060008490508073ffffffffffffffffffffffffffffffffffffffff1663256ac915856040518263ffffffff1660e01b8152600401613c7f9190615801565b60206040518083038186803b158015613c9757600080fd5b505afa158015613cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccf91906149ab565b9250505092915050565b600080827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401613d369190615801565b60206040518083038186803b158015613d4e57600080fd5b505afa158015613d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8691906149ab565b6040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090613dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613df4919061597e565b60405180910390fd5b508392508273ffffffffffffffffffffffffffffffffffffffff1663f93f515b6040518163ffffffff1660e01b815260040160206040518083038186803b158015613e4757600080fd5b505afa158015613e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7f91906149d4565b915050915091565b600082821115613eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080831415613f1d5760009050613f8a565b6000828402905082848281613f2e57fe5b0414613f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615e726021913960400191505060405180910390fd5b809150505b92915050565b600080831480613fa05750600082145b15613fae57600090506140e5565b81600261271081613fbb57fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0381613fe557fe5b048311156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906140c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561408a57808201518184015260208101905061406f565b50505050905090810190601f1680156140b75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127106002612710816140d557fe5b0483850201816140e157fe5b0490505b92915050565b6000808211614162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161416b57fe5b04905092915050565b6000808284019050838110156141f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001606081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b604051806101e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016060815260200160008152602001600081526020016000151581526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600060ff1681525090565b600061459b61459684615ac5565b615a94565b905080838252602082019050828560208602820111156145ba57600080fd5b60005b858110156145ea57816145d0888261469e565b8452602084019350602083019250506001810190506145bd565b5050509392505050565b600061460761460284615af1565b615a94565b9050808382526020820190508285602086028201111561462657600080fd5b60005b85811015614656578161463c8882614770565b845260208401935060208301925050600181019050614629565b5050509392505050565b600061467361466e84615b1d565b615a94565b90508281526020810184848401111561468b57600080fd5b614696848285615db8565b509392505050565b6000813590506146ad81615dfe565b92915050565b6000815190506146c281615dfe565b92915050565b600082601f8301126146d957600080fd5b81356146e9848260208601614588565b91505092915050565b600082601f83011261470357600080fd5b81356147138482602086016145f4565b91505092915050565b60008151905061472b81615e15565b92915050565b60008151905061474081615e2c565b92915050565b600082601f83011261475757600080fd5b8151614767848260208601614660565b91505092915050565b60008135905061477f81615e43565b92915050565b60008151905061479481615e43565b92915050565b6000815190506147a981615e5a565b92915050565b6000602082840312156147c157600080fd5b60006147cf8482850161469e565b91505092915050565b6000602082840312156147ea57600080fd5b60006147f8848285016146b3565b91505092915050565b6000806040838503121561481457600080fd5b60006148228582860161469e565b92505060206148338582860161469e565b9150509250929050565b60008060006060848603121561485257600080fd5b60006148608682870161469e565b93505060206148718682870161469e565b925050604084013567ffffffffffffffff81111561488e57600080fd5b61489a868287016146f2565b9150509250925092565b600080600080608085870312156148ba57600080fd5b60006148c88782880161469e565b94505060206148d98782880161469e565b93505060406148ea87828801614770565b92505060606148fb87828801614770565b91505092959194509250565b6000806000806080858703121561491d57600080fd5b600061492b878288016146b3565b945050602061493c87828801614785565b935050604061494d87828801614785565b925050606061495e87828801614785565b91505092959194509250565b60006020828403121561497c57600080fd5b600082013567ffffffffffffffff81111561499657600080fd5b6149a2848285016146c8565b91505092915050565b6000602082840312156149bd57600080fd5b60006149cb8482850161471c565b91505092915050565b6000602082840312156149e657600080fd5b60006149f484828501614731565b91505092915050565b600060208284031215614a0f57600080fd5b600082015167ffffffffffffffff811115614a2957600080fd5b614a3584828501614746565b91505092915050565b600060208284031215614a5057600080fd5b6000614a5e84828501614785565b91505092915050565b600080600080600060a08688031215614a7f57600080fd5b6000614a8d88828901614785565b9550506020614a9e88828901614785565b9450506040614aaf88828901614785565b9350506060614ac088828901614785565b9250506080614ad188828901614785565b9150509295509295909350565b600060208284031215614af057600080fd5b6000614afe8482850161479a565b91505092915050565b6000614b138383614ba4565b60208301905092915050565b6000614b2b8383614f87565b60408301905092915050565b6000614b43838361510e565b905092915050565b6000614b5783836152c2565b905092915050565b6000614b6b83836154d8565b6101e08301905092915050565b6000614b848383615742565b60608301905092915050565b6000614b9c8383615784565b905092915050565b614bad81615d09565b82525050565b614bbc81615d09565b82525050565b6000614bcd82615bbd565b614bd78185615c70565b9350614be283615b4d565b8060005b83811015614c13578151614bfa8882614b07565b9750614c0583615c15565b925050600181019050614be6565b5085935050505092915050565b6000614c2b82615bc8565b614c358185615c81565b9350614c4083615b5d565b8060005b83811015614c71578151614c588882614b1f565b9750614c6383615c22565b925050600181019050614c44565b5085935050505092915050565b6000614c8982615bd3565b614c938185615c92565b935083602082028501614ca585615b6d565b8060005b85811015614ce15784840389528151614cc28582614b37565b9450614ccd83615c2f565b925060208a01995050600181019050614ca9565b50829750879550505050505092915050565b6000614cfe82615bde565b614d088185615ca3565b935083602082028501614d1a85615b7d565b8060005b85811015614d565784840389528151614d378582614b4b565b9450614d4283615c3c565b925060208a01995050600181019050614d1e565b50829750879550505050505092915050565b6000614d7382615be9565b614d7d8185615cb4565b9350614d8883615b8d565b8060005b83811015614db9578151614da08882614b5f565b9750614dab83615c49565b925050600181019050614d8c565b5085935050505092915050565b6000614dd182615bf4565b614ddb8185615cc5565b9350614de683615b9d565b8060005b83811015614e17578151614dfe8882614b78565b9750614e0983615c56565b925050600181019050614dea565b5085935050505092915050565b6000614e2f82615bff565b614e398185615cd6565b935083602082028501614e4b85615bad565b8060005b85811015614e875784840389528151614e688582614b90565b9450614e7383615c63565b925060208a01995050600181019050614e4f565b50829750879550505050505092915050565b614ea281615d1b565b82525050565b614eb181615d1b565b82525050565b614ec081615d70565b82525050565b614ecf81615d94565b82525050565b6000614ee082615c0a565b614eea8185615ce7565b9350614efa818560208601615db8565b614f0381615ded565b840191505092915050565b6000614f1982615c0a565b614f238185615cf8565b9350614f33818560208601615db8565b614f3c81615ded565b840191505092915050565b6000614f54601783615cf8565b91507f496e636f72726563742062616c616e6365732073697a650000000000000000006000830152602082019050919050565b604082016000820151614f9d6000850182614ba4565b506020820151614fb06020850182614ba4565b50505050565b600061020083016000830151614fcf6000860182614ba4565b506020830151614fe26020860182614ba4565b506040830151614ff56040860182614e99565b5060608301516150086060860182614ba4565b50608083015161501b6080860182614ba4565b5060a083015161502e60a08601826157d4565b5060c083015161504160c08601826157d4565b5060e083015161505460e08601826157d4565b506101008301516150696101008601826157d4565b506101208301518482036101208601526150838282614dc6565b91505061014083015161509a6101408601826157d4565b506101608301516150af6101608601826157d4565b506101808301516150c4610180860182614e99565b506101a08301516150d96101a08601826157d4565b506101c08301516150ee6101c08601826157d4565b506101e08301516151036101e08601826157d4565b508091505092915050565b6000610140830160008301516151276000860182614ba4565b50602083015161513a6020860182614ba4565b50604083015161514d6040860182614e99565b5060608301516151606060860182614ba4565b5060808301516151736080860182614ba4565b5060a083015161518660a08601826157d4565b5060c083015161519960c08601826157d4565b5060e08301516151ac60e08601826157d4565b506101008301516151c16101008601826157d4565b506101208301518482036101208601526151db8282614dc6565b9150508091505092915050565b6000610140830160008301516152016000860182614ba4565b5060208301516152146020860182614ba4565b5060408301516152276040860182614e99565b50606083015161523a6060860182614ba4565b50608083015161524d6080860182614ba4565b5060a083015161526060a08601826157d4565b5060c083015161527360c08601826157d4565b5060e083015161528660e08601826157d4565b5061010083015161529b6101008601826157d4565b506101208301518482036101208601526152b58282614dc6565b9150508091505092915050565b6000610180830160008301516152db6000860182614ba4565b5060208301516152ee6020860182614e99565b5060408301516153016040860182614ba4565b5060608301516153146060860182614e99565b5060808301516153276080860182614e99565b5060a083015161533a60a08601826157d4565b5060c083015161534d60c08601826157d4565b5060e083015161536060e08601826157d4565b506101008301516153756101008601826157d4565b5061012083015161538a6101208601826157d4565b506101408301518482036101408601526153a48282614bc2565b9150506101608301518482036101608601526153c08282614c20565b9150508091505092915050565b6000610180830160008301516153e66000860182614ba4565b5060208301516153f96020860182614e99565b50604083015161540c6040860182614ba4565b50606083015161541f6060860182614e99565b5060808301516154326080860182614e99565b5060a083015161544560a08601826157d4565b5060c083015161545860c08601826157d4565b5060e083015161546b60e08601826157d4565b506101008301516154806101008601826157d4565b506101208301516154956101208601826157d4565b506101408301518482036101408601526154af8282614bc2565b9150506101608301518482036101608601526154cb8282614c20565b9150508091505092915050565b6101e0820160008201516154ef6000850182614ba4565b5060208201516155026020850182614e99565b5060408201516155156040850182614ba4565b5060608201516155286060850182614ba4565b50608082015161553b60808501826157d4565b5060a082015161554e60a08501826157d4565b5060c082015161556160c08501826157d4565b5060e082015161557460e08501826157d4565b506101008201516155896101008501826157d4565b5061012082015161559e6101208501826157d4565b506101408201516155b36101408501826157d4565b506101608201516155c86101608501826157d4565b506101808201516155dd6101808501826157d4565b506101a08201516155f26101a08501826157d4565b506101c08201516156076101c08501826157d4565b50505050565b6101e0820160008201516156246000850182614ba4565b5060208201516156376020850182614e99565b50604082015161564a6040850182614ba4565b50606082015161565d6060850182614ba4565b50608082015161567060808501826157d4565b5060a082015161568360a08501826157d4565b5060c082015161569660c08501826157d4565b5060e08201516156a960e08501826157d4565b506101008201516156be6101008501826157d4565b506101208201516156d36101208501826157d4565b506101408201516156e86101408501826157d4565b506101608201516156fd6101608501826157d4565b506101808201516157126101808501826157d4565b506101a08201516157276101a08501826157d4565b506101c082015161573c6101c08501826157d4565b50505050565b6060820160008201516157586000850182614ba4565b50602082015161576b60208501826157d4565b50604082015161577e6040850182614e99565b50505050565b600060608301600083015161579c6000860182614ba4565b50602083015184820360208601526157b48282614ed5565b91505060408301516157c960408601826157f2565b508091505092915050565b6157dd81615d59565b82525050565b6157ec81615d59565b82525050565b6157fb81615d63565b82525050565b60006020820190506158166000830184614bb3565b92915050565b60006040820190506158316000830185614bb3565b61583e6020830184614ea8565b9392505050565b600060408201905061585a6000830185614bb3565b61586760208301846157e3565b9392505050565b60006060820190506158836000830186614bb3565b61589060208301856157e3565b61589d6040830184614ea8565b949350505050565b600060208201905081810360008301526158bf8184614c7e565b905092915050565b600060208201905081810360008301526158e18184614cf3565b905092915050565b600060208201905081810360008301526159038184614d68565b905092915050565b600060208201905081810360008301526159258184614e24565b905092915050565b60006020820190506159426000830184614ea8565b92915050565b600060208201905061595d6000830184614eb7565b92915050565b60006020820190506159786000830184614ec6565b92915050565b600060208201905081810360008301526159988184614f0e565b905092915050565b600060208201905081810360008301526159b981614f47565b9050919050565b600060208201905081810360008301526159da8184614fb6565b905092915050565b600060208201905081810360008301526159fc81846151e8565b905092915050565b60006020820190508181036000830152615a1e81846153cd565b905092915050565b60006101e082019050615a3c600083018461560d565b92915050565b6000602082019050615a5760008301846157e3565b92915050565b6000606082019050615a7260008301866157e3565b615a7f6020830185614bb3565b615a8c6040830184614bb3565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715615abb57615aba615deb565b5b8060405250919050565b600067ffffffffffffffff821115615ae057615adf615deb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615b0c57615b0b615deb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615b3857615b37615deb565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615d1482615d39565b9050919050565b60008115159050919050565b6000615d3282615d09565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615d7b82615d82565b9050919050565b6000615d8d82615d39565b9050919050565b6000615d9f82615da6565b9050919050565b6000615db182615d39565b9050919050565b60005b83811015615dd6578082015181840152602081019050615dbb565b83811115615de5576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b615e0781615d09565b8114615e1257600080fd5b50565b615e1e81615d1b565b8114615e2957600080fd5b50565b615e3581615d27565b8114615e4057600080fd5b50565b615e4c81615d59565b8114615e5757600080fd5b50565b615e6381615d63565b8114615e6e57600080fd5b5056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220ff62bd175619353cebf416505d99c9c28414bc417aeed95eb6df78ccd00b18db64736f6c6343000706003360806040523480156200001157600080fd5b506040516200195738038062001957833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001385780820151818401526020810190506200011b565b50505050905090810190601f168015620001665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001bc57600080fd5b505afa158015620001d1573d6000803e3d6000fd5b505050506040513d6020811015620001e857600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508073ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028157600080fd5b505afa15801562000296573d6000803e3d6000fd5b505050506040513d6020811015620002ad57600080fd5b8101908080519060200190929190505050600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000060046000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505061157380620003e46000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638456cb59116100665780638456cb59146101d15780639dcb511a146101db578063b66102df14610249578063d4561137146102cb578063e8a97a3e146103235761009e565b806321c9afa5146100a35780633f4ba83a146100fb5780634f0e0ef3146101055780635c975abb14610139578063743b908614610159575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610387565b6040518082815260200191505060405180910390f35b61010361039f565b005b61010d61054a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610141610570565b60405180821515815260200191505060405180910390f35b6101bb6004803603604081101561016f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610586565b6040518082815260200191505060405180910390f35b6101d961070a565b005b61021d600480360360208110156101f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b56004803603606081101561025f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e8565b6040518082815260200191505060405180910390f35b61030d600480360360208110156102e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b1565b6040518082815260200191505060405180910390f35b6103856004803603604081101561033957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109c9565b005b60046020528060005260406000206000915090505481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561042857600080fd5b505afa15801561043c573d6000803e3d6000fd5b505050506040513d602081101561045257600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c31000000000000000000000000000000000000000000000000000000008152509061053f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105045780820151818401526020810190506104e9565b50505050905090810190601f1680156105315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610548610fa9565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105cc57670de0b6b3a76400009050610704565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561065e5761065761062e83611093565b610649670de0b6b3a76400008061131a90919063ffffffff16565b6113a090919063ffffffff16565b9050610704565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c4576106bd83611093565b9050610704565b6107016106d083611093565b6106f36106dc86611093565b670de0b6b3a764000061131a90919063ffffffff16565b6113a090919063ffffffff16565b90505b92915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561079357600080fd5b505afa1580156107a7573d6000803e3d6000fd5b505050506040513d60208110156107bd57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3100000000000000000000000000000000000000000000000000000000815250906108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086f578082015181840152602081019050610854565b50505050905090810190601f16801561089c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506108b3611429565b565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006109a8600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461099a61093a8686610586565b61098c600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548961131a90919063ffffffff16565b61131a90919063ffffffff16565b6113a090919063ffffffff16565b90509392505050565b60036020528060005260406000206000915090505481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a5257600080fd5b505afa158015610a66573d6000803e3d6000fd5b505050506040513d6020811015610a7c57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b2e578082015181840152602081019050610b13565b50505050905090810190601f168015610b5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3057600080fd5b505afa158015610c44573d6000803e3d6000fd5b505050506040513d6020811015610c5a57600080fd5b810190808051906020019092919050505060ff16905060128111156040518060400160405280600381526020017f504f31000000000000000000000000000000000000000000000000000000000081525090610d51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d16578082015181840152602081019050610cfb565b50505050905090810190601f168015610d435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060128273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9a57600080fd5b505afa158015610dae573d6000803e3d6000fd5b505050506040513d6020811015610dc457600080fd5b810190808051906020019092919050505060ff16146040518060400160405280600381526020017f504f32000000000000000000000000000000000000000000000000000000000081525090610eb5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7a578082015181840152602081019050610e5f565b50505050905090810190601f168015610ea75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080601203600a0a600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080602403600a0a600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fe263805b03657ab13064915d0723c5ce14981547e7cba5283f66b9e5d81f6e6e60405160405180910390a3505050565b610fb1610570565b611023576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611066611514565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600381526020017f504f30000000000000000000000000000000000000000000000000000000000081525090611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111c55780820151818401526020810190506111aa565b50505050905090810190601f1680156111f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156112a857600080fd5b505afa1580156112bc573d6000803e3d6000fd5b505050506040513d60a08110156112d257600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505080915050919050565b60008083141561132d576000905061139a565b600082840290508284828161133e57fe5b0414611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061151d6021913960400191505060405180910390fd5b809150505b92915050565b6000808211611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161142057fe5b04905092915050565b611431610570565b156114a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586114e7611514565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60003390509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122021173a9ed2f5313ae4e54e36d93f8b49e48e61ed05ab0c3be4ca5460d46572c364736f6c6343000706003360806040523480156200001157600080fd5b50604051620052d6380380620052d683398181016040528101906200003791906200096b565b8060008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001275780820151818401526020810190506200010a565b50505050905090810190601f168015620001555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ab57600080fd5b505afa158015620001c0573d6000803e3d6000fd5b505050506040513d6020811015620001d757600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620002db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d29190620009d8565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663c513c9bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032357600080fd5b505afa15801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e91906200096b565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051620003ac9062000946565b604051809103906000f080158015620003c9573d6000803e3d6000fd5b50600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200047557600080fd5b505af11580156200048a573d6000803e3d6000fd5b505050506200049e6200058760201b60201c565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000aad565b6000620005c1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200076860201b620025921760201c565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200060c57600080fd5b505af115801562000621573d6000803e3d6000fd5b505050508060026000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620007218160066200087160201b6200269a1790919060201c565b508073ffffffffffffffffffffffffffffffffffffffff167f9f69b6c10f6810213e055b0ba6bc0a4e2603f73c221aad77ea35da819cda7dc360405160405180910390a250565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200086c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f455243313136373a20637265617465206661696c65640000000000000000000081525060200191505060405180910390fd5b919050565b6000620008a1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620008a960201b60201c565b905092915050565b6000620008bd83836200092360201b60201c565b620009185782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200091d565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6116258062003cb183390190565b600081519050620009658162000a93565b92915050565b6000602082840312156200097e57600080fd5b60006200098e8482850162000954565b91505092915050565b6000620009a482620009fc565b620009b0818562000a07565b9350620009c281856020860162000a4c565b620009cd8162000a82565b840191505092915050565b60006020820190508181036000830152620009f4818462000997565b905092915050565b600081519050919050565b600082825260208201905092915050565b600062000a258262000a2c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b8381101562000a6c57808201518184015260208101905062000a4f565b8381111562000a7c576000848401525b50505050565b6000601f19601f8301169050919050565b62000a9e8162000a18565b811462000aaa57600080fd5b50565b6131f48062000abd6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806388f64c54116100b8578063b014352f1161007c578063b014352f1461031a578063b193976314610324578063b60e851814610342578063d82ecc4814610360578063e3ba9ace14610390578063f23953ab146103c057610142565b806388f64c541461027557806389b77b3e146102935780638f7dcfa3146102af5780639c650789146102cd578063a904aab6146102fe57610142565b80633b9c48671161010a5780633b9c4867146101d95780633f4ba83a146101f55780635c975abb146101ff5780635da33c5b1461021d578063765e01591461023b5780638456cb591461026b57610142565b806313d8c8401461014757806321d184561461016557806323428dbd146101955780632932472f146101b35780633a1ed19a146101cf575b600080fd5b61014f6103ca565b60405161015c9190612eba565b60405180910390f35b61017f600480360381019061017a9190612ddc565b6103f0565b60405161018c9190612eba565b60405180910390f35b61019d610758565b6040516101aa9190612fbe565b60405180910390f35b6101cd60048036038101906101c89190612ccd565b61076b565b005b6101d7610eb7565b005b6101f360048036038101906101ee9190612d1c565b611075565b005b6101fd61152f565b005b6102076116da565b6040516102149190612fbe565b60405180910390f35b6102256116f0565b6040516102329190612eba565b60405180910390f35b61025560048036038101906102509190612ca4565b611716565b6040516102629190612eba565b60405180910390f35b61027361177f565b005b61027d61192a565b60405161028a9190612fd9565b60405180910390f35b6102ad60048036038101906102a89190612ca4565b611950565b005b6102b7611d1f565b6040516102c49190612eba565b60405180910390f35b6102e760048036038101906102e29190612d8a565b611d45565b6040516102f5929190612f27565b60405180910390f35b61031860048036038101906103139190612ccd565b611db9565b005b610322611fcc565b005b61032c6122a2565b6040516103399190613016565b60405180910390f35b61034a61237c565b6040516103579190613016565b60405180910390f35b61037a60048036038101906103759190612ca4565b61238d565b6040516103879190612fbe565b60405180910390f35b6103aa60048036038101906103a59190612d8a565b6123aa565b6040516103b79190612eba565b60405180910390f35b6103c86123c7565b005b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b336040518263ffffffff1660e01b815260040161044d9190612ed5565b60206040518083038186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190612d61565b6040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050b9190612ff4565b60405180910390fd5b5061051d6126ca565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060026000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c75b5a713386866040518463ffffffff1660e01b81526004016106c293929190612ef0565b600060405180830381600087803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff3ede7039176503a8ad1fe7cfaa29475a9dbe0cdcaf04ecf9a5c10570c47b10360405160405180910390a38091505092915050565b600960149054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d602081101561081e57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108d05780820151818401526020810190506108b5565b50505050905090810190601f1680156108fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506109146126ca565b8173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610ad8576000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060026000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610dd3565b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f414633000000000000000000000000000000000000000000000000000000000081525090610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd49190612ff4565b60405180910390fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c765782600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff1663c75b5a71826000806040518463ffffffff1660e01b8152600401610e1193929190612f50565b600060405180830381600087803b158015610e2b57600080fd5b505af1158015610e3f573d6000803e3d6000fd5b50505050610e5782600661278b90919063ffffffff16565b508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f25e267469ba2ae82515be7b3d45df60bf8308343f0809e8cf7319058e2255ce660405160405180910390a3505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d6020811015610f6a57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090611057576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561101c578082015181840152602081019050611001565b50505050905090810190601f1680156110495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600960146101000a81548160ff021916908315150217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110fe57600080fd5b505afa158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090611215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111da5780820151818401526020810190506111bf565b50505050905090810190601f1680156112075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600960149054906101000a900460ff16156040518060400160405280600381526020017f41463200000000000000000000000000000000000000000000000000000000008152509061129e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112959190612ff4565b60405180910390fd5b5060005b8282905081101561152a57600073ffffffffffffffffffffffffffffffffffffffff168383838181106112d157fe5b90506040020160000160208101906112e99190612ca4565b73ffffffffffffffffffffffffffffffffffffffff161415801561135d5750600073ffffffffffffffffffffffffffffffffffffffff1683838381811061132c57fe5b90506040020160200160208101906113449190612ca4565b73ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb9190612ff4565b60405180910390fd5b50600060405180604001604052808585858181106113ee57fe5b90506040020160000160208101906114069190612ca4565b73ffffffffffffffffffffffffffffffffffffffff16815260200185858581811061142d57fe5b90506040020160200160208101906114459190612ca4565b73ffffffffffffffffffffffffffffffffffffffff168152509050600881908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080806001019150506112a2565b505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d60208110156115e257600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3100000000000000000000000000000000000000000000000000000000815250906116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611694578082015181840152602081019050611679565b50505050905090810190601f1680156116c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506116d86127bb565b565b60008060009054906101000a900460ff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561180857600080fd5b505afa15801561181c573d6000803e3d6000fd5b505050506040513d602081101561183257600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c31000000000000000000000000000000000000000000000000000000008152509061191f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118e45780820151818401526020810190506118c9565b50505050905090810190601f1680156119115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506119286128a5565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b336040518263ffffffff1660e01b81526004016119ab9190612ed5565b60206040518083038186803b1580156119c357600080fd5b505afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190612d61565b6040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a699190612ff4565b60405180910390fd5b50611a8781600661299090919063ffffffff16565b6040518060400160405280600381526020017f414634000000000000000000000000000000000000000000000000000000000081525090611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af59190612ff4565b60405180910390fd5b50438173ffffffffffffffffffffffffffffffffffffffff16633dc54b406040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4657600080fd5b505afa158015611b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7e9190612db3565b14156040518060400160405280600381526020017f414631000000000000000000000000000000000000000000000000000000000081525090611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee9190612ff4565b60405180910390fd5b508060026000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fced6ab9afc868b3a088366f6631ae20752993b5cce5d5f0534ea5a59fcc57d5660405160405180910390a250565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088181548110611d5557600080fd5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e4257600080fd5b505afa158015611e56573d6000803e3d6000fd5b505050506040513d6020811015611e6c57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090611f59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f1e578082015181840152602081019050611f03565b50505050905090810190601f168015611f4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508273ffffffffffffffffffffffffffffffffffffffff166319a1603983836040518363ffffffff1660e01b8152600401611f95929190612f27565b600060405180830381600087803b158015611faf57600080fd5b505af1158015611fc3573d6000803e3d6000fd5b50505050505050565b60026001541415612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600960149054906101000a900460ff16156040518060400160405280600381526020017f4146320000000000000000000000000000000000000000000000000000000000815250906120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc9190612ff4565b60405180910390fd5b506120de6123c7565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c75b5a71306001806040518463ffffffff1660e01b815260040161213e93929190612f87565b600060405180830381600087803b15801561215857600080fd5b505af115801561216c573d6000803e3d6000fd5b5050505060005b60088054905081101561229857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303105b04600883815481106121cb57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008848154811061220a57fe5b906000526020600020906002020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612259929190612f27565b600060405180830381600087803b15801561227357600080fd5b505af1158015612287573d6000803e3d6000fd5b505050508080600101915050612173565b5060018081905550565b600080600090506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461237457600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506122d1565b819250505090565b600061238860066129c0565b905090565b60006123a382600661299090919063ffffffff16565b9050919050565b60006123c08260066129d590919063ffffffff16565b9050919050565b60006123f4600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612592565b90508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561243e57600080fd5b505af1158015612452573d6000803e3d6000fd5b505050508060026000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061254b81600661269a90919063ffffffff16565b508073ffffffffffffffffffffffffffffffffffffffff167f9f69b6c10f6810213e055b0ba6bc0a4e2603f73c221aad77ea35da819cda7dc360405160405180910390a250565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f0915050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612695576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f455243313136373a20637265617465206661696c65640000000000000000000081525060200191505060405180910390fd5b919050565b60006126c2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6129ef565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff1660026000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612789576127886123c7565b5b565b60006127b3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612a5f565b905092915050565b6127c36116da565b612835576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612878612b47565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6128ad6116da565b15612920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612963612b47565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006129b8836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612b4f565b905092915050565b60006129ce82600001612b72565b9050919050565b60006129e48360000183612b83565b60001c905092915050565b60006129fb8383612b4f565b612a54578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612a59565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114612b3b5760006001820390506000600186600001805490500390506000866000018281548110612aaa57fe5b9060005260206000200154905080876000018481548110612ac757fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612aff57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612b41565b60009150505b92915050565b600033905090565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b600081836000018054905011612be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061319d6022913960400191505060405180910390fd5b826000018281548110612bf357fe5b9060005260206000200154905092915050565b600081359050612c1581613157565b92915050565b60008083601f840112612c2d57600080fd5b8235905067ffffffffffffffff811115612c4657600080fd5b602083019150836040820283011115612c5e57600080fd5b9250929050565b600081519050612c748161316e565b92915050565b600081359050612c8981613185565b92915050565b600081519050612c9e81613185565b92915050565b600060208284031215612cb657600080fd5b6000612cc484828501612c06565b91505092915050565b600080600060608486031215612ce257600080fd5b6000612cf086828701612c06565b9350506020612d0186828701612c06565b9250506040612d1286828701612c06565b9150509250925092565b60008060208385031215612d2f57600080fd5b600083013567ffffffffffffffff811115612d4957600080fd5b612d5585828601612c1b565b92509250509250929050565b600060208284031215612d7357600080fd5b6000612d8184828501612c65565b91505092915050565b600060208284031215612d9c57600080fd5b6000612daa84828501612c7a565b91505092915050565b600060208284031215612dc557600080fd5b6000612dd384828501612c8f565b91505092915050565b60008060408385031215612def57600080fd5b6000612dfd85828601612c7a565b9250506020612e0e85828601612c7a565b9150509250929050565b612e2181613095565b82525050565b612e308161304d565b82525050565b612e3f8161305f565b82525050565b612e4e816130a7565b82525050565b612e5d816130cb565b82525050565b612e6c816130dd565b82525050565b6000612e7d82613031565b612e87818561303c565b9350612e97818560208601613113565b612ea081613146565b840191505092915050565b612eb48161308b565b82525050565b6000602082019050612ecf6000830184612e27565b92915050565b6000602082019050612eea6000830184612e18565b92915050565b6000606082019050612f056000830186612e18565b612f126020830185612eab565b612f1f6040830184612eab565b949350505050565b6000604082019050612f3c6000830185612e27565b612f496020830184612e27565b9392505050565b6000606082019050612f656000830186612e27565b612f726020830185612e54565b612f7f6040830184612e54565b949350505050565b6000606082019050612f9c6000830186612e27565b612fa96020830185612e63565b612fb66040830184612e63565b949350505050565b6000602082019050612fd36000830184612e36565b92915050565b6000602082019050612fee6000830184612e45565b92915050565b6000602082019050818103600083015261300e8184612e72565b905092915050565b600060208201905061302b6000830184612eab565b92915050565b600081519050919050565b600082825260208201905092915050565b60006130588261306b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006130a0826130ef565b9050919050565b60006130b2826130b9565b9050919050565b60006130c48261306b565b9050919050565b60006130d68261308b565b9050919050565b60006130e88261308b565b9050919050565b60006130fa82613101565b9050919050565b600061310c8261306b565b9050919050565b60005b83811015613131578082015181840152602081019050613116565b83811115613140576000848401525b50505050565b6000601f19601f8301169050919050565b6131608161304d565b811461316b57600080fd5b50565b6131778161305f565b811461318257600080fd5b50565b61318e8161308b565b811461319957600080fd5b5056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473a2646970667358221220f34f5bcb312beb204e9db93aec378dfaf1dafa1ad91c6591e445c14023b83c6464736f6c63430007060033608060405234801561001057600080fd5b50611605806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633dc54b40116100715780633dc54b40146103495780638129fc1c14610367578063c12c21c014610371578063c45a0155146103a5578063c75b5a71146103d9578063d1660f9914610431576100b4565b806303105b04146100b9578063161282111461011d57806317d11a151461015557806319a16039146101735780631afbb7a4146101d75780631cff79cd146101f5575b600080fd5b61011b600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061049f565b005b6101536004803603604081101561013357600080fd5b810190808035906020019092919080359060200190929190505050610648565b005b61015d610788565b6040518082815260200191505060405180910390f35b6101d56004803603604081101561018957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078e565b005b6101df6108ec565b6040518082815260200191505060405180910390f35b6102ce6004803603604081101561020b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561024857600080fd5b82018360208201111561025a57600080fd5b8035906020019184600183028401116401000000008311171561027c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561030e5780820151818401526020810190506102f3565b50505050905090810190601f16801561033b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610351610a53565b6040518082815260200191505060405180910390f35b61036f610a59565b005b610379610b98565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ad610bbe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61042f600480360360608110156103ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610be4565b005b61049d6004803603606081101561044757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d6d565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f4341310000000000000000000000000000000000000000000000000000000000815250906105cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610591578082015181840152602081019050610576565b50505050905090810190601f1680156105be5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506105f98160008473ffffffffffffffffffffffffffffffffffffffff16610ecb9092919063ffffffff16565b610644817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff16610ecb9092919063ffffffff16565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434131000000000000000000000000000000000000000000000000000000000081525090610775576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561073a57808201518184015260208101905061071f565b50505050905090810190601f1680156107675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5081600281905550806003819055505050565b60035481565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f4341320000000000000000000000000000000000000000000000000000000000815250906108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610880578082015181840152602081019050610865565b50505050905090810190601f1680156108ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506108e88160008473ffffffffffffffffffffffffffffffffffffffff16610ecb9092919063ffffffff16565b5050565b60025481565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434131000000000000000000000000000000000000000000000000000000000081525090610a21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109e65780820151818401526020810190506109cb565b50505050905090810190601f168015610a135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610a4b828473ffffffffffffffffffffffffffffffffffffffff1661109090919063ffffffff16565b905092915050565b60045481565b600060019054906101000a900460ff1680610a785750610a776110da565b5b80610a8e575060008054906101000a900460ff16155b610ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611542602e913960400191505060405180910390fd5b60008060019054906101000a900460ff161590508015610b33576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b33600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610b955760008060016101000a81548160ff0219169083151502179055505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434132000000000000000000000000000000000000000000000000000000000081525090610d11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cd6578082015181840152602081019050610cbb565b50505050905090810190601f168015610d035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816002819055508060038190555043600481905550505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434131000000000000000000000000000000000000000000000000000000000081525090610e9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e5f578082015181840152602081019050610e44565b50505050905090810190601f168015610e8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610ec682828573ffffffffffffffffffffffffffffffffffffffff166110eb9092919063ffffffff16565b505050565b6000811480610f99575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f5c57600080fd5b505afa158015610f70573d6000803e3d6000fd5b505050506040513d6020811015610f8657600080fd5b8101908080519060200190929190505050145b610fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061159a6036913960400191505060405180910390fd5b61108b8363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061118d565b505050565b60606110d283836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061127c565b905092915050565b60006110e530611294565b15905090565b6111888363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061118d565b505050565b60006111ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661127c9092919063ffffffff16565b90506000815111156112775780806020019051602081101561121057600080fd5b8101908080519060200190929190505050611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611570602a913960400191505060405180910390fd5b5b505050565b606061128b84846000856112a7565b90509392505050565b600080823b905060008111915050919050565b606082471015611302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061151c6026913960400191505060405180910390fd5b61130b85611294565b61137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106113cc57805182526020820191506020810190506020830392506113a9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461142e576040519150601f19603f3d011682016040523d82523d6000602084013e611433565b606091505b509150915061144382828661144f565b92505050949350505050565b6060831561145f57829050611514565b6000835111156114725782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114d95780820151818401526020810190506114be565b50505050905090810190601f1680156115065780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212201ebfae6bd83bf4604842e5bf578f940f63974a24c6908a90034595c896c9977764736f6c6343000706003360806040523480156200001157600080fd5b50604051620029a2380380620029a2833981810160405260208110156200003757600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200011d57808201518184015260208101905062000100565b50505050905090810190601f1680156200014b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a157600080fd5b505afa158015620001b6573d6000803e3d6000fd5b505050506040513d6020811015620001cd57600080fd5b81019080805190602001909291905050506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c513c9bb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026457600080fd5b505afa15801562000279573d6000803e3d6000fd5b505050506040513d60208110156200029057600080fd5b8101908080519060200190929190505050600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506126b080620002f26000396000f3fe6080604052600436106100745760003560e01c8063a6eab5c21161004e578063a6eab5c2146102ac578063d8c99bc314610310578063deecfbc914610388578063e79a4089146103fa576101a7565b8063420ac3b2146101ac5780634f0e0ef3146102105780635869dba814610251576101a7565b366101a75760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f5747320000000000000000000000000000000000000000000000000000000000815250906101a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561016957808201518184015260208101905061014e565b50505050905090810190601f1680156101965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50005b600080fd5b61020e600480360360408110156101c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610475565b005b34801561021c57600080fd5b50610225610774565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025d57600080fd5b506102aa6004803603604081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610798565b005b61030e600480360360408110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610949565b005b6103866004803603608081101561032657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610faa565b005b6103f86004803603606081101561039e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff169060200190929190505050611423565b005b34801561040657600080fd5b506104736004803603606081101561041d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611897565b005b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104ff57600080fd5b505afa158015610513573d6000803e3d6000fd5b505050506040513d602081101561052957600080fd5b81019080805190602001909291905050506040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090610616576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105db5780820151818401526020810190506105c0565b50505050905090810190601f1680156106085780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600034905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b50505050506106a78482611d53565b8373ffffffffffffffffffffffffffffffffffffffff1663597810348460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561075657600080fd5b505af115801561076a573d6000803e3d6000fd5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082257600080fd5b505afa158015610836573d6000803e3d6000fd5b505050506040513d602081101561084c57600080fd5b81019080805190602001909291905050506040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090610939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fe5780820151818401526020810190506108e3565b50505050905090810190601f16801561092b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506109448383611f2c565b505050565b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109d357600080fd5b505afa1580156109e7573d6000803e3d6000fd5b505050506040513d60208110156109fd57600080fd5b81019080805190602001909291905050506040518060400160405280600281526020017f435000000000000000000000000000000000000000000000000000000000000081525090610aea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610aaf578082015181840152602081019050610a94565b50505050905090810190601f168015610adc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6857600080fd5b505afa158015610b7c573d6000803e3d6000fd5b505050506040513d6020811015610b9257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f574731000000000000000000000000000000000000000000000000000000000081525090610c96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c5b578082015181840152602081019050610c40565b50505050905090810190601f168015610c885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600034905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b5050505050610d278482611d53565b60008473ffffffffffffffffffffffffffffffffffffffff1663a6eab5c233866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015610db057600080fd5b505af1158015610dc4573d6000803e3d6000fd5b505050506040513d6020811015610dda57600080fd5b8101908080519060200190929190505050905080821115610ec25760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8284036040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b50505050610ebd610e988284611fe490919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff1661206790919063ffffffff16565b610fa3565b8082146040518060400160405280600381526020017f574733000000000000000000000000000000000000000000000000000000000081525090610fa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578082015181840152602081019050610f4b565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505b5050505050565b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fbc6f6b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561103457600080fd5b505afa158015611048573d6000803e3d6000fd5b505050506040513d602081101561105e57600080fd5b81019080805190602001909291905050506040518060400160405280600281526020017f43500000000000000000000000000000000000000000000000000000000000008152509061114b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111105780820151818401526020810190506110f5565b50505050905090810190601f16801561113d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f5747310000000000000000000000000000000000000000000000000000000000815250906112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112bc5780820151818401526020810190506112a1565b50505050905090810190601f1680156112e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506113028534611d53565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b50505050508473ffffffffffffffffffffffffffffffffffffffff16635288ba4b348686866040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050600060405180830381600087803b15801561140457600080fd5b505af1158015611418573d6000803e3d6000fd5b505050505050505050565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b16ebb7826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114ad57600080fd5b505afa1580156114c1573d6000803e3d6000fd5b505050506040513d60208110156114d757600080fd5b81019080805190602001909291905050506040518060400160405280600281526020017f5250000000000000000000000000000000000000000000000000000000000000815250906115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561158957808201518184015260208101905061156e565b50505050905090810190601f1680156115b65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b15801561164257600080fd5b505afa158015611656573d6000803e3d6000fd5b505050506040513d602081101561166c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f574731000000000000000000000000000000000000000000000000000000000081525090611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561173557808201518184015260208101905061171a565b50505050905090810190601f1680156117625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117d957600080fd5b505af11580156117ed573d6000803e3d6000fd5b50505050506117fc8434611d53565b8373ffffffffffffffffffffffffffffffffffffffff16639aa5d4623485856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018261ffff1681526020019350505050600060405180830381600087803b15801561187957600080fd5b505af115801561188d573d6000803e3d6000fd5b5050505050505050565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b16ebb7826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d602081101561194b57600080fd5b81019080805190602001909291905050506040518060400160405280600281526020017f525000000000000000000000000000000000000000000000000000000000000081525090611a38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119fd5780820151818401526020810190506119e2565b50505050905090810190601f168015611a2a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab657600080fd5b505afa158015611aca573d6000803e3d6000fd5b505050506040513d6020811015611ae057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f574731000000000000000000000000000000000000000000000000000000000081525090611be4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ba9578082015181840152602081019050611b8e565b50505050905090810190601f168015611bd65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611c923330858773ffffffffffffffffffffffffffffffffffffffff166336dda7d56040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3157600080fd5b505afa158015611c45573d6000803e3d6000fd5b505050506040513d6020811015611c5b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166121a1909392919063ffffffff16565b60008473ffffffffffffffffffffffffffffffffffffffff166305fe138b85306040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611d0557600080fd5b505af1158015611d19573d6000803e3d6000fd5b505050506040513d6020811015611d2f57600080fd5b81019080805190602001909291905050509050611d4c8382611f2c565b5050505050565b8060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611df957600080fd5b505afa158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b81019080805190602001909291905050501015611f285760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611eeb57600080fd5b505af1158015611eff573d6000803e3d6000fd5b505050506040513d6020811015611f1557600080fd5b8101908080519060200190929190505050505b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611f9f57600080fd5b505af1158015611fb3573d6000803e3d6000fd5b50505050611fe0818373ffffffffffffffffffffffffffffffffffffffff1661206790919063ffffffff16565b5050565b60008282111561205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b804710156120dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a20696e73756666696369656e742062616c616e636500000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d806000811461213d576040519150601f19603f3d011682016040523d82523d6000602084013e612142565b606091505b505090508061219c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806125f1603a913960400191505060405180910390fd5b505050565b61225c846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612262565b50505050565b60006122c4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123519092919063ffffffff16565b905060008151111561234c578080602001905160208110156122e557600080fd5b810190808051906020019092919050505061234b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612651602a913960400191505060405180910390fd5b5b505050565b60606123608484600085612369565b90509392505050565b6060824710156123c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061262b6026913960400191505060405180910390fd5b6123cd85612511565b61243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061248e578051825260208201915060208101905060208303925061246b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146124f0576040519150601f19603f3d011682016040523d82523d6000602084013e6124f5565b606091505b5091509150612505828286612524565b92505050949350505050565b600080823b905060008111915050919050565b60608315612534578290506125e9565b6000835111156125475782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ae578082015181840152602081019050612593565b50505050905090810190601f1680156125db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122029cf8ca5b5d8401bd038bd678c1b7333609c2bc1d782f9c82f5461008d7b766364736f6c6343000706003360806040523480156200001157600080fd5b5060405162003e2a38038062003e2a833981810160405281019062000037919062000212565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a19062000291565b60405180910390fd5b6b204fce5e3e25026110000000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b204fce5e3e25026110000000604051620001909190620002b3565b60405180910390a333600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548160ff0219169083151502179055505062000339565b6000815190506200020c816200031f565b92915050565b6000602082840312156200022557600080fd5b60006200023584828501620001fb565b91505092915050565b60006200024d601b83620002d0565b91507f5a65726f2061646472657373206973206e6f7420616c6c6f77656400000000006000830152602082019050919050565b6200028b8162000315565b82525050565b60006020820190508181036000830152620002ac816200023e565b9050919050565b6000602082019050620002ca600083018462000280565b92915050565b600082825260208201905092915050565b6000620002ee82620002f5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6200032a81620002e1565b81146200033657600080fd5b50565b613ae180620003496000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104e6578063e7a324dc14610516578063f1127ed814610534578063f2fde38b14610565576101a9565b8063b4b5ea571461047e578063c3cda520146104ae578063d505accf146104ca576101a9565b806395d89b41116100d357806395d89b41146103f65780639742ca4614610414578063a9059cbb14610430578063b0660c3d14610460576101a9565b806370a0823114610366578063782d6fe1146103965780637ecebe00146103c6576101a9565b806330adf81f11610166578063481c6a7511610140578063481c6a75146102cc578063587cde1e146102ea5780635c19a95c1461031a5780636fcfff4514610336576101a9565b806330adf81f14610272578063313ce56714610290578063349dc329146102ae576101a9565b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101fc57806320606b701461021a5780632185810b1461023857806323b872dd14610242575b600080fd5b6101b6610581565b6040516101c3919061351a565b60405180910390f35b6101e660048036038101906101e19190612d75565b6105ba565b6040516101f391906133b4565b60405180910390f35b61020461074c565b60405161021191906136bc565b60405180910390f35b61022261075c565b60405161022f91906133cf565b60405180910390f35b610240610780565b005b61025c60048036038101906102579190612c88565b610859565b60405161026991906133b4565b60405180910390f35b61027a610aeb565b60405161028791906133cf565b60405180910390f35b610298610b0f565b6040516102a5919061371b565b60405180910390f35b6102b6610b14565b6040516102c39190613399565b60405180910390f35b6102d4610b3a565b6040516102e19190613399565b60405180910390f35b61030460048036038101906102ff9190612c23565b610b60565b6040516103119190613399565b60405180910390f35b610334600480360381019061032f9190612c23565b610b93565b005b610350600480360381019061034b9190612c23565b610ba0565b60405161035d91906136d7565b60405180910390f35b610380600480360381019061037b9190612c23565b610bc3565b60405161038d91906136bc565b60405180910390f35b6103b060048036038101906103ab9190612d75565b610c32565b6040516103bd9190613751565b60405180910390f35b6103e060048036038101906103db9190612c23565b61103b565b6040516103ed91906136bc565b60405180910390f35b6103fe611053565b60405161040b919061351a565b60405180910390f35b61042e60048036038101906104299190612c23565b61108c565b005b61044a60048036038101906104459190612d75565b611235565b60405161045791906133b4565b60405180910390f35b610468611272565b60405161047591906133b4565b60405180910390f35b61049860048036038101906104939190612c23565b611285565b6040516104a59190613751565b60405180910390f35b6104c860048036038101906104c39190612db1565b611373565b005b6104e460048036038101906104df9190612cd7565b611630565b005b61050060048036038101906104fb9190612c4c565b611a9b565b60405161050d91906136bc565b60405180910390f35b61051e611b47565b60405161052b91906133cf565b60405180910390f35b61054e60048036038101906105499190612e3a565b611b6b565b60405161055c9291906136f2565b60405180910390f35b61057f600480360381019061057a9190612c23565b611bc4565b005b6040518060400160405280600781526020017f47656172626f780000000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561060d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610632565b61062f8360405180606001604052806025815260200161391760259139611d84565b90505b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107399190613736565b60405180910390a3600191505092915050565b6b204fce5e3e2502611000000081565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108079061363c565b60405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f795b0e16c8da9807b0a215f3749bd6dbcc49fc0472183f4e446abb7dcbd9d00760405160405180910390a1565b60008033905060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050600061091b8560405180606001604052806025815260200161391760259139611d84565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561099557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610ad25760006109bf83836040518060600160405280603d8152602001613a39603d9139611de2565b9050806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ac89190613736565b60405180910390a3505b610add878783611e53565b600193505050509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9d3382612333565b50565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d9061367c565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610ce3576000915050611035565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610de557600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611035565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610e66576000915050611035565b6000806001830390505b8163ffffffff168163ffffffff161115610fb7576000600283830363ffffffff1681610e9857fe5b04820390506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415610f8f57806020015195505050505050611035565b86816000015163ffffffff161015610fa957819350610fb0565b6001820392505b5050610e70565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60056020528060005260406000206000915090505481565b6040518060400160405280600481526020017f474541520000000000000000000000000000000000000000000000000000000081525081565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111139061363c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061353c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2f834d1c8c4b956018fff5faca4d99868ae635487424d9c265c257ccbc698c6a60405160405180910390a250565b60008061125a8360405180606001604052806026815260200161396c60269139611d84565b9050611267338583611e53565b600191505092915050565b600660009054906101000a900460ff1681565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116112ef57600061136b565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600781526020017f47656172626f7800000000000000000000000000000000000000000000000000815250805190602001206113db6124f3565b306040516020016113ef9493929190613490565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001611440949392919061344b565b6040516020818303038152906040528051906020012090506000828260405160200161146d929190613362565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516114aa94939291906134d5565b6020604051602081039080840390855afa1580156114cc573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f906135dc565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505589146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061361c565b60405180910390fd5b8742111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116119061365c565b60405180910390fd5b611624818b612333565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611682577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506116a7565b6116a4866040518060600160405280602481526020016139e160249139611d84565b90505b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600781526020017f47656172626f78000000000000000000000000000000000000000000000000008152508051906020012061170f6124f3565b306040516020016117239493929190613490565b60405160208183030381529060405280519060200120905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016117c5969594939291906133ea565b604051602081830303815290604052805190602001209050600082826040516020016117f2929190613362565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161182f94939291906134d5565b6020604051602081039080840390855afa158015611851573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c49061369c565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061355c565b60405180910390fd5b8842111561197e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611975906135bc565b60405180910390fd5b846000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611a859190613736565b60405180910390a3505050505050505050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6003602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b9061363c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061353c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c0100000000000000000000000083108290611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf919061351a565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d919061351a565b60405180910390fd5b5082840390509392505050565b600660009054906101000a900460ff1680611ebb5750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611f135750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f49906135fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb99061357c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120299061359c565b60405180910390fd5b6120ac600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060368152602001613a7660369139611de2565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612193600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806030815260200161393c60309139612500565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161225d9190613736565b60405180910390a361232e600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612576565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46124ed828483612576565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061256a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612561919061351a565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125c057506000816bffffffffffffffffffffffff16115b1561286c57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612718576000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126635760006126df565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612706828560405180606001604052806028815260200161399260289139611de2565b905061271486848484612871565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461286b576000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116127b6576000612832565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061285982856040518060600160405280602781526020016139ba60279139612500565b905061286785848484612871565b5050505b5b505050565b600061289543604051806060016040528060348152602001613a0560349139612b64565b905060008463ffffffff1611801561292a57508063ffffffff16600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156129c55781600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612b0d565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612b5592919061376c565b60405180910390a25050505050565b600064010000000083108290612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7919061351a565b60405180910390fd5b5082905092915050565b600081359050612bc9816138a3565b92915050565b600081359050612bde816138ba565b92915050565b600081359050612bf3816138d1565b92915050565b600081359050612c08816138e8565b92915050565b600081359050612c1d816138ff565b92915050565b600060208284031215612c3557600080fd5b6000612c4384828501612bba565b91505092915050565b60008060408385031215612c5f57600080fd5b6000612c6d85828601612bba565b9250506020612c7e85828601612bba565b9150509250929050565b600080600060608486031215612c9d57600080fd5b6000612cab86828701612bba565b9350506020612cbc86828701612bba565b9250506040612ccd86828701612be4565b9150509250925092565b600080600080600080600060e0888a031215612cf257600080fd5b6000612d008a828b01612bba565b9750506020612d118a828b01612bba565b9650506040612d228a828b01612be4565b9550506060612d338a828b01612be4565b9450506080612d448a828b01612c0e565b93505060a0612d558a828b01612bcf565b92505060c0612d668a828b01612bcf565b91505092959891949750929550565b60008060408385031215612d8857600080fd5b6000612d9685828601612bba565b9250506020612da785828601612be4565b9150509250929050565b60008060008060008060c08789031215612dca57600080fd5b6000612dd889828a01612bba565b9650506020612de989828a01612be4565b9550506040612dfa89828a01612be4565b9450506060612e0b89828a01612c0e565b9350506080612e1c89828a01612bcf565b92505060a0612e2d89828a01612bcf565b9150509295509295509295565b60008060408385031215612e4d57600080fd5b6000612e5b85828601612bba565b9250506020612e6c85828601612bf9565b9150509250929050565b612e7f816137bc565b82525050565b612e8e816137ce565b82525050565b612e9d816137da565b82525050565b612eb4612eaf826137da565b613888565b82525050565b6000612ec582613795565b612ecf81856137a0565b9350612edf818560208601613855565b612ee881613892565b840191505092915050565b6000612f00601b836137a0565b91507f5a65726f2061646472657373206973206e6f7420616c6c6f77656400000000006000830152602082019050919050565b6000612f406002836137b1565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000612f80601a836137a0565b91507f476561723a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b6000612fc0603c836137a0565b91507f476561723a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000613026603a836137a0565b91507f476561723a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b600061308c601f836137a0565b91507f476561723a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b60006130cc6026836137a0565b91507f476561723a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613132601d836137a0565b91507f476561723a3a7472616e73666572732061726520666f7262696464656e0000006000830152602082019050919050565b60006131726022836137a0565b91507f476561723a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131d8601f836137a0565b91507f476561723a3a63616c6c6572206973206e6f7420746865206d616e61676572006000830152602082019050919050565b60006132186026836137a0565b91507f476561723a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061327e6027836137a0565b91507f476561723a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132e4601f836137a0565b91507f476561723a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b61332081613804565b82525050565b61332f8161380e565b82525050565b61333e8161381e565b82525050565b61334d81613843565b82525050565b61335c8161382b565b82525050565b600061336d82612f33565b91506133798285612ea3565b6020820191506133898284612ea3565b6020820191508190509392505050565b60006020820190506133ae6000830184612e76565b92915050565b60006020820190506133c96000830184612e85565b92915050565b60006020820190506133e46000830184612e94565b92915050565b600060c0820190506133ff6000830189612e94565b61340c6020830188612e76565b6134196040830187612e76565b6134266060830186613317565b6134336080830185613317565b61344060a0830184613317565b979650505050505050565b60006080820190506134606000830187612e94565b61346d6020830186612e76565b61347a6040830185613317565b6134876060830184613317565b95945050505050565b60006080820190506134a56000830187612e94565b6134b26020830186612e94565b6134bf6040830185613317565b6134cc6060830184612e76565b95945050505050565b60006080820190506134ea6000830187612e94565b6134f76020830186613335565b6135046040830185612e94565b6135116060830184612e94565b95945050505050565b600060208201905081810360008301526135348184612eba565b905092915050565b6000602082019050818103600083015261355581612ef3565b9050919050565b6000602082019050818103600083015261357581612f73565b9050919050565b6000602082019050818103600083015261359581612fb3565b9050919050565b600060208201905081810360008301526135b581613019565b9050919050565b600060208201905081810360008301526135d58161307f565b9050919050565b600060208201905081810360008301526135f5816130bf565b9050919050565b6000602082019050818103600083015261361581613125565b9050919050565b6000602082019050818103600083015261363581613165565b9050919050565b60006020820190508181036000830152613655816131cb565b9050919050565b600060208201905081810360008301526136758161320b565b9050919050565b6000602082019050818103600083015261369581613271565b9050919050565b600060208201905081810360008301526136b5816132d7565b9050919050565b60006020820190506136d16000830184613317565b92915050565b60006020820190506136ec6000830184613326565b92915050565b60006040820190506137076000830185613326565b6137146020830184613353565b9392505050565b60006020820190506137306000830184613335565b92915050565b600060208201905061374b6000830184613344565b92915050565b60006020820190506137666000830184613353565b92915050565b60006040820190506137816000830185613344565b61378e6020830184613344565b9392505050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b60006137c7826137e4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b600061384e8261382b565b9050919050565b60005b83811015613873578082015181840152602081019050613858565b83811115613882576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b6138ac816137bc565b81146138b757600080fd5b50565b6138c3816137da565b81146138ce57600080fd5b50565b6138da81613804565b81146138e557600080fd5b50565b6138f18161380e565b81146138fc57600080fd5b50565b6139088161381e565b811461391357600080fd5b5056fe476561723a3a617070726f76653a20616d6f756e7420657863656564732039362062697473476561723a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773476561723a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473476561723a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773476561723a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773476561723a3a7065726d69743a20616d6f756e7420657863656564732039362062697473476561723a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473476561723a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365476561723a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220cbd2782680438981f58c46652acfafa68eaf155a04487884c6646f6839291ef964736f6c63430007060033",
186
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000885760003560e01c8063715018a61162000063578063715018a614620000f15780638da5cb5b14620000fd578063de287359146200011f578063f2fde38b14620001415762000088565b80632630c12f146200008d5780632954018c14620000af5780635544dd2614620000d1575b600080fd5b6200009762000161565b604051620000a6919062000dc0565b60405180910390f35b620000b962000187565b604051620000c8919062000da3565b60405180910390f35b620000ef6004803603810190620000e9919062000be0565b620001ad565b005b620000fb620006f0565b005b6200010762000862565b60405162000116919062000cc2565b60405180910390f35b620001296200088b565b60405162000138919062000d86565b60405180910390f35b6200015f600480360381019062000159919062000b88565b620008b1565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620001b762000aaa565b73ffffffffffffffffffffffffffffffffffffffff16620001d762000862565b73ffffffffffffffffffffffffffffffffffffffff161462000261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b848490508110156200035d57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8a97a3e868684818110620002bb57fe5b9050604002016000016020810190620002d5919062000b88565b878785818110620002e257fe5b9050604002016020016020810190620002fc919062000b88565b6040518363ffffffff1660e01b81526004016200031b92919062000cfc565b600060405180830381600087803b1580156200033657600080fd5b505af11580156200034b573d6000803e3d6000fd5b50505050808060010191505062000264565b5060005b8282905081101562000645576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484848181106200039f57fe5b9050606002016000016020810190620003b9919062000b88565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dcb511a8787878181106200040457fe5b90506060020160000160208101906200041e919062000b88565b73ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046457600080fd5b505afa15801562000479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049f919062000bb4565b6040518263ffffffff1660e01b8152600401620004bd919062000cc2565b60206040518083038186803b158015620004d657600080fd5b505afa158015620004eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000511919062000bb4565b8686868181106200051e57fe5b905060600201602001358787878181106200053557fe5b905060600201604001356040516200054d9062000ab2565b6200055d95949392919062000d29565b604051809103906000f0801580156200057a573d6000803e3d6000fd5b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8a97a3e858585818110620005c857fe5b9050606002016000016020810190620005e2919062000b88565b836040518363ffffffff1660e01b81526004016200060292919062000cfc565b600060405180830381600087803b1580156200061d57600080fd5b505af115801562000632573d6000803e3d6000fd5b5050505050808060010191505062000361565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b8152600401620006a3919062000cdf565b600060405180830381600087803b158015620006be57600080fd5b505af1158015620006d3573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff16ff5b620006fa62000aaa565b73ffffffffffffffffffffffffffffffffffffffff166200071a62000862565b73ffffffffffffffffffffffffffffffffffffffff1614620007a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b620008bb62000aaa565b73ffffffffffffffffffffffffffffffffffffffff16620008db62000862565b73ffffffffffffffffffffffffffffffffffffffff161462000965576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620009ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806200293c6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b611a528062000eea83390190565b60008135905062000ad18162000ecf565b92915050565b60008151905062000ae88162000ecf565b92915050565b60008083601f84011262000b0157600080fd5b8235905067ffffffffffffffff81111562000b1b57600080fd5b60208301915083604082028301111562000b3457600080fd5b9250929050565b60008083601f84011262000b4e57600080fd5b8235905067ffffffffffffffff81111562000b6857600080fd5b60208301915083606082028301111562000b8157600080fd5b9250929050565b60006020828403121562000b9b57600080fd5b600062000bab8482850162000ac0565b91505092915050565b60006020828403121562000bc757600080fd5b600062000bd78482850162000ad7565b91505092915050565b6000806000806040858703121562000bf757600080fd5b600085013567ffffffffffffffff81111562000c1257600080fd5b62000c208782880162000aee565b9450945050602085013567ffffffffffffffff81111562000c4057600080fd5b62000c4e8782880162000b3b565b925092505092959194509250565b62000c678162000e1b565b82525050565b62000c788162000ddd565b82525050565b62000c898162000e2f565b82525050565b62000c9a8162000e57565b82525050565b62000cab8162000e7f565b82525050565b62000cbc8162000e11565b82525050565b600060208201905062000cd9600083018462000c6d565b92915050565b600060208201905062000cf6600083018462000c5c565b92915050565b600060408201905062000d13600083018562000c6d565b62000d22602083018462000c6d565b9392505050565b600060a08201905062000d40600083018862000c6d565b62000d4f602083018762000c6d565b62000d5e604083018662000c6d565b62000d6d606083018562000cb1565b62000d7c608083018462000cb1565b9695505050505050565b600060208201905062000d9d600083018462000c7e565b92915050565b600060208201905062000dba600083018462000c8f565b92915050565b600060208201905062000dd7600083018462000ca0565b92915050565b600062000dea8262000df1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000e288262000ea7565b9050919050565b600062000e3c8262000e43565b9050919050565b600062000e508262000df1565b9050919050565b600062000e648262000e6b565b9050919050565b600062000e788262000df1565b9050919050565b600062000e8c8262000e93565b9050919050565b600062000ea08262000df1565b9050919050565b600062000eb48262000ebb565b9050919050565b600062000ec88262000df1565b9050919050565b62000eda8162000ddd565b811462000ee657600080fd5b5056fe60806040523480156200001157600080fd5b5060405162001a5238038062001a52833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508460008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906200019c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200016057808201518184015260208101905062000143565b50505050905090810190601f1680156200018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d60208110156200021057600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015620002cd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620003ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200037157808201518184015260208101905062000354565b50505050905090810190601f1680156200039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049957600080fd5b505afa158015620004ae573d6000803e3d6000fd5b505050506040513d6020811015620004c557600080fd5b810190808051906020019092919050505060ff16600a0a600381905550620004f48282620004ff60201b60201c565b50505050506200064d565b600082118015620005105750600081115b6040518060400160405280600381526020017f595032000000000000000000000000000000000000000000000000000000000081525090620005f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005b457808201518184015260208101905062000597565b50505050905090810190601f168015620005e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508160048190555080600581905550426006819055507f82e7ee47180a631312683eeb2a85ad264c9af490d54de5a75bbdb95b968c6de2600454600554604051808381526020018281526020019250505060405180910390a15050565b6113f5806200065d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80635c975abb116100975780639a6fc8f5116100665780639a6fc8f5146102cc578063a384d6ff1461034e578063a834559e1461036c578063feaf968c1461038a576100f5565b80635c975abb146101eb5780637284e4161461020b578063741bef1a1461028e5780638456cb59146102c2576100f5565b806333303f8e116100d357806333303f8e146101715780633f4ba83a146101a557806349cc4675146101af57806354fd4d50146101cd576100f5565b80630bdea781146100fa5780632c51298c14610132578063313ce56714610150575b600080fd5b6101306004803603604081101561011057600080fd5b8101908080359060200190929190803590602001909291905050506103dc565b005b61013a61058b565b6040518082815260200191505060405180910390f35b610158610591565b604051808260ff16815260200191505060405180910390f35b61017961063b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ad610661565b005b6101b761080c565b6040518082815260200191505060405180910390f35b6101d5610812565b6040518082815260200191505060405180910390f35b6101f36108bc565b60405180821515815260200191505060405180910390f35b6102136108d2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610296610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ca610a60565b005b610304600480360360208110156102e257600080fd5b81019080803569ffffffffffffffffffff169060200190929190505050610c0b565b604051808669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1681526020019550505050505060405180910390f35b610356610c81565b6040518082815260200191505060405180910390f35b610374610c87565b6040518082815260200191505060405180910390f35b610392610c8d565b604051808669ffffffffffffffffffff1681526020018581526020018481526020018381526020018269ffffffffffffffffffff1681526020019550505050505060405180910390f35b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d602081101561048f57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061057c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610541578082015181840152602081019050610526565b50505050905090810190601f16801561056e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506105878282610f69565b5050565b60065481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105fb57600080fd5b505afa15801561060f573d6000803e3d6000fd5b505050506040513d602081101561062557600080fd5b8101908080519060200190929190505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107c65780820151818401526020810190506107ab565b50505050905090810190601f1680156107f35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061080a6110b2565b565b60055481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b15801561087c57600080fd5b505afa158015610890573d6000803e3d6000fd5b505050506040513d60208110156108a657600080fd5b8101908080519060200190929190505050905090565b60008060009054906101000a900460ff16905090565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561097a57600080fd5b810190808051604051939291908464010000000082111561099a57600080fd5b838201915060208201858111156109b057600080fd5b82518660018202830111640100000000821117156109cd57600080fd5b8083526020830192505050908051906020019080838360005b83811015610a015780820151818401526020810190506109e6565b50505050905090810190601f168015610a2e5780820380516001836020036101000a031916815260200191505b50604052505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d6020811015610b1357600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bc5578082015181840152602081019050610baa565b50505050905090810190601f168015610bf25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610c0961119c565b565b60008060008060006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f46756e6374696f6e206973206e6f7420737570706f727465640000000000000081525060200191505060405180910390fd5b60045481565b60035481565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610cfd57600080fd5b505afa158015610d11573d6000803e3d6000fd5b505050506040513d60a0811015610d2757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505080955081965082975083985084995050505050506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399530b066040518163ffffffff1660e01b815260040160206040518083038186803b158015610dde57600080fd5b505afa158015610df2573d6000803e3d6000fd5b505050506040513d6020811015610e0857600080fd5b8101908080519060200190929190505050905060006127106301e1338060065442036005540281610e3557fe5b04612710016004540281610e4557fe5b0490506004548210158015610e5a5750808211155b6040518060400160405280600381526020017f595031000000000000000000000000000000000000000000000000000000000081525090610f36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610efb578082015181840152602081019050610ee0565b50505050905090810190601f168015610f285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610f5e600354610f50888561128790919063ffffffff16565b61130d90919063ffffffff16565b955050509091929394565b600082118015610f795750600081115b6040518060400160405280600381526020017f595032000000000000000000000000000000000000000000000000000000000081525090611055576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561101a578082015181840152602081019050610fff565b50505050905090810190601f1680156110475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508160048190555080600581905550426006819055507f82e7ee47180a631312683eeb2a85ad264c9af490d54de5a75bbdb95b968c6de2600454600554604051808381526020018281526020019250505060405180910390a15050565b6110ba6108bc565b61112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61116f611396565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6111a46108bc565b15611217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861125a611396565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60008083141561129a5760009050611307565b60008284029050828482816112ab57fe5b0414611302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061139f6021913960400191505060405180910390fd5b809150505b92915050565b6000808211611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161138d57fe5b04905092915050565b60003390509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d401a69f556c52dd258d6c540e8b64ad42dec9f8843cbe1dca78fbf7799c856364736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212209ed399dc87f0d2bbff8475e3497ebe5a1c3961cf4e4bdd15d8d3729d08cb820564736f6c63430007060033",
187
- "linkReferences": {},
188
- "deployedLinkReferences": {}
189
- }