polkamarkets-js 1.0.1 → 3.1.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 (163) hide show
  1. package/.openzeppelin/unknown-1337.json +2056 -0
  2. package/CONTRIBUTING.md +36 -0
  3. package/README.md +24 -25
  4. package/_book/README.md +590 -0
  5. package/_book/core.md +50 -0
  6. package/_book/gitbook/fonts/fontawesome/FontAwesome.otf +0 -0
  7. package/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  8. package/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg +685 -0
  9. package/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
  10. package/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  11. package/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 +0 -0
  12. package/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js +240 -0
  13. package/_book/gitbook/gitbook-plugin-fontsettings/website.css +291 -0
  14. package/_book/gitbook/gitbook-plugin-highlight/ebook.css +135 -0
  15. package/_book/gitbook/gitbook-plugin-highlight/website.css +434 -0
  16. package/_book/gitbook/gitbook-plugin-lunr/lunr.min.js +7 -0
  17. package/_book/gitbook/gitbook-plugin-lunr/search-lunr.js +59 -0
  18. package/_book/gitbook/gitbook-plugin-search/lunr.min.js +7 -0
  19. package/_book/gitbook/gitbook-plugin-search/search-engine.js +50 -0
  20. package/_book/gitbook/gitbook-plugin-search/search.css +35 -0
  21. package/_book/gitbook/gitbook-plugin-search/search.js +213 -0
  22. package/_book/gitbook/gitbook-plugin-sharing/buttons.js +90 -0
  23. package/_book/gitbook/gitbook.js +4 -0
  24. package/_book/gitbook/images/apple-touch-icon-precomposed-152.png +0 -0
  25. package/_book/gitbook/images/favicon.ico +0 -0
  26. package/_book/gitbook/style.css +9 -0
  27. package/_book/gitbook/theme.js +4 -0
  28. package/_book/index.html +705 -0
  29. package/_book/intro.md +32 -0
  30. package/_book/search_index.json +1 -0
  31. package/book.json +8 -0
  32. package/build/contracts/AccessControl.json +1 -0
  33. package/build/contracts/AccessControlEnumerable.json +1 -0
  34. package/build/contracts/Achievements.json +1 -0
  35. package/build/contracts/Address.json +1 -0
  36. package/build/contracts/BalanceHolder.json +1 -0
  37. package/build/contracts/BalanceHolder_ERC20.json +1 -0
  38. package/build/contracts/CeilDiv.json +1 -0
  39. package/build/contracts/Clones.json +1 -0
  40. package/build/contracts/Context.json +1 -0
  41. package/build/contracts/Counters.json +1 -0
  42. package/build/contracts/ERC165.json +1 -0
  43. package/build/contracts/ERC20.json +1 -0
  44. package/build/contracts/ERC20Burnable.json +1 -0
  45. package/build/contracts/ERC20Pausable.json +1 -0
  46. package/build/contracts/ERC20PresetMinterPauser.json +1 -0
  47. package/build/contracts/ERC721.json +1 -0
  48. package/build/contracts/EnumerableMap.json +1 -0
  49. package/build/contracts/EnumerableSet.json +1 -0
  50. package/build/contracts/FantasyERC20.json +1 -0
  51. package/build/contracts/IAccessControl.json +1 -0
  52. package/build/contracts/IAccessControlEnumerable.json +1 -0
  53. package/build/contracts/IBalanceHolder_ERC20.json +1 -0
  54. package/build/contracts/IERC165.json +1 -0
  55. package/build/contracts/IERC20.json +1 -0
  56. package/build/contracts/IERC20Metadata.json +1 -0
  57. package/build/contracts/IERC20Permit.json +1 -0
  58. package/build/contracts/IERC721.json +1 -0
  59. package/build/contracts/IERC721Enumerable.json +1 -0
  60. package/build/contracts/IERC721Metadata.json +1 -0
  61. package/build/contracts/IERC721Receiver.json +1 -0
  62. package/build/contracts/IFantasyERC20.json +1 -0
  63. package/build/contracts/IPredictionMarketV3.json +1 -0
  64. package/build/contracts/IPredictionMarketV3Factory.json +1 -0
  65. package/build/contracts/IPredictionMarketV3Manager.json +1 -0
  66. package/build/contracts/IRealityETH_ERC20.json +1 -0
  67. package/build/contracts/IRealityETH_IERC20.json +1 -0
  68. package/build/contracts/IWETH.json +1 -0
  69. package/build/contracts/LandFactory.json +1 -0
  70. package/build/contracts/Math.json +1 -0
  71. package/build/contracts/Migrations.json +1 -0
  72. package/build/contracts/Ownable.json +1 -0
  73. package/build/contracts/Pausable.json +1 -0
  74. package/build/contracts/PredictionMarket.json +1 -0
  75. package/build/contracts/PredictionMarketV2.json +1 -0
  76. package/build/contracts/PredictionMarketV3.json +1 -0
  77. package/build/contracts/PredictionMarketV3Controller.json +1 -0
  78. package/build/contracts/PredictionMarketV3Factory.json +1 -0
  79. package/build/contracts/PredictionMarketV3Manager.json +1 -0
  80. package/build/contracts/PredictionMarketV3Querier.json +1 -0
  81. package/build/contracts/RealitioERC20.json +1 -0
  82. package/build/contracts/RealitioForeignArbitrationProxyWithAppeals.json +1 -0
  83. package/build/contracts/RealitioHomeArbitrationProxy.json +1 -0
  84. package/build/contracts/RealitioSafeMath256.json +1 -0
  85. package/build/contracts/RealitioSafeMath32.json +1 -0
  86. package/build/contracts/RealityETH_ERC20_Factory.json +1 -0
  87. package/build/contracts/RealityETH_ERC20_v3_0.json +1 -0
  88. package/build/contracts/ReentrancyGuard.json +1 -0
  89. package/build/contracts/SafeERC20.json +1 -0
  90. package/build/contracts/SafeMath.json +1 -0
  91. package/build/contracts/Strings.json +1 -0
  92. package/build/contracts/Voting.json +1 -0
  93. package/build/contracts/WETH9.json +1 -0
  94. package/build/contracts/test.json +1 -0
  95. package/cleanContracts.js +22 -0
  96. package/contracts/FantasyERC20.sol +81 -0
  97. package/contracts/IFantasyERC20.sol +20 -0
  98. package/contracts/IPredictionMarketV3.sol +207 -0
  99. package/contracts/IPredictionMarketV3Factory.sol +10 -0
  100. package/contracts/IPredictionMarketV3Manager.sol +12 -0
  101. package/contracts/IRealityETH_ERC20.sol +64 -0
  102. package/contracts/LandFactory.sol +248 -0
  103. package/contracts/Migrations.sol +24 -0
  104. package/contracts/PredictionMarketV3.sol +1332 -0
  105. package/contracts/PredictionMarketV3Controller.sol +87 -0
  106. package/contracts/PredictionMarketV3Factory.sol +205 -0
  107. package/contracts/PredictionMarketV3Manager.sol +45 -0
  108. package/contracts/PredictionMarketV3Querier.sol +79 -0
  109. package/contracts/RealityETH_ERC20_Factory.sol +54 -0
  110. package/contracts/Voting.sol +153 -0
  111. package/contracts/WETH9.sol +62 -0
  112. package/help.txt +8 -0
  113. package/index.js +3 -0
  114. package/migrations/10_deploy_weth.js +5 -0
  115. package/migrations/11_deploy_full_flow.js +99 -0
  116. package/migrations/12_deploy_pm_v3_querier.js +7 -0
  117. package/migrations/13_deploy_pm_v3_factory.js +14 -0
  118. package/migrations/1_initial_migration.js +5 -0
  119. package/migrations/2_deploy_erc20.js +10 -0
  120. package/migrations/3_deploy_realitio.js +11 -0
  121. package/migrations/4_deploy_pm.js +20 -0
  122. package/migrations/5_seed_markets.js +51 -0
  123. package/migrations/6_deploy_achievements.js +5 -0
  124. package/migrations/7_deploy_voting.js +14 -0
  125. package/migrations/8_deploy_pm_v2.js +20 -0
  126. package/migrations/9_seed_markets_v2.js +68 -0
  127. package/package.json +106 -13
  128. package/src/Application.js +421 -0
  129. package/src/interfaces/index.js +19 -0
  130. package/src/models/AchievementsContract.js +217 -0
  131. package/src/models/ArbitrationContract.js +69 -0
  132. package/src/models/ArbitrationProxyContract.js +32 -0
  133. package/src/models/ERC20Contract.js +156 -0
  134. package/src/models/FantasyERC20Contract.js +92 -0
  135. package/src/models/IContract.js +1002 -0
  136. package/src/models/PolkamarketsSmartAccount.js +100 -0
  137. package/src/models/PredictionMarketContract.js +562 -0
  138. package/src/models/PredictionMarketV2Contract.js +830 -0
  139. package/src/models/PredictionMarketV3Contract.js +233 -0
  140. package/src/models/PredictionMarketV3ControllerContract.js +102 -0
  141. package/src/models/PredictionMarketV3FactoryContract.js +96 -0
  142. package/src/models/PredictionMarketV3ManagerContract.js +111 -0
  143. package/src/models/PredictionMarketV3QuerierContract.js +24 -0
  144. package/src/models/RealitioERC20Contract.js +286 -0
  145. package/src/models/VotingContract.js +182 -0
  146. package/src/models/WETH9Contract.js +92 -0
  147. package/src/models/index.js +33 -0
  148. package/src/utils/Account.js +40 -0
  149. package/src/utils/Contract.js +120 -0
  150. package/src/utils/Numbers.js +94 -0
  151. package/tests/fantasyERC20Contract.js +225 -0
  152. package/tests/index.js +10 -0
  153. package/tests/predictionMarketContract.js +466 -0
  154. package/tests/predictionMarketV2Contract.js +1042 -0
  155. package/tests/predictionMarketV3Contract.js +1079 -0
  156. package/tests/predictionMarketV3ControllerContract.js +613 -0
  157. package/tests/predictionMarketV3FactoryContract.js +469 -0
  158. package/tests/predictionMarketV3ManagerContract.js +610 -0
  159. package/tests/utils.js +16 -0
  160. package/tests/votingContract.js +490 -0
  161. package/tooling/docs/jsdoc.json +6 -0
  162. package/truffle-config.js +134 -0
  163. package/polkamarkets.js +0 -422
@@ -0,0 +1 @@
1
+ {"contractName":"PredictionMarket","abi":[{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_requiredBalance","type":"uint256"},{"internalType":"address","name":"_realitioAddress","type":"address"},{"internalType":"uint256","name":"_realitioTimeout","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"enum PredictionMarket.MarketAction","name":"action","type":"uint8"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketActionTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomes","type":"uint256"},{"indexed":false,"internalType":"string","name":"question","type":"string"},{"indexed":false,"internalType":"string","name":"image","type":"string"}],"name":"MarketCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketOutcomePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketResolved","type":"event"},{"inputs":[],"name":"MAX_UINT_256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitioAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitioTimeout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requiredBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"question","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"uint256","name":"closesAt","type":"uint256"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint256","name":"outcomes","type":"uint256"}],"name":"createMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"calcBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"calcSellAmount","outputs":[{"internalType":"uint256","name":"outcomeTokenSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"minOutcomeSharesToBuy","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"maxOutcomeSharesToSell","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"resolveMarketOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimWinnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"claimVoidedOutcomeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimFees","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserMarketShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimStatus","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserLiquidityPoolShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimableFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketData","outputs":[{"internalType":"enum PredictionMarket.MarketState","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketAltData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketQuestion","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketLiquidityPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketResolvedOutcome","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"isMarketVoided","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketOutcomeIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"getMarketOutcomePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"getMarketOutcomeData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200371c3803806200371c8339810160408190526200003491620000ca565b6001600160a01b038216620000665760405162461bcd60e51b81526004016200005d9062000125565b60405180910390fd5b60008111620000895760405162461bcd60e51b81526004016200005d906200015c565b600394909455600680546001600160a01b039485166001600160a01b03199182161790915560079290925560048054919093169116179055600555620001ac565b600080600080600060a08688031215620000e2578081fd5b855194506020860151620000f68162000193565b604087015160608801519195509350620001108162000193565b80925050608086015190509295509295909350565b6020808252601d908201527f5f7265616c6974696f4164647265737320697320616464726573732030000000604082015260600190565b60208082526018908201527f74696d656f7574206d75737420626520706f7369746976650000000000000000604082015260600190565b6001600160a01b0381168114620001a957600080fd5b50565b61356080620001bc6000396000f3fe6080604052600436106102045760003560e01c80638c7adc1511610118578063c346a9d0116100a0578063ec93f0f51161006f578063ec93f0f5146105a1578063efbc47dc146105c1578063efce4313146105d4578063fc0c546a146105f4578063fdff80851461060957610204565b8063c346a9d014610537578063c8f70d0114610557578063ddca3f4314610577578063ec2c90161461058c57610204565b8063ac68a748116100e7578063ac68a7481461049d578063b31eb895146104b0578063bf455721146104d0578063bfacba3d146104f0578063c2ee3a081461052257610204565b80638c7adc15146104355780638cd415521461044a5780639d7de6b31461046a578063aa22a02e1461047d57610204565b806340993b261161019b57806351c6590a1161016a57806351c6590a146103a05780635e648eff146103b3578063677bd9ff146103d35780637b34e6e0146103f357806385b91d8e1461041557610204565b806340993b2614610320578063429c9dff146103335780634397c4ce14610353578063441cf65e1461037357610204565b806331877a38116101d757806331877a38146102b45780633620875e146102e15780633d41a26b146102f65780633fe45e3b1461030b57610204565b806308560ace146102095780631d7920aa1461023457806328747a80146102635780632c2aa24e14610283575b600080fd5b34801561021557600080fd5b5061021e610629565b60405161022b9190612df7565b60405180910390f35b34801561024057600080fd5b5061025461024f366004612c82565b61062f565b60405161022b939291906134ad565b34801561026f57600080fd5b5061021e61027e366004612c82565b61064e565b34801561028f57600080fd5b506102a361029e366004612c9a565b6107e4565b60405161022b959493929190612dd0565b3480156102c057600080fd5b506102d46102cf366004612c82565b6108b4565b60405161022b9190612d81565b6102f46102ef366004612d12565b61091d565b005b34801561030257600080fd5b5061021e610b6b565b34801561031757600080fd5b5061021e610b71565b6102f461032e366004612ce7565b610b77565b34801561033f57600080fd5b5061021e61034e366004612ce7565b610d38565b34801561035f57600080fd5b5061021e61036e366004612c82565b610e98565b34801561037f57600080fd5b5061039361038e366004612c82565b610ead565b60405161022b9190612dc5565b6102f46103ae366004612c82565b610ef2565b3480156103bf57600080fd5b506102f46103ce366004612c82565b610f8d565b3480156103df57600080fd5b506102f46103ee366004612c82565b61115a565b3480156103ff57600080fd5b506104086112c5565b60405161022b9190612d6d565b34801561042157600080fd5b50610254610430366004612c82565b6112d4565b34801561044157600080fd5b5061021e611305565b34801561045657600080fd5b5061021e610465366004612cc6565b61130b565b6102f4610478366004612cc6565b6113cb565b34801561048957600080fd5b5061021e610498366004612c9a565b6117e2565b6102f46104ab366004612c82565b611835565b3480156104bc57600080fd5b506102546104cb366004612c9a565b6118fe565b3480156104dc57600080fd5b5061021e6104eb366004612c82565b611959565b3480156104fc57600080fd5b5061051061050b366004612c82565b611996565b60405161022b96959493929190612e00565b34801561052e57600080fd5b5061021e6119ef565b34801561054357600080fd5b5061021e610552366004612ce7565b6119fb565b34801561056357600080fd5b5061021e610572366004612c82565b611b2b565b34801561058357600080fd5b5061021e611bde565b34801561059857600080fd5b506102d4611be4565b3480156105ad57600080fd5b506102f46105bc366004612cc6565b611c3c565b61021e6105cf366004612bf1565b611e0f565b3480156105e057600080fd5b506102546105ef366004612cc6565b6120fb565b34801561060057600080fd5b5061040861213f565b34801561061557600080fd5b5061021e610624366004612c9a565b61214e565b60075481565b6000908152600160205260409020600a81015460099091015490918190565b60008181526001602052604081205482904211801561068a575060008181526001602052604081206006015460ff16600281111561068857fe5b145b1561069857610698816121f4565b8260018060008381526001602052604090206006015460ff1660028111156106bc57fe5b146106e25760405162461bcd60e51b81526004016106d990613348565b60405180910390fd5b600085815260016020526040808220600480546009830154935163684e62bf60e11b81528a9593946001600160a01b039092169392849263d09cc57e926107299201612df7565b60206040518083038186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107799190810190612bd9565b60088401819055604051909150899033907f67a6457c8912ae1b7a9fbdfa311cbd016ba606b548bf06bc80bc751072d91bbc906107b990859042906134fc565b60405180910390a36107ca89612244565b50506008015494506107db816121f4565b50505050919050565b600082815260016020526040812081908190819081906002600682015460ff16600281111561080f57fe5b14610834576000806000806108248c8c61214e565b95509550955095509550506108aa565b60088101546000908152600e8201602090815260408083206001600160a01b038b16845260048082018452828520546005808401865284872054928801865284872054908801909552929094205490939115159260ff92831692901515911661089d8d8d61214e565b9650965096509650965050505b9295509295909350565b600081815260016020908152604091829020600d81018054845181850281018501909552808552606094929383018282801561090f57602002820191906000526020600020905b8154815260200190600101908083116108fb575b50505050509150505b919050565b600084815260016020526040902054849042118015610959575060008181526001602052604081206006015460ff16600281111561095757fe5b145b1561096757610967816121f4565b8460008060008381526001602052604090206006015460ff16600281111561098b57fe5b146109a85760405162461bcd60e51b81526004016106d990613348565b6000878152600160209081526040808320898452600e8101909252822090916109d2888b8b6119fb565b9050868111156109f45760405162461bcd60e51b81526004016106d990613433565b60008111610a145760405162461bcd60e51b81526004016106d990612f82565b336000908152600483016020526040902054811115610a455760405162461bcd60e51b81526004016106d990613307565b610a51338b8b846122f9565b6000610a70600354670de0b6b3a764000061239890919063ffffffff16565b600a850154610a86908b9063ffffffff6123c016565b81610a8d57fe5b600b8601549190049150610aa7908263ffffffff6123fa16565b600b8501556000610abe8a8363ffffffff6123fa16565b90508085600101541015610ae45760405162461bcd60e51b81526004016106d9906132c4565b610aee8c8261241f565b60405133908b156108fc02908c906000818181858888f19350505050158015610b1b573d6000803e3d6000fd5b508b6001336001600160a01b031660008051602061350b8339815191528e878f42604051610b4c9493929190612e37565b60405180910390a4610b5d8c612244565b505050505050505050505050565b60001981565b60055481565b600083815260016020526040902054839042118015610bb3575060008181526001602052604081206006015460ff166002811115610bb157fe5b145b15610bc157610bc1816121f4565b8360008060008381526001602052604090206006015460ff166002811115610be557fe5b14610c025760405162461bcd60e51b81526004016106d990613348565b6000868152600160205260408120903490610c1e828a8a610d38565b905086811015610c405760405162461bcd60e51b81526004016106d9906133fc565b60008111610c605760405162461bcd60e51b81526004016106d990612f82565b600a830154600090670de0b6b3a764000090610c8390859063ffffffff6123c016565b81610c8a57fe5b600b8601549190049150610ca4908263ffffffff6123fa16565b600b8501556000610cbb848363ffffffff61239816565b60008b8152600e870160205260409020909150610cd88c836124c2565b6003810154841115610cfc5760405162461bcd60e51b81526004016106d99061337f565b610d08338d8d8761255b565b8b6000336001600160a01b031660008051602061350b8339815191528e888a42604051610b4c9493929190612e37565b60008281526001602052604081206060610d51856125ea565b90506000610d91670de0b6b3a7640000610d7b85600a01600001548a6123c090919063ffffffff16565b81610d8257fe5b8991900463ffffffff61239816565b90506000828681518110610da157fe5b602002602001015190506000610dc8670de0b6b3a7640000836123c090919063ffffffff16565b905060005b8451811015610e3357878114610e2b576000858281518110610deb57fe5b60200260200101519050610e27610e0b86836123fa90919063ffffffff16565b610e1b858463ffffffff6123c016565b9063ffffffff61267d16565b9250505b600101610dcd565b5060008111610e545760405162461bcd60e51b81526004016106d990612ea4565b610e8b610e6f82670de0b6b3a764000063ffffffff61267d16565b610e7f848663ffffffff6123fa16565b9063ffffffff61239816565b9998505050505050505050565b60009081526001602052604090206009015490565b60008181526001602052604081206002600682015460ff166002811115610ed057fe5b14610edf576000915050610918565b600d810154600890910154101592915050565b600081815260016020526040902054819042118015610f2e575060008181526001602052604081206006015460ff166002811115610f2c57fe5b145b15610f3c57610f3c816121f4565b8160008060008381526001602052604090206006015460ff166002811115610f6057fe5b14610f7d5760405162461bcd60e51b81526004016106d990613348565b610f8784346126ad565b50505050565b8060028060008381526001602052604090206006015460ff166002811115610fb157fe5b14610fce5760405162461bcd60e51b81526004016106d990613348565b6000838152600160205260409020610fe584611835565b3360009081526004820160205260409020546110135760405162461bcd60e51b81526004016106d990613281565b33600090815260058201602052604090205460ff16156110455760405162461bcd60e51b81526004016106d99061323a565b600061105085611b2b565b33600090815260048401602052604081205491925090670de0b6b3a76400009061108190849063ffffffff6123c016565b8161108857fe5b04905080836001015410156110af5760405162461bcd60e51b81526004016106d99061309d565b60018301546110c4908263ffffffff61239816565b600184810191909155336000818152600580870160209081526040808420805460ff19169096179095556004880190528382205493518a9491939260008051602061350b8339815191529261111c9288904290612e37565b60405180910390a4604051339082156108fc029083906000818181858888f19350505050158015611151573d6000803e3d6000fd5b50505050505050565b8060028060008381526001602052604090206006015460ff16600281111561117e57fe5b1461119b5760405162461bcd60e51b81526004016106d990613348565b600083815260016020908152604080832060088101548452600e81018352818420338552600481019093529220546111e55760405162461bcd60e51b81526004016106d990612fae565b33600090815260058201602052604090205460ff16156112175760405162461bcd60e51b81526004016106d990613161565b336000908152600482016020526040902054600183015481111561124d5760405162461bcd60e51b81526004016106d99061309d565b6001830154611262908263ffffffff61239816565b6001808501919091553360009081526005840160205260409020805460ff19169091179055856004600885015433600081815260048701602052604090819020549051919260008051602061350b8339815191529261111c929088904290612e37565b6004546001600160a01b031681565b60008060006112e284611b2b565b6112ed85600061130b565b6112f886600161130b565b9250925092509193909250565b60025481565b6000828152600160209081526040808320848452600e810190925282206002600683015460ff16600281111561133d57fe5b148015611350575061134e85610ead565b155b1561137a5760088201548414611367576000611371565b670de0b6b3a76400005b925050506113c5565b600380830154908201546113c091906113b490670de0b6b3a7640000906113a890849063ffffffff61239816565b9063ffffffff6123c016565b9063ffffffff612a6a16565b925050505b92915050565b600082815260016020526040902054829042118015611407575060008181526001602052604081206006015460ff16600281111561140557fe5b145b1561141557611415816121f4565b8260008060008381526001602052604090206006015460ff16600281111561143957fe5b146114565760405162461bcd60e51b81526004016106d990613348565b600085815260016020908152604080832033845260048101909252909120548511156114945760405162461bcd60e51b81526004016106d990613307565b61149d86611835565b6114a986866003612a8b565b5060606114b5876125ea565b9050606081516040519080825280602002602001820160405280156114e4578160200160208202803883390190505b50905060001960005b835181101561152357600084828151811061150457fe5b602002602001015190508083111561151a578092505b506001016114ed565b506002840154600090611540906113b48b8563ffffffff6123c016565b905060005b84518110156115de5785600201546115798b87848151811061156357fe5b60200260200101516123c090919063ffffffff16565b8161158057fe5b0484828151811061158d57fe5b6020026020010181815250506115bf828583815181106115a957fe5b602002602001015161239890919063ffffffff16565b8482815181106115cb57fe5b6020908102919091010152600101611545565b506115e98a8261241f565b60028501546115fe908a63ffffffff61239816565b6002860155336000908152600486016020526040902054611625908a63ffffffff61239816565b3360009081526004870160205260408120919091555b845181101561172657600084828151811061165257fe5b6020026020010151111561171e576003808701546000838152600e89016020526040902090910154855161169f9033908f9086908a908290811061169257fe5b602002602001015161255b565b8c6000336001600160a01b031660008051602061350b833981519152868a88815181106116c857fe5b60200260200101516117028e600301546113b48e8c815181106116e757fe5b60200260200101516113a88b8d61239890919063ffffffff16565b426040516117139493929190612e37565b60405180910390a450505b60010161163b565b50604051339082156108fc029083906000818181858888f19350505050158015611754573d6000803e3d6000fd5b50896003336001600160a01b031660008051602061350b83398151915260008d86426040516117869493929190612e37565b60405180910390a4897f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b86600201546117be8d611b2b565b426040516117ce939291906134ad565b60405180910390a250505050505050505050565b600082815260016020908152604080832060028101546001600160a01b03861685526004820190935290832054909161182d916113b490670de0b6b3a764000063ffffffff6123c016565b949350505050565b60008181526001602052604081209061184e833361214e565b905080156118ba57336000908152600c83016020526040902054611878908263ffffffff6123fa16565b336000818152600c85016020526040808220939093559151909183156108fc02918491818181858888f193505050501580156118b8573d6000803e3d6000fd5b505b82600633600081815260048601602052604080822054905160008051602061350b833981519152926118f192909188904290612e37565b60405180910390a4505050565b60009182526001602081815260408085206001600160a01b03949094168086526004808601845282872054878052600e9096018085528388208389528201855283882054958852845282872091875201909152909220549092565b60008181526001602052604081206002600682015460ff16600281111561197c57fe5b1461198c57600019915050610918565b6008015492915050565b6000818152600160208190526040822060068101548154600283015493830154600384015486958695869586958695929460ff90921693909290916119da8d611959565b949d939c50919a509850965090945092505050565b670de0b6b3a764000081565b60008281526001602052604081206060611a14856125ea565b600a830154909150600090611a3890670de0b6b3a76400009063ffffffff61239816565b611a5088670de0b6b3a764000063ffffffff6123c016565b81611a5757fe5b0490506000828681518110611a6857fe5b602002602001015190506000611a8f670de0b6b3a7640000836123c090919063ffffffff16565b905060005b8451811015611ade57878114611ad6576000858281518110611ab257fe5b60200260200101519050611ad2610e0b868361239890919063ffffffff16565b9250505b600101611a94565b5060008111611aff5760405162461bcd60e51b81526004016106d990612ea4565b610e8b82610e7f611b1e84670de0b6b3a764000063ffffffff61267d16565b869063ffffffff6123fa16565b60008181526001602052604081206002600682015460ff166002811115611b4e57fe5b148015611b615750611b5f83610ead565b155b15611ba957600281015460088201546000908152600e83016020526040902060030154611ba191906113b490670de0b6b3a764000063ffffffff6123c016565b915050610918565b6003810154600d8201546002830154611bd792916113b49190670de0b6b3a76400000263ffffffff6123c016565b9392505050565b60035481565b60606000805480602002602001604051908101604052809291908181526020018280548015611c3257602002820191906000526020600020905b815481526020019060010190808311611c1e575b5050505050905090565b8160028060008381526001602052604090206006015460ff166002811115611c6057fe5b14611c7d5760405162461bcd60e51b81526004016106d990613348565b6000848152600160209081526040808320868452600e8101835281842033855260048101909352922054611cc35760405162461bcd60e51b81526004016106d990612f0a565b33600090815260068201602052604090205460ff1615611cf55760405162461bcd60e51b81526004016106d99061346a565b6000611d01878761130b565b33600090815260048401602052604081205491925090611d3690670de0b6b3a7640000906113b490859063ffffffff6123c016565b90508084600101541015611d5c5760405162461bcd60e51b81526004016106d99061309d565b6001840154611d71908263ffffffff61239816565b6001808601919091553360009081526006850160205260409020805460ff191690911790558760073360008181526004870160205260409081902054905160008051602061350b83398151915291611dcf918d919088904290612e37565b60405180910390a4604051339082156108fc029083906000818181858888f19350505050158015611e04573d6000803e3d6000fd5b505050505050505050565b6007546006546040516370a0823160e01b8152600092916001600160a01b0316906370a0823190611e44903390600401612d6d565b60206040518083038186803b158015611e5c57600080fd5b505afa158015611e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e949190810190612bd9565b1015611eb25760405162461bcd60e51b81526004016106d990613117565b60025460008054600181810183557f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639091018390558282526020526040902034611f0e5760405162461bcd60e51b81526004016106d990612edb565b428611611f2d5760405162461bcd60e51b81526004016106d9906131f0565b6001600160a01b038516611f535760405162461bcd60e51b81526004016106d9906133c5565b83600214611f735760405162461bcd60e51b81526004016106d990612ff8565b85815560068101805460ff19169055600354600a820155600019600882015560005b84811015611fd757600d820180546001818101835560009283526020808420909201849055838352600e85019091526040909120848155810182905501611f95565b506000600460009054906101000a90046001600160a01b03169050806001600160a01b031663d4876b9f60028d8d8a6005548d6000806040518963ffffffff1660e01b8152600401612030989796959493929190612e52565b602060405180830381600087803b15801561204a57600080fd5b505af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120829190810190612bd9565b600983015561209183346126ad565b61209a83612244565b82336001600160a01b03167f928446b14f4c661d8499681f1d2eb118eb6e89066877a7d43e0672a27cc63a32878e8e8e8e6040516120dc9594939291906134c3565b60405180910390a3505060028054600101905598975050505050505050565b6000828152600160209081526040808320848452600e8101909252822082918291612126878761130b565b6003820154600290920154909891975095509350505050565b6006546001600160a01b031681565b600082815260016020908152604080832060028101546001600160a01b03861685526004820190935290832054600b82015491928492612198926113b4919063ffffffff6123c016565b6001600160a01b0385166000908152600c840160205260409020549091508110156121c8576000925050506113c5565b6001600160a01b0384166000908152600c830160205260409020546113c090829063ffffffff61239816565b6000818152600160205260409020600681015460ff16600281111561221557fe5b600101600281111561222357fe5b60068201805460ff1916600183600281111561223b57fe5b02179055505050565b6000818152600160205260408120905b600d8201548110156122ac5780837f8270f0a0534b13b7f92d1dbd58aa75c5207b40c55fefa7a17110c6136ad7270b61228d868561130b565b4260405161229c9291906134fc565b60405180910390a3600101612254565b50817f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b82600201546122dd85611b2b565b426040516122ed939291906134ad565b60405180910390a25050565b6000838152600160209081526040808320858452600e810183528184206001600160a01b03891685526004810190935292205461233c908463ffffffff61239816565b6001600160a01b0387166000908152600483016020526040902055600381015461236c908463ffffffff6123fa16565b600380830191909155820154612388908463ffffffff6123fa16565b8260030181905550505050505050565b6000828211156123ba5760405162461bcd60e51b81526004016106d990613066565b50900390565b6000826123cf575060006113c5565b828202828482816123dc57fe5b0414611bd75760405162461bcd60e51b81526004016106d9906131af565b600082820183811015611bd75760405162461bcd60e51b81526004016106d990612f4b565b6000828152600160205260408120905b600d8201548110156124a2576000818152600e8301602052604090206003810154612460908563ffffffff61239816565b6003820155600281015461247a908563ffffffff61239816565b60028201556003830154612494908563ffffffff61239816565b60038401555060010161242f565b5060018101546124b8908363ffffffff61239816565b6001909101555050565b6000828152600160205260408120905b600d820154811015612545576000818152600e8301602052604090206003810154612503908563ffffffff6123fa16565b6003820155600281015461251d908563ffffffff6123fa16565b60028201556003830154612537908563ffffffff6123fa16565b6003840155506001016124d2565b5060018101546124b8908363ffffffff6123fa16565b6000838152600160209081526040808320858452600e810183528184206001600160a01b03891685526004810190935292205461259e908463ffffffff6123fa16565b6001600160a01b038716600090815260048301602052604090205560038101546125ce908463ffffffff61239816565b600380830191909155820154612388908463ffffffff61239816565b600081815260016020908152604091829020600d8101548351818152818402810190930190935260609290918391801561262e578160200160208202803883390190505b50905060005b600d830154811015612675576000818152600e84016020526040902060030154825183908390811061266257fe5b6020908102919091010152600101612634565b509392505050565b6000821561269c5781600184038161269157fe5b0460010190506113c5565b8183816126a557fe5b049392505050565b6000828152600160205260409020548290421180156126e9575060008181526001602052604081206006015460ff1660028111156126e757fe5b145b156126f7576126f7816121f4565b8260008060008381526001602052604090206006015460ff16600281111561271b57fe5b146127385760405162461bcd60e51b81526004016106d990613348565b6000858152600160205260409020846127635760405162461bcd60e51b81526004016106d99061302f565b60006060612770886125ea565b90506060815160405190808252806020026020018201604052801561279f578160200160208202803883390190505b5060028501549091506000901561288e5760005b83518110156127e95760008482815181106127ca57fe5b60200260200101519050808310156127e0578092505b506001016127b3565b5060005b83518110156128595760008261281f86848151811061280857fe5b60200260200101518d6123c090919063ffffffff16565b8161282657fe5b0490506128398b8263ffffffff61239816565b84838151811061284557fe5b6020908102919091010152506001016127ed565b508061287286600201548b6123c090919063ffffffff16565b8161287957fe5b0493506128888a856002612a8b565b50612892565b8893505b60028501546128a7908563ffffffff6123fa16565b60028601553360009081526004860160205260409020546128ce908563ffffffff6123fa16565b3360009081526004870160205260409020556128ea8a8a6124c2565b60005b82518110156129b057600083828151811061290457fe5b602002602001015111156129a8576003808701546000838152600e8901602052604090209091015484516129449033908f90869089908290811061169257fe5b8c6000336001600160a01b031660008051602061350b8339815191528689888151811061296d57fe5b602002602001015161298c8e600301546113b48d8c815181106116e757fe5b4260405161299d9493929190612e37565b60405180910390a450505b6001016128ed565b5060006129bc8b611b2b565b90506000670de0b6b3a76400006129d9838863ffffffff6123c016565b816129e057fe5b0490508b6002336001600160a01b031660008051602061350b83398151915260008a8642604051612a149493929190612e37565b60405180910390a48b7f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b88600201548442604051612a54939291906134ad565b60405180910390a2505050505050505050505050565b600080821161269c5760405162461bcd60e51b81526004016106d9906130e0565b60008381526001602052604081206002810154600b8201548391612aba916113b490889063ffffffff6123c016565b90506002846007811115612aca57fe5b1415612b2357600b820154612ae5908263ffffffff6123fa16565b600b830155336000908152600c83016020526040902054612b0c908263ffffffff6123fa16565b336000908152600c84016020526040902055612b72565b600b820154612b38908263ffffffff61239816565b600b830155336000908152600c83016020526040902054612b5f908263ffffffff61239816565b336000908152600c840160205260409020555b50509392505050565b80356001600160a01b03811681146113c557600080fd5b60008083601f840112612ba3578182fd5b50813567ffffffffffffffff811115612bba578182fd5b602083019150836020828501011115612bd257600080fd5b9250929050565b600060208284031215612bea578081fd5b5051919050565b600080600080600080600060a0888a031215612c0b578283fd5b873567ffffffffffffffff80821115612c22578485fd5b612c2e8b838c01612b92565b909950975060208a0135915080821115612c46578485fd5b50612c538a828b01612b92565b90965094505060408801359250612c6d8960608a01612b7b565b91506080880135905092959891949750929550565b600060208284031215612c93578081fd5b5035919050565b60008060408385031215612cac578182fd5b82359150612cbd8460208501612b7b565b90509250929050565b60008060408385031215612cd8578182fd5b50508035926020909101359150565b600080600060608486031215612cfb578283fd5b505081359360208301359350604090920135919050565b60008060008060808587031215612d27578384fd5b5050823594602084013594506040840135936060013592509050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b81811015612db957835183529284019291840191600101612d9d565b50909695505050505050565b901515815260200190565b94151585529215156020850152901515604084015215156060830152608082015260a00190565b90815260200190565b60c0810160038810612e0e57fe5b968152602081019590955260408501939093526060840191909152608083015260a09091015290565b93845260208401929092526040830152606082015260800190565b600089825260e06020830152612e6c60e08301898b612d43565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c001529392505050565b6020808252601b908201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e6365730000000000604082015260600190565b60208082526015908201527407374616b65206e6565647320746f206265203e203605c1b604082015260600190565b60208082526021908201527f7573657220646f6573206e6f7420686f6c64206f7574636f6d652073686172656040820152607360f81b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260129082015271073686172657320616d6f756e7420697320360741b604082015260600190565b6020808252602a908201527f7573657220646f6573206e6f7420686f6c64207265736f6c766564206f7574636040820152696f6d652073686172657360b01b606082015260800190565b6020808252601e908201527f6e756d626572206f66206f7574636f6d65732068617320746f20626520320000604082015260600190565b6020808252601f908201527f7374616b652068617320746f2062652067726561746572207468616e20302e00604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526023908201527f4d61726b657420646f6573206e6f74206861766520656e6f7567682062616c616040820152626e636560e81b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b6020808252602a908201527f6d73672e73656e646572206d75737420686f6c64206d696e696d756d2065726360408201526932302062616c616e636560b01b606082015260800190565b6020808252602e908201527f7573657220616c726561647920636c61696d6564207265736f6c766564206f7560408201526d74636f6d652077696e6e696e677360901b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602a908201527f6d61726b6574206d757374207265736f6c7665206166746572207468652063756040820152697272656e74206461746560b01b606082015260800190565b60208082526027908201527f7573657220616c726561647920636c61696d6564206c69717569646974792077604082015266696e6e696e677360c81b606082015260800190565b60208082526023908201527f7573657220646f6573206e6f7420686f6c64206c69717569646974792073686160408201526272657360e81b606082015260800190565b60208082526023908201527f6d61726b657420646f6573206e6f74206861766520656e6f7567682062616c616040820152626e636560e81b606082015260800190565b60208082526021908201527f7573657220646f6573206e6f74206861766520656e6f7567682062616c616e636040820152606560f81b606082015260800190565b60208082526019908201527f4d61726b657420696e20696e636f727265637420737461746500000000000000604082015260600190565b60208082526026908201527f6f7574636f6d652073686172657320706f6f6c2062616c616e636520697320746040820152656f6f206c6f7760d01b606082015260800190565b6020808252601a908201527f696e76616c69642061726269747261746f722061646472657373000000000000604082015260600190565b6020808252601e908201527f6d696e696d756d2062757920616d6f756e74206e6f7420726561636865640000604082015260600190565b6020808252601c908201527f6d6178696d756d2073656c6c20616d6f756e7420657863656564656400000000604082015260600190565b60208082526023908201527f7573657220616c726561647920636c61696d6564206f7574636f6d652073686160408201526272657360e81b606082015260800190565b9283526020830191909152604082015260600190565b6000868252606060208301526134dd606083018688612d43565b82810360408401526134f0818587612d43565b98975050505050505050565b91825260208201526040019056fe9dcabe311735ed0d65f0c22c5425d1f17331f94c9d0767f59e58473cf95ada61a2646970667358221220b89e6e619d3667e7c276432c71b641eebfbf7287208a480d66b694bc76a6b1e464736f6c63430006020033"}
@@ -0,0 +1 @@
1
+ {"contractName":"PredictionMarketV2","abi":[{"inputs":[{"internalType":"contract IERC20","name":"_requiredBalanceToken","type":"address"},{"internalType":"uint256","name":"_requiredBalance","type":"uint256"},{"internalType":"address","name":"_realitioAddress","type":"address"},{"internalType":"uint256","name":"_realitioTimeout","type":"uint256"},{"internalType":"contract IWETH","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"enum PredictionMarketV2.MarketAction","name":"action","type":"uint8"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketActionTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomes","type":"uint256"},{"indexed":false,"internalType":"string","name":"question","type":"string"},{"indexed":false,"internalType":"string","name":"image","type":"string"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"MarketCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketOutcomePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"outcomeShares","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"MarketOutcomeShares","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketResolved","type":"event"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_OUTCOMES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT_256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitioAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"realitioTimeout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requiredBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requiredBalanceToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"},{"inputs":[{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"closesAt","type":"uint256"},{"internalType":"uint256","name":"outcomes","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256[]","name":"distribution","type":"uint256[]"},{"internalType":"string","name":"question","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"address","name":"treasury","type":"address"}],"internalType":"struct PredictionMarketV2.CreateMarketDescription","name":"desc","type":"tuple"}],"name":"createMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"closesAt","type":"uint256"},{"internalType":"uint256","name":"outcomes","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256[]","name":"distribution","type":"uint256[]"},{"internalType":"string","name":"question","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"address","name":"treasury","type":"address"}],"internalType":"struct PredictionMarketV2.CreateMarketDescription","name":"desc","type":"tuple"}],"name":"createMarketWithETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"calcBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"calcSellAmount","outputs":[{"internalType":"uint256","name":"outcomeTokenSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"minOutcomeSharesToBuy","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"minOutcomeSharesToBuy","type":"uint256"}],"name":"buyWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"maxOutcomeSharesToSell","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"maxOutcomeSharesToSell","type":"uint256"}],"name":"sellToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"addLiquidityWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidityToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"resolveMarketOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimWinnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimWinningsToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"claimVoidedOutcomeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"claimVoidedOutcomeSharesToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimLiquidityToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimFeesToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserMarketShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimStatus","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserLiquidityPoolShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimableFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketData","outputs":[{"internalType":"enum PredictionMarketV2.MarketState","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketAltData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract IERC20","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketQuestion","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketLiquidityPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketResolvedOutcome","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"isMarketVoided","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketOutcomeIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"getMarketOutcomePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"getMarketOutcomeData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6101206040523480156200001257600080fd5b506040516200553238038062005532833981016040819052620000359162000129565b60016000556001600160a01b038316620000965760405162461bcd60e51b815260206004820152601d60248201527f5f7265616c6974696f416464726573732069732061646472657373203000000060448201526064015b60405180910390fd5b60008211620000e85760405162461bcd60e51b815260206004820152601860248201527f74696d656f7574206d75737420626520706f736974697665000000000000000060448201526064016200008d565b6001600160a01b0394851660c05260e09390935290831660805260a052166101005262000191565b6001600160a01b03811681146200012657600080fd5b50565b600080600080600060a086880312156200014257600080fd5b85516200014f8162000110565b602087015160408801519196509450620001698162000110565b606087015160808801519194509250620001838162000110565b809150509295509295909350565b60805160a05160c05160e0516101005161527c620002b6600039600081816102a7015281816107f601528181610c8b01528181610cec01528181610d5a0152818161119c015281816111f4015281816112610152818161136b015281816113c301528181611438015281816115170152818161156f01528181611aba01528181611b1201528181611b6a01528181611fe4015281816120d00152818161214c015281816121a40152818161220a015281816122a50152818161242801528181612480015281816124e7015281816125fd015261265501526000818161034e015281816126ad01526126e8015260008181610640015261270a01526000818161056c0152612ad60152600081816106cc01528181610f420152612aa1015261527c6000f3fe6080604052600436106102975760003560e01c80638c7adc151161015a578063c2ee3a08116100c1578063ec2c90161161007a578063ec2c90161461095c578063ec93f0f514610971578063efce431314610991578063f5f1dbf9146109cc578063fdff8085146109df578063feebaca0146109ff57600080fd5b8063c2ee3a08146108b8578063c346a9d0146108d4578063c8f70d01146108f4578063d3d15d6714610914578063d450deca14610927578063dc73d1641461094757600080fd5b8063ad5c464811610113578063ad5c4648146107e4578063b02ed3db14610818578063b31eb8951461082b578063bc063e1a1461084b578063bf45572114610866578063bfacba3d1461088657600080fd5b80638c7adc151461072e5780638cd41552146107445780639cd441da146107645780639d7de6b314610784578063aa22a02e146107a4578063ac68a748146107c457600080fd5b80633d41a26b116101fe5780635c6d91d0116101b75780635c6d91d01461062e5780635e648eff1461067a578063677bd9ff1461069a5780637b34e6e0146106ba5780637ef1c3c7146106ee57806385b91d8e1461070e57600080fd5b80633d41a26b146105445780633fe45e3b1461055a578063411e0b171461058e578063429c9dff146105ae5780634397c4ce146105ce578063441cf65e146105fe57600080fd5b806328747a801161025057806328747a80146104475780632c2aa24e1461046757806331877a38146104b7578063325a00a8146104e45780633620875e1461050457806336d06c0a1461052457600080fd5b806302dafc8b146102db57806305a7e5b71461030e57806308560ace1461033c5780630d1ee133146103705780631281311d146103905780631d7920aa146103b057600080fd5b366102d657336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102d4576102d4614c44565b005b600080fd5b3480156102e757600080fd5b506102fb6102f6366004614c5a565b610a1f565b6040519081526020015b60405180910390f35b34801561031a57600080fd5b5061032e610329366004614c96565b610bc9565b604051610305929190614cea565b34801561034857600080fd5b506102fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037c57600080fd5b506102d461038b366004614d03565b610c88565b34801561039c57600080fd5b506102d46103ab366004614d25565b610e2d565b3480156103bc57600080fd5b5061040b6103cb366004614c96565b6000908152600260205260409020600a81015460098201546011830154600e840154600d909401549294919384936001600160a01b039283169391921690565b604080519687526020870195909552938501929092526001600160a01b03908116606085015260808401919091521660a082015260c001610305565b34801561045357600080fd5b506102fb610462366004614c96565b610e7a565b34801561047357600080fd5b50610487610482366004614d6c565b611022565b6040805195151586529315156020860152911515928401929092529015156060830152608082015260a001610305565b3480156104c357600080fd5b506104d76104d2366004614c96565b6110f9565b6040516103059190614d9c565b3480156104f057600080fd5b506102d46104ff366004614c96565b611199565b34801561051057600080fd5b506102d461051f366004614d25565b61132d565b34801561053057600080fd5b506102d461053f366004614c96565b611368565b34801561055057600080fd5b506102fb60001981565b34801561056657600080fd5b506102fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561059a57600080fd5b506102d46105a9366004614d03565b611514565b3480156105ba57600080fd5b506102fb6105c9366004614daf565b6115c4565b3480156105da57600080fd5b506102fb6105e9366004614c96565b60009081526002602052604090206009015490565b34801561060a57600080fd5b5061061e610619366004614c96565b611728565b6040519015158152602001610305565b34801561063a57600080fd5b506106627f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610305565b34801561068657600080fd5b506102d4610695366004614c96565b611773565b3480156106a657600080fd5b506102d46106b5366004614c96565b6117ae565b3480156106c657600080fd5b506106627f000000000000000000000000000000000000000000000000000000000000000081565b3480156106fa57600080fd5b506102fb610709366004614c96565b6117b9565b34801561071a57600080fd5b5061032e610729366004614c96565b6117e2565b34801561073a57600080fd5b506102fb60035481565b34801561075057600080fd5b506102fb61075f366004614d03565b611899565b34801561077057600080fd5b506102d461077f366004614d03565b6119a1565b34801561079057600080fd5b506102d461079f366004614d03565b6119e3565b3480156107b057600080fd5b506102fb6107bf366004614d6c565b611a1a565b3480156107d057600080fd5b506102d46107df366004614c96565b611a6a565b3480156107f057600080fd5b506106627f000000000000000000000000000000000000000000000000000000000000000081565b6102d4610826366004614daf565b611ab7565b34801561083757600080fd5b5061032e610846366004614d6c565b611be8565b34801561085757600080fd5b506102fb66b1a2bc2ec5000081565b34801561087257600080fd5b506102fb610881366004614c96565b611cd5565b34801561089257600080fd5b506108a66108a1366004614c96565b611d18565b60405161030596959493929190614df1565b3480156108c457600080fd5b506102fb670de0b6b3a764000081565b3480156108e057600080fd5b506102fb6108ef366004614daf565b611d70565b34801561090057600080fd5b506102fb61090f366004614c96565b611eb5565b6102fb610922366004614c5a565b611fd8565b34801561093357600080fd5b506102d4610942366004614d25565b612149565b34801561095357600080fd5b506102fb602081565b34801561096857600080fd5b506104d761237d565b34801561097d57600080fd5b506102d461098c366004614d03565b6123d5565b34801561099d57600080fd5b506109b16109ac366004614d03565b6123e1565b60408051938452602084019290925290820152606001610305565b6102d46109da366004614c96565b612425565b3480156109eb57600080fd5b506102fb6109fa366004614d6c565b61255f565b348015610a0b57600080fd5b506102d4610a1a366004614c96565b6125fa565b600080610b99604051806101600160405280856000013581526020018560200135815260200185604001358152602001856060016020810190610a629190614e3c565b6001600160a01b03168152602001610a7d6080870187614e59565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250602001610ac160a0870187614ea3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b0860c0870187614ea3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b53610100870160e08801614e3c565b6001600160a01b0316815261010086013560208201526101208601356040820152606001610b8961016087016101408801614e3c565b6001600160a01b031690526126a9565b9050610bc333308535610bb26080880160608901614e3c565b6001600160a01b0316929190612bd6565b92915050565b6000818152600260205260408120600f81015460609190839067ffffffffffffffff811115610bfa57610bfa614eea565b604051908082528060200260200182016040528015610c23578160200160208202803683370190505b50905060005b82600f0154811015610c785760008181526010840160205260409020600301548251839083908110610c5d57610c5d614f00565b6020908102919091010152610c7181614f2c565b9050610c29565b5060029091015494909350915050565b817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cd85760405162461bcd60e51b8152600401610ccf90614f45565b60405180910390fd5b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610d355760405162461bcd60e51b8152600401610ccf90614f7c565b6000610d418484612c41565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d8060008114610e00576040519150601f19603f3d011682016040523d82523d6000602084013e610e05565b606091505b5050905080610e265760405162461bcd60e51b8152600401610ccf90614fb3565b5050505050565b610e35612ea2565b60008481526002602052604090206011810154610e5d906001600160a01b0316333085612bd6565b610e6985858585612efb565b50610e746001600055565b50505050565b600081815260026020526040812054829042118015610ebd5750600081815260026020819052604082206006015460ff1690811115610ebb57610ebb614ddb565b145b15610ecb57610ecb816131bc565b8260018060008381526002602081905260409091206006015460ff1690811115610ef757610ef7614ddb565b14610f145760405162461bcd60e51b8152600401610ccf90614fe1565b6000858152600260205260408082206009810154915163684e62bf60e11b8152889391926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d09cc57e91610f799160040190815260200190565b602060405180830381865afa158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba9190615018565b6008830181905560408051828152426020820152919250899133917f67a6457c8912ae1b7a9fbdfa311cbd016ba606b548bf06bc80bc751072d91bbc910160405180910390a36110098861322c565b50600801549450611019816131bc565b50505050919050565b60008281526002602081905260408220829182918291829190600682015460ff16600281111561105457611054614ddb565b14611079576000806000806110698c8c61255f565b95509550955095509550506110ef565b6008810154600090815260108201602090815260408083206001600160a01b038b16845260048082018452828520546005808401865284872054928801865284872054908801909552929094205490939115159260ff9283169290151591166110e28d8d61255f565b9650965096509650965050505b9295509295909350565b6000818152600260205260408120600f8101546060929067ffffffffffffffff81111561112857611128614eea565b604051908082528060200260200182016040528015611151578160200160208202803683370190505b50905060005b82600f0154811015611191578082828151811061117657611176614f00565b602090810291909101015261118a81614f2c565b9050611157565b509392505050565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111e05760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161461123d5760405162461bcd60e51b8152600401610ccf90614f7c565b60006112488361331e565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156112ad57600080fd5b505af11580156112c1573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d8060008114611307576040519150601f19603f3d011682016040523d82523d6000602084013e61130c565b606091505b5050905080610e745760405162461bcd60e51b8152600401610ccf90614fb3565b611335612ea2565b61134184848484613509565b60008481526002602052604090206011810154610e69906001600160a01b0316338561381b565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113af5760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161461140c5760405162461bcd60e51b8152600401610ccf90614f7c565b611414612ea2565b600061141f8361384b565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561148457600080fd5b505af1158015611498573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d80600081146114de576040519150601f19603f3d011682016040523d82523d6000602084013e6114e3565b606091505b50509050806115045760405162461bcd60e51b8152600401610ccf90614fb3565b50506115106001600055565b5050565b817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661155b5760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146115b85760405162461bcd60e51b8152600401610ccf90614f7c565b6000610d4184846138ed565b6000806115d084613ddd565b905060006115dd856117b9565b90506000670de0b6b3a76400006115f48389615031565b6115fe9190615048565b611608908861506a565b9050600083868151811061161e5761161e614f00565b602002602001015190506000670de0b6b3a76400008261163e9190615031565b905060005b85518110156116a45787811461169457600086828151811061166757611667614f00565b602002602001015190506116908582611680919061507d565b61168a8386615031565b90613e8a565b9250505b61169d81614f2c565b9050611643565b50600081116116f55760405162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e63657300000000006044820152606401610ccf565b61170781670de0b6b3a7640000613e8a565b611711848461507d565b61171b919061506a565b9998505050505050505050565b6000818152600260208190526040822090600682015460ff16600281111561175257611752614ddb565b146117605750600092915050565b600f810154600890910154101592915050565b600061177e82613ec4565b60008381526002602052604090206011810154919250906117a9906001600160a01b0316338461381b565b505050565b600061177e8261331e565b6000818152600260205260408120600e810154600a8201546117db919061507d565b9392505050565b6000818152600260205260408120600f81015460609190839067ffffffffffffffff81111561181357611813614eea565b60405190808252806020026020018201604052801561183c578160200160208202803683370190505b50905060005b82600f0154811015611885576118588682611899565b82828151811061186a5761186a614f00565b602090810291909101015261187e81614f2c565b9050611842565b5061188f85611eb5565b9590945092505050565b6000828152600260208190526040822090600682015460ff1660028111156118c3576118c3614ddb565b1480156118d657506118d484611728565b155b156118ff57600881015483146118ed5760006118f7565b670de0b6b3a76400005b915050610bc3565b670de0b6b3a764000060005b82600f015481101561197a5780851461196a576000818152601084016020526040808220600390810154888452919092209091015461195390670de0b6b3a764000090615031565b61195d9190615048565b611967908361507d565b91505b61197381614f2c565b905061190b565b508061198e670de0b6b3a764000080615031565b6119989190615048565b95945050505050565b6040805160008152602081019091526119bb8383836140c0565b60008381526002602052604090206011810154610e74906001600160a01b0316333086612bd6565b60006119ef83836138ed565b6000848152600260205260409020601181015491925090610e74906001600160a01b0316338461381b565b6000828152600260208181526040808420928301546001600160a01b038616855260048401909252832054611a5890670de0b6b3a764000090615031565b611a629190615048565b949350505050565b611a72612ea2565b6000611a7d8261384b565b6000838152600260205260409020601181015491925090611aa8906001600160a01b0316338461381b565b5050611ab46001600055565b50565b827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611afe5760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614611b5b5760405162461bcd60e51b8152600401610ccf90614f7c565b611b63612ea2565b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bc357600080fd5b505af1158015611bd7573d6000803e3d6000fd5b5050505050610e6985858584612efb565b6000828152600260205260408120600f81015460609190839067ffffffffffffffff811115611c1957611c19614eea565b604051908082528060200260200182016040528015611c42578160200160208202803683370190505b50905060005b82600f0154811015611cab57600081815260108401602090815260408083206001600160a01b038a1684526004019091529020548251839083908110611c9057611c90614f00565b6020908102919091010152611ca481614f2c565b9050611c48565b506001600160a01b03851660009081526004909201602052604090912054925090505b9250929050565b6000818152600260208190526040822090600682015460ff166002811115611cff57611cff614ddb565b14611d0e575060001992915050565b6008015492915050565b6000818152600260208190526040822060068101548154928201546001830154600384015486958695869586958695929460ff90921693929091611d5b8d611cd5565b949d939c50919a509850965090945092505050565b600080611d7c84613ddd565b90506000611d89856117b9565b90506000611d9f82670de0b6b3a764000061506a565b611db1670de0b6b3a764000089615031565b611dbb9190615048565b90506000838681518110611dd157611dd1614f00565b602002602001015190506000670de0b6b3a764000082611df19190615031565b905060005b8551811015611e4757878114611e37576000868281518110611e1a57611e1a614f00565b60200260200101519050611e338582611680919061506a565b9250505b611e4081614f2c565b9050611df6565b5060008111611e985760405162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e63657300000000006044820152606401610ccf565b81611eab82670de0b6b3a7640000613e8a565b611711908561507d565b6000818152600260208190526040822090600682015460ff166002811115611edf57611edf614ddb565b148015611ef25750611ef083611728565b155b15611f3257600281015460088201546000908152601083016020526040902060030154611f2890670de0b6b3a764000090615031565b6117db9190615048565b6000805b82600f0154811015611f9157600081815260108401602052604090206003810154611f69670de0b6b3a764000080615031565b611f739190615048565b611f7d908461507d565b92505080611f8a90614f2c565b9050611f36565b50808260020154670de0b6b3a764000080670de0b6b3a764000086600f0154611fba9190615031565b611fc49190615031565b611fce9190615031565b611a589190615048565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166120146080840160608501614e3c565b6001600160a01b03161461203a5760405162461bcd60e51b8152600401610ccf90614f7c565b3482351461208a5760405162461bcd60e51b815260206004820152601e60248201527f76616c756520646f6573206e6f74206d6174636820617267756d656e747300006044820152606401610ccf565b60006120cc604051806101600160405280856000013581526020018560200135815260200185604001358152602001856060016020810190610a629190614e3c565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561212957600080fd5b505af115801561213d573d6000803e3d6000fd5b50939695505050505050565b837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166121905760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146121ed5760405162461bcd60e51b8152600401610ccf90614f7c565b6121f5612ea2565b600085815260026020526040902060118101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146122835760405162461bcd60e51b815260206004820152601860248201527f6d61726b657420746f6b656e206973206e6f74205745544800000000000000006044820152606401610ccf565b61228f86868686613509565b604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b50506040516000925033915086908381818185875af1925050503d806000811461234b576040519150601f19603f3d011682016040523d82523d6000602084013e612350565b606091505b50509050806123715760405162461bcd60e51b8152600401610ccf90614fb3565b5050610e266001600055565b606060018054806020026020016040519081016040528092919081815260200182805480156123cb57602002820191906000526020600020905b8154815260200190600101908083116123b7575b5050505050905090565b60006119ef8383612c41565b60008281526002602090815260408083208484526010810190925282208291829161240c8787611899565b6003820154600290920154909891975095509350505050565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661246c5760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146124c95760405162461bcd60e51b8152600401610ccf90614f7c565b60408051600081526020810190915234906124e58483836140c0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561254057600080fd5b505af1158015612554573d6000803e3d6000fd5b505050505050505050565b6000828152600260208181526040808420928301546001600160a01b038616855260048401909252832054600b83015484929161259b91615031565b6125a59190615048565b6001600160a01b0385166000908152600c840160205260409020549091508110156125d557600092505050610bc3565b6001600160a01b0384166000908152600c83016020526040902054611998908261506a565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126415760405162461bcd60e51b8152600401610ccf90614f45565b6000818152600260205260409020601101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161461269e5760405162461bcd60e51b8152600401610ccf90614f7c565b600061124883613ec4565b60007f0000000000000000000000000000000000000000000000000000000000000000158061278057506040516370a0823160e01b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277d9190615018565b10155b6127cc5760405162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2065726332302062616c616e6365206e6f742068656c6400006044820152606401610ccf565b600354600180548082019091557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601819055600081815260026020526040902083516128525760405162461bcd60e51b815260206004820152601560248201527407374616b65206e6565647320746f206265203e203605c1b6044820152606401610ccf565b428460200151116128a55760405162461bcd60e51b815260206004820152601e60248201527f7265736f6c7574696f6e206265666f72652063757272656e74206461746500006044820152606401610ccf565b60e08401516001600160a01b03166128ff5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c69642061726269747261746f7220616464726573730000000000006044820152606401610ccf565b6000846040015111801561291857506020846040015111155b6129645760405162461bcd60e51b815260206004820152601e60248201527f6f7574636f6d6520636f756e74206e6f74206265747765656e20312d333200006044820152606401610ccf565b66b1a2bc2ec5000084610100015111156129b45760405162461bcd60e51b8152602060048201526011602482015270666565206d757374206265203c3d20352560781b6044820152606401610ccf565b66b1a2bc2ec500008461012001511115612a105760405162461bcd60e51b815260206004820152601a60248201527f747265617375727920666565206d757374206265203c3d2035250000000000006044820152606401610ccf565b60608401516011820180546001600160a01b03199081166001600160a01b0393841617909155602086015180845560068401805460ff19169055610100870151600a850155610120870151600e850155610140870151600d85018054909316908416179091556000196008840155604080870151600f85015560a087015160e0880151915163d4876b9f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009094169363d4876b9f93612b03936002939290917f00000000000000000000000000000000000000000000000000000000000000009160009081906004016150e0565b6020604051808303816000875af1158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b469190615018565b600982015583516080850151612b5d9184916140c0565b612b668261322c565b81336001600160a01b03167f57c2e8e67a3a13bc1991cd4ba3ed6733e269f1de098668140234d41dcb145ee486604001518760a001518860c001518960600151604051612bb69493929190615130565b60405180910390a3600354612bcc90600161507d565b6003555092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052610e749085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261473c565b60008260028060008381526002602081905260409091206006015460ff1690811115612c6f57612c6f614ddb565b14612c8c5760405162461bcd60e51b8152600401610ccf90614fe1565b600085815260026020908152604080832087845260108101909252909120612cb387611728565b612cf65760405162461bcd60e51b81526020600482015260146024820152731b585c9ad95d081a5cc81b9bdd081d9bda59195960621b6044820152606401610ccf565b336000908152600482016020526040902054612d545760405162461bcd60e51b815260206004820181905260248201527f7573657220646f65736e277420686f6c64206f7574636f6d65207368617265736044820152606401610ccf565b33600090815260068201602052604090205460ff1615612db65760405162461bcd60e51b815260206004820152601b60248201527f7573657220616c726561647920636c61696d65642073686172657300000000006044820152606401610ccf565b6000612dc28888611899565b33600090815260048401602052604081205491925090670de0b6b3a764000090612dec9084615031565b612df69190615048565b90508084600101541015612e1c5760405162461bcd60e51b8152600401610ccf90615175565b808460010154612e2c919061506a565b6001858101919091553360008181526006860160209081526040808320805460ff1916909517909455600487018152908390205483518c8152918201529182018390524260608301528a91600791906000805160206152278339815191529060800160405180910390a498975050505050505050565b600260005403612ef45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ccf565b6002600055565b600084815260026020526040902054849042118015612f3e5750600081815260026020819052604082206006015460ff1690811115612f3c57612f3c614ddb565b145b15612f4c57612f4c816131bc565b8460008060008381526002602081905260409091206006015460ff1690811115612f7857612f78614ddb565b14612f955760405162461bcd60e51b8152600401610ccf90614fe1565b600087815260026020526040812090612faf868a8a6115c4565b9050868110156130015760405162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2062757920616d6f756e74206e6f74207265616368656400006044820152606401610ccf565b600081116130465760405162461bcd60e51b8152602060048201526012602482015271073686172657320616d6f756e7420697320360741b6044820152606401610ccf565b600a820154600090670de0b6b3a7640000906130629089615031565b61306c9190615048565b600b84015490915061307f90829061507d565b600b8401556000613090828961506a565b90506000670de0b6b3a764000085600a01600401548a6130b09190615031565b6130ba9190615048565b90506130c6818361506a565b60008c815260108701602052604090209092506130e38d8461480e565b60038101548511156131375760405162461bcd60e51b815260206004820152601e60248201527f73686172657320706f6f6c2062616c616e636520697320746f6f206c6f7700006044820152606401610ccf565b613143338e8e886148a5565b8c6000604080518f8152602081018990529081018d905242606082015233906000805160206152278339815191529060800160405180910390a46131868d61322c565b81156131ad57600d86015460118701546131ad916001600160a01b0391821691168461381b565b50505050505050505050505050565b60008181526002602081905260409091206006810154909160ff909116908111156131e9576131e9614ddb565b6131f490600161507d565b600281111561320557613205614ddb565b60068201805460ff1916600183600281111561322357613223614ddb565b02179055505050565b6000818152600260205260408120600f81015490919067ffffffffffffffff81111561325a5761325a614eea565b604051908082528060200260200182016040528015613283578160200160208202803683370190505b50905060005b82600f01548110156132d857600081815260108401602052604090206003015482518390839081106132bd576132bd614f00565b60209081029190910101526132d181614f2c565b9050613289565b50827fb1bbae7680415a1349ae813ba7d737ca09df07db1f6ce058b3e0812ec15e888642838560020154604051613311939291906151ac565b60405180910390a2505050565b60008160028060008381526002602081905260409091206006015460ff169081111561334c5761334c614ddb565b146133695760405162461bcd60e51b8152600401610ccf90614fe1565b600084815260026020908152604080832060088101548452601081018352818420338552600481019093529220546133e35760405162461bcd60e51b815260206004820181905260248201527f7573657220646f65736e277420686f6c64206f7574636f6d65207368617265736044820152606401610ccf565b33600090815260058201602052604090205460ff16156134455760405162461bcd60e51b815260206004820152601d60248201527f7573657220616c726561647920636c61696d65642077696e6e696e67730000006044820152606401610ccf565b336000908152600482016020526040902054600183015481111561347b5760405162461bcd60e51b8152600401610ccf90615175565b80836001015461348b919061506a565b6001808501919091553360009081526005840160205260409020805460ff19169091179055866004600885015433600081815260048701602090815260409182902054825194855290840152820185905242606083015290600080516020615227833981519152906080015b60405180910390a49695505050505050565b60008481526002602052604090205484904211801561354c5750600081815260026020819052604082206006015460ff169081111561354a5761354a614ddb565b145b1561355a5761355a816131bc565b8460008060008381526002602081905260409091206006015460ff169081111561358657613586614ddb565b146135a35760405162461bcd60e51b8152600401610ccf90614fe1565b600087815260026020908152604080832089845260108101909252822090916135cd888b8b611d70565b90508681111561361f5760405162461bcd60e51b815260206004820152601c60248201527f6d6178696d756d2073656c6c20616d6f756e74206578636565646564000000006044820152606401610ccf565b600081116136645760405162461bcd60e51b8152602060048201526012602482015271073686172657320616d6f756e7420697320360741b6044820152606401610ccf565b3360009081526004830160205260409020548111156136c55760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74207368617265732062616c616e636500000000006044820152606401610ccf565b6136d1338b8b84614935565b60006136dc8b6117b9565b905060006136f282670de0b6b3a764000061506a565b600a860154613701908c615031565b61370b9190615048565b600b86015490915061371e90829061507d565b600b86015550600061373882670de0b6b3a764000061506a565b613742838c615031565b61374c9190615048565b613756908b61507d565b9050808560010154101561377c5760405162461bcd60e51b8152600401610ccf90615175565b6137868c826149b5565b8b6001604080518e8152602081018790529081018d905242606082015233906000805160206152278339815191529060800160405180910390a46137c98c61322c565b60006137dd83670de0b6b3a764000061506a565b600e8701546137ec908d615031565b6137f69190615048565b905080156131ad57600d86015460118701546131ad916001600160a01b039182169116835b6040516001600160a01b0383166024820152604481018290526117a990849063a9059cbb60e01b90606401612c0a565b600081815260026020526040812081613864843361255f565b9050801561389c57336000908152600c8301602052604090205461388990829061507d565b336000908152600c840160205260409020555b83600633600081815260048601602090815260408083205481519384529183019190915281018590524260608201526000805160206152278339815191529060800160405180910390a49392505050565b6000828152600260205260408120548390421180156139305750600081815260026020819052604082206006015460ff169081111561392e5761392e614ddb565b145b1561393e5761393e816131bc565b8360008060008381526002602081905260409091206006015460ff169081111561396a5761396a614ddb565b146139875760405162461bcd60e51b8152600401610ccf90614fe1565b600086815260026020908152604080832033845260048101909252909120548611156139f55760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74207368617265732062616c616e636500000000006044820152606401610ccf565b6139fe87611a6a565b613a0a87876003614a42565b6000613a1588613ddd565b90506000815167ffffffffffffffff811115613a3357613a33614eea565b604051908082528060200260200182016040528015613a5c578160200160208202803683370190505b50905060001960005b8351811015613aa9576000848281518110613a8257613a82614f00565b6020026020010151905080831115613a98578092505b50613aa281614f2c565b9050613a65565b506002840154600090613abc838c615031565b613ac69190615048565b905060005b8451811015613b785785600201548b868381518110613aec57613aec614f00565b6020026020010151613afe9190615031565b613b089190615048565b848281518110613b1a57613b1a614f00565b60200260200101818152505081848281518110613b3957613b39614f00565b6020026020010151613b4b919061506a565b848281518110613b5d57613b5d614f00565b6020908102919091010152613b7181614f2c565b9050613acb565b50613b838b826149b5565b898560020154613b93919061506a565b6002860155336000908152600486016020526040902054613bb5908b9061506a565b3360009081526004870160205260408120919091555b8451811015613c2b576000848281518110613be857613be8614f00565b60200260200101511115613c1b57613c1b338d83878581518110613c0e57613c0e614f00565b60200260200101516148a5565b613c2481614f2c565b9050613bcb565b506000613c398c6000611899565b905060005b8551811015613d43576000858281518110613c5b57613c5b614f00565b60200260200101511115613d335760008181526010880160205260408082206003908101548380529183200154613c929085615031565b613c9c9190615048565b90508d6000336001600160a01b0316600080516020615227833981519152858a8781518110613ccd57613ccd614f00565b6020026020010151670de0b6b3a7640000878d8a81518110613cf157613cf1614f00565b6020026020010151613d039190615031565b613d0d9190615048565b6040805193845260208401929092529082015242606082015260800160405180910390a4505b613d3c81614f2c565b9050613c3e565b508b60036040805160008152602081018f905290810185905242606082015233906000805160206152278339815191529060800160405180910390a48b7f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b8760020154613daf8f611eb5565b604080519283526020830191909152429082015260600160405180910390a2509a9950505050505050505050565b6000818152600260205260408120600f8101546060929067ffffffffffffffff811115613e0c57613e0c614eea565b604051908082528060200260200182016040528015613e35578160200160208202803683370190505b50905060005b82600f01548110156111915760008181526010840160205260409020600301548251839083908110613e6f57613e6f614f00565b6020908102919091010152613e8381614f2c565b9050613e3b565b60008215613eba5781613e9e60018561506a565b613ea89190615048565b613eb390600161507d565b9050610bc3565b6117db8284615048565b60008160028060008381526002602081905260409091206006015460ff1690811115613ef257613ef2614ddb565b14613f0f5760405162461bcd60e51b8152600401610ccf90614fe1565b6000848152600260205260409020613f2685611a6a565b336000908152600482016020526040902054613f845760405162461bcd60e51b815260206004820152601860248201527f7573657220646f65736e277420686f6c642073686172657300000000000000006044820152606401610ccf565b33600090815260058201602052604090205460ff1615613fe65760405162461bcd60e51b815260206004820152601b60248201527f7573657220616c726561647920636c61696d65642073686172657300000000006044820152606401610ccf565b6000613ff186611eb5565b33600090815260048401602052604081205491925090670de0b6b3a76400009061401b9084615031565b6140259190615048565b9050808360010154101561404b5760405162461bcd60e51b8152600401610ccf90615175565b80836001015461405b919061506a565b600184810191909155336000818152600580870160209081526040808420805460ff19169096179095556004880181528483205485519384529083015292810184905242606082015289929190600080516020615227833981519152906080016134f7565b6000838152600260205260409020548390421180156141035750600081815260026020819052604082206006015460ff169081111561410157614101614ddb565b145b1561411157614111816131bc565b8360008060008381526002602081905260409091206006015460ff169081111561413d5761413d614ddb565b1461415a5760405162461bcd60e51b8152600401610ccf90614fe1565b6000868152600260205260409020856141b55760405162461bcd60e51b815260206004820152601f60248201527f7374616b652068617320746f2062652067726561746572207468616e20302e006044820152606401610ccf565b6000806141c189613ddd565b90506000815167ffffffffffffffff8111156141df576141df614eea565b604051908082528060200260200182016040528015614208578160200160208202803683370190505b5090506000808560020154111561434f578851156142605760405162461bcd60e51b81526020600482015260156024820152741b585c9ad95d08185b1c9958591e48199d5b991959605a1b6044820152606401610ccf565b60005b83518110156142a757600084828151811061428057614280614f00565b6020026020010151905080831015614296578092505b506142a081614f2c565b9050614263565b5060005b8351811015614320576000828583815181106142c9576142c9614f00565b60200260200101518d6142dc9190615031565b6142e69190615048565b90506142f2818d61506a565b84838151811061430457614304614f00565b60209081029190910101525061431981614f2c565b90506142ab565b508085600201548b6143329190615031565b61433c9190615048565b935061434a8b856002614a42565b6144bf565b8851156144bb5782518951146143a75760405162461bcd60e51b815260206004820181905260248201527f646973747269627574696f6e206c656e677468206e6f74206d61746368696e676044820152606401610ccf565b6000805b8a518110156143ef5760008b82815181106143c8576143c8614f00565b60200260200101519050808310156143de578092505b506143e881614f2c565b90506143ab565b5060005b8a518110156144b8576000828c838151811061441157614411614f00565b60200260200101518e6144249190615031565b61442e9190615048565b9050600081116144805760405162461bcd60e51b815260206004820152601e60248201527f6d7573742068696e7420612076616c696420646973747269627574696f6e00006044820152606401610ccf565b61448a818e61506a565b85838151811061449c5761449c614f00565b6020908102919091010152506144b181614f2c565b90506143f3565b50505b8993505b8385600201546144cf919061507d565b60028601553360009081526004860160205260409020546144f190859061507d565b33600090815260048701602052604090205561450d8b8b61480e565b60005b825181101561456357600083828151811061452d5761452d614f00565b6020026020010151111561455357614553338d83868581518110613c0e57613c0e614f00565b61455c81614f2c565b9050614510565b5060006145718c6000611899565b905060005b835181101561467b57600084828151811061459357614593614f00565b6020026020010151111561466b57600081815260108801602052604080822060039081015483805291832001546145ca9085615031565b6145d49190615048565b90508d6000336001600160a01b03166000805160206152278339815191528589878151811061460557614605614f00565b6020026020010151670de0b6b3a7640000878c8a8151811061462957614629614f00565b602002602001015161463b9190615031565b6146459190615048565b6040805193845260208401929092529082015242606082015260800160405180910390a4505b61467481614f2c565b9050614576565b505060006146888c611eb5565b90506000670de0b6b3a764000061469f8784615031565b6146a99190615048565b90508c60026040805160008152602081018a905290810184905242606082015233906000805160206152278339815191529060800160405180910390a46002870154604080519182526020820184905242908201528d907f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b9060600160405180910390a250505050505050505050505050565b6000614791826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b219092919063ffffffff16565b8051909150156117a957808060200190518101906147af91906151d5565b6117a95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ccf565b6000828152600260205260408120905b81600f015481101561488a5760008181526010830160205260409020600381015461484a90859061507d565b6003820155600281015461485f90859061507d565b6002820155600383015461487490859061507d565b60038401555061488381614f2c565b905061481e565b5081816001015461489b919061507d565b6001909101555050565b60008381526002602090815260408083208584526010810183528184206001600160a01b0389168552600481019093529220546148e390849061507d565b6001600160a01b0387166000908152600483016020526040902055600381015461490e90849061506a565b60038083019190915582015461492590849061506a565b8260030181905550505050505050565b60008381526002602090815260408083208584526010810183528184206001600160a01b03891685526004810190935292205461497390849061506a565b6001600160a01b0387166000908152600483016020526040902055600381015461499e90849061507d565b60038083019190915582015461492590849061507d565b6000828152600260205260408120905b81600f0154811015614a31576000818152601083016020526040902060038101546149f190859061506a565b60038201556002810154614a0690859061506a565b60028201556003830154614a1b90859061506a565b600384015550614a2a81614f2c565b90506149c5565b5081816001015461489b919061506a565b6000838152600260208190526040822090810154600b820154919291614a689086615031565b614a729190615048565b90506002836007811115614a8857614a88614ddb565b03614ad657600b820154614a9d90829061507d565b600b830155336000908152600c83016020526040902054614abf90829061507d565b336000908152600c84016020526040902055610e26565b600b820154614ae690829061506a565b600b830155336000908152600c83016020526040902054614b0890829061506a565b336000908152600c840160205260409020555050505050565b6060611a62848460008585600080866001600160a01b03168587604051614b4891906151f7565b60006040518083038185875af1925050503d8060008114614b85576040519150601f19603f3d011682016040523d82523d6000602084013e614b8a565b606091505b5091509150614b9b87838387614ba6565b979650505050505050565b60608315614c15578251600003614c0e576001600160a01b0385163b614c0e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ccf565b5081611a62565b611a628383815115614c2a5781518083602001fd5b8060405162461bcd60e51b8152600401610ccf9190615213565b634e487b7160e01b600052600160045260246000fd5b600060208284031215614c6c57600080fd5b813567ffffffffffffffff811115614c8357600080fd5b820161016081850312156117db57600080fd5b600060208284031215614ca857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015614cdf57815187529582019590820190600101614cc3565b509495945050505050565b828152604060208201526000611a626040830184614caf565b60008060408385031215614d1657600080fd5b50508035926020909101359150565b60008060008060808587031215614d3b57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0381168114611ab457600080fd5b60008060408385031215614d7f57600080fd5b823591506020830135614d9181614d57565b809150509250929050565b6020815260006117db6020830184614caf565b600080600060608486031215614dc457600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052602160045260246000fd5b60c0810160038810614e1357634e487b7160e01b600052602160045260246000fd5b968152602081019590955260408501939093526060840191909152608083015260a09091015290565b600060208284031215614e4e57600080fd5b81356117db81614d57565b6000808335601e19843603018112614e7057600080fd5b83018035915067ffffffffffffffff821115614e8b57600080fd5b6020019150600581901b3603821315611cce57600080fd5b6000808335601e19843603018112614eba57600080fd5b83018035915067ffffffffffffffff821115614ed557600080fd5b602001915036819003821315611cce57600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201614f3e57614f3e614f16565b5060010190565b60208082526019908201527f5745544820616464726573732069732061646472657373203000000000000000604082015260600190565b60208082526018908201527f4d61726b657420746f6b656e206973206e6f7420574554480000000000000000604082015260600190565b6020808252601490820152732330b4b632b2103a379039b2b7321022ba3432b960611b604082015260600190565b60208082526019908201527f4d61726b657420696e20696e636f727265637420737461746500000000000000604082015260600190565b60006020828403121561502a57600080fd5b5051919050565b8082028115828204841417610bc357610bc3614f16565b60008261506557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bc357610bc3614f16565b80820180821115610bc357610bc3614f16565b60005b838110156150ab578181015183820152602001615093565b50506000910152565b600081518084526150cc816020860160208601615090565b601f01601f19169290920160200192915050565b87815260e0602082015260006150f960e08301896150b4565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b84815260806020820152600061514960808301866150b4565b828103604084015261515b81866150b4565b91505060018060a01b038316606083015295945050505050565b6020808252601b908201527f696e73756666696369656e74206d61726b65742062616c616e63650000000000604082015260600190565b8381526060602082015260006151c56060830185614caf565b9050826040830152949350505050565b6000602082840312156151e757600080fd5b815180151581146117db57600080fd5b60008251615209818460208701615090565b9190910192915050565b6020815260006117db60208301846150b456fe9dcabe311735ed0d65f0c22c5425d1f17331f94c9d0767f59e58473cf95ada61a26469706673582212205d05df73e8dcd2bb1afccafe13f0c379a1ea486f509c4a81dee2d58c0438ca4e64736f6c63430008120033"}
@@ -0,0 +1 @@
1
+ {"contractName":"PredictionMarketV3","abi":[{"inputs":[{"internalType":"contract IWETH","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"enum PredictionMarketV3.MarketAction","name":"action","type":"uint8"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketActionTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomes","type":"uint256"},{"indexed":false,"internalType":"string","name":"question","type":"string"},{"indexed":false,"internalType":"string","name":"image","type":"string"},{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"MarketCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"MarketOutcomePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"outcomeShares","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"MarketOutcomeShares","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"marketId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outcomeId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"bool","name":"admin","type":"bool"}],"name":"MarketResolved","type":"event"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_OUTCOMES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT_256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"},{"inputs":[{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"closesAt","type":"uint256"},{"internalType":"uint256","name":"outcomes","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256[]","name":"distribution","type":"uint256[]"},{"internalType":"string","name":"question","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"contract IRealityETH_ERC20","name":"realitio","type":"address"},{"internalType":"uint256","name":"realitioTimeout","type":"uint256"},{"internalType":"contract IPredictionMarketV3Manager","name":"manager","type":"address"}],"internalType":"struct PredictionMarketV3.CreateMarketDescription","name":"desc","type":"tuple"}],"name":"createMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"closesAt","type":"uint256"},{"internalType":"uint256","name":"outcomes","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256[]","name":"distribution","type":"uint256[]"},{"internalType":"string","name":"question","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"contract IRealityETH_ERC20","name":"realitio","type":"address"},{"internalType":"uint256","name":"realitioTimeout","type":"uint256"},{"internalType":"contract IPredictionMarketV3Manager","name":"manager","type":"address"}],"internalType":"struct PredictionMarketV3.CreateMarketDescription","name":"desc","type":"tuple"}],"name":"createMarketWithETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"closesAt","type":"uint256"},{"internalType":"uint256","name":"outcomes","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256[]","name":"distribution","type":"uint256[]"},{"internalType":"string","name":"question","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"contract IRealityETH_ERC20","name":"realitio","type":"address"},{"internalType":"uint256","name":"realitioTimeout","type":"uint256"},{"internalType":"contract IPredictionMarketV3Manager","name":"manager","type":"address"}],"internalType":"struct PredictionMarketV3.CreateMarketDescription","name":"desc","type":"tuple"}],"name":"mintAndCreateMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"calcBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"calcSellAmount","outputs":[{"internalType":"uint256","name":"outcomeTokenSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"minOutcomeSharesToBuy","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"minOutcomeSharesToBuy","type":"uint256"}],"name":"buyWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"maxOutcomeSharesToSell","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"maxOutcomeSharesToSell","type":"uint256"}],"name":"sellToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"addLiquidityWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"removeLiquidityToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"resolveMarketOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"adminResolveMarketOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimWinnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimWinningsToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"claimVoidedOutcomeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"claimVoidedOutcomeSharesToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimLiquidityToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"claimFeesToETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserMarketShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimStatus","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserLiquidityPoolShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserClaimableFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketData","outputs":[{"internalType":"enum PredictionMarketV3.MarketState","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketAltData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract IERC20","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"contract IRealityETH_ERC20","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"contract IPredictionMarketV3Manager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketQuestion","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketLiquidityPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketResolvedOutcome","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"isMarketVoided","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getMarketOutcomeIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"getMarketOutcomePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"outcomeId","type":"uint256"}],"name":"getMarketOutcomeData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a06040523480156200001157600080fd5b50604051620058f0380380620058f083398101604081905262000034916200004b565b60016000556001600160a01b03166080526200007d565b6000602082840312156200005e57600080fd5b81516001600160a01b03811681146200007657600080fd5b9392505050565b6080516157a16200014f6000396000818161029c015281816107bd01528181610ab401528181610b1501528181610b8301528181611065015281816110bd0152818161112a015281816112340152818161128c01528181611301015281816113e0015281816114380152818161168e015281816118fc01528181611e0301528181611e5b01528181611eb3015281816123230152818161237b015281816123e10152818161247c015281816126420152818161269a0152818161270101528181612817015261286f01526157a16000f3fe60806040526004361061028c5760003560e01c80638c7adc151161015a578063c2ee3a08116100c1578063ec93f0f51161007a578063ec93f0f514610925578063efce431314610945578063f1da56e914610980578063f5f1dbf9146109a0578063fdff8085146109b3578063feebaca0146109d357600080fd5b8063c2ee3a081461087f578063c346a9d01461089b578063c8f70d01146108bb578063d450deca146108db578063dc73d164146108fb578063ec2c90161461091057600080fd5b8063ad5c464811610113578063ad5c4648146107ab578063b02ed3db146107df578063b31eb895146107f2578063bc063e1a14610812578063bf4557211461082d578063bfacba3d1461084d57600080fd5b80638c7adc15146106f55780638cd415521461070b5780639cd441da1461072b5780639d7de6b31461074b578063aa22a02e1461076b578063ac68a7481461078b57600080fd5b806336d06c0a116101fe5780635e648eff116101b75780635e648eff14610642578063677bd9ff146106625780636eec5eb9146106825780637ef1c3c7146106955780638056ae79146106b557806385b91d8e146106d557600080fd5b806336d06c0a1461056c5780633d41a26b1461058c578063411e0b17146105a2578063429c9dff146105c25780634397c4ce146105e2578063441cf65e1461061257600080fd5b80632b5eda24116102505780632b5eda241461043e5780632c2aa24e1461045e57806331877a38146104ae578063325a00a8146104db5780633620875e146104fb57806336ad8a7a1461051b57600080fd5b806305a7e5b7146102d05780630d1ee133146103075780631281311d146103275780631d7920aa1461034757806328747a801461041057600080fd5b366102cb57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102c9576102c9614ef7565b005b600080fd5b3480156102dc57600080fd5b506102f06102eb366004614f0d565b6109f3565b6040516102fe929190614f61565b60405180910390f35b34801561031357600080fd5b506102c9610322366004614f7a565b610ab1565b34801561033357600080fd5b506102c9610342366004614f9c565b610c56565b34801561035357600080fd5b506103bc610362366004614f0d565b6000908152600260205260409020600c810154600982015460138301546010840154600f850154600a860154600b8701546014909701549597949687966001600160a01b0395861696949593841694928416939192911690565b60408051998a5260208a0198909852968801959095526001600160a01b0393841660608801526080870192909252821660a0860152811660c085015260e084019190915216610100820152610120016102fe565b34801561041c57600080fd5b5061043061042b366004614f0d565b610ca3565b6040519081526020016102fe565b34801561044a57600080fd5b50610430610459366004614fce565b610e34565b34801561046a57600080fd5b5061047e61047936600461502e565b610eec565b6040805195151586529315156020860152911515928401929092529015156060830152608082015260a0016102fe565b3480156104ba57600080fd5b506104ce6104c9366004614f0d565b610fc3565b6040516102fe919061505e565b3480156104e757600080fd5b506102c96104f6366004614f0d565b611062565b34801561050757600080fd5b506102c9610516366004614f9c565b6111f6565b34801561052757600080fd5b50610554610536366004614f0d565b6000908152600260205260409020601501546001600160a01b031690565b6040516001600160a01b0390911681526020016102fe565b34801561057857600080fd5b506102c9610587366004614f0d565b611231565b34801561059857600080fd5b5061043060001981565b3480156105ae57600080fd5b506102c96105bd366004614f7a565b6113dd565b3480156105ce57600080fd5b506104306105dd366004615071565b61148d565b3480156105ee57600080fd5b506104306105fd366004614f0d565b60009081526002602052604090206009015490565b34801561061e57600080fd5b5061063261062d366004614f0d565b6115f1565b60405190151581526020016102fe565b34801561064e57600080fd5b506102c961065d366004614f0d565b61163c565b34801561066e57600080fd5b506102c961067d366004614f0d565b611677565b610430610690366004614fce565b611682565b3480156106a157600080fd5b506104306106b0366004614f0d565b611975565b3480156106c157600080fd5b506104306106d0366004614f7a565b61199e565b3480156106e157600080fd5b506102f06106f0366004614f0d565b611b2c565b34801561070157600080fd5b5061043060035481565b34801561071757600080fd5b50610430610726366004614f7a565b611be2565b34801561073757600080fd5b506102c9610746366004614f7a565b611cea565b34801561075757600080fd5b506102c9610766366004614f7a565b611d2c565b34801561077757600080fd5b5061043061078636600461502e565b611d63565b34801561079757600080fd5b506102c96107a6366004614f0d565b611db3565b3480156107b757600080fd5b506105547f000000000000000000000000000000000000000000000000000000000000000081565b6102c96107ed366004615071565b611e00565b3480156107fe57600080fd5b506102f061080d36600461502e565b611f31565b34801561081e57600080fd5b5061043066b1a2bc2ec5000081565b34801561083957600080fd5b50610430610848366004614f0d565b61201d565b34801561085957600080fd5b5061086d610868366004614f0d565b612060565b6040516102fe969594939291906150b3565b34801561088b57600080fd5b50610430670de0b6b3a764000081565b3480156108a757600080fd5b506104306108b6366004615071565b6120b8565b3480156108c757600080fd5b506104306108d6366004614f0d565b6121fd565b3480156108e757600080fd5b506102c96108f6366004614f9c565b612320565b34801561090757600080fd5b50610430602081565b34801561091c57600080fd5b506104ce612554565b34801561093157600080fd5b506102c9610940366004614f7a565b6125ac565b34801561095157600080fd5b50610965610960366004614f7a565b6125b8565b604080519384526020840192909252908201526060016102fe565b34801561098c57600080fd5b5061043061099b366004614fce565b6125fc565b6102c96109ae366004614f0d565b61263f565b3480156109bf57600080fd5b506104306109ce36600461502e565b612779565b3480156109df57600080fd5b506102c96109ee366004614f0d565b612814565b600081815260026020526040812060118101546060919083906001600160401b03811115610a2357610a236150fe565b604051908082528060200260200182016040528015610a4c578160200160208202803683370190505b50905060005b8260110154811015610aa15760008181526012840160205260409020600301548251839083908110610a8657610a86615114565b6020908102919091010152610a9a81615140565b9050610a52565b5060029091015494909350915050565b817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b015760405162461bcd60e51b8152600401610af890615159565b60405180910390fd5b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610b5e5760405162461bcd60e51b8152600401610af890615190565b6000610b6a84846128c3565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d8060008114610c29576040519150601f19603f3d011682016040523d82523d6000602084013e610c2e565b606091505b5050905080610c4f5760405162461bcd60e51b8152600401610af8906151c7565b5050505050565b610c5e612b24565b60008481526002602052604090206013810154610c86906001600160a01b0316333085612b7d565b610c9285858585612be8565b50610c9d6001600055565b50505050565b600081815260026020526040812054829042118015610ce65750600081815260026020819052604082206006015460ff1690811115610ce457610ce461509d565b145b15610cf457610cf481612ea9565b8260018060008381526002602081905260409091206006015460ff1690811115610d2057610d2061509d565b14610d3d5760405162461bcd60e51b8152600401610af8906151f5565b600085815260026020526040808220600a8101546009820154925163684e62bf60e11b81526004810193909352889391926001600160a01b039091169063d09cc57e90602401602060405180830381865afa158015610da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc4919061522c565b60088301819055604080518281524260208201526000818301529051919250899133917f32c8457b93ca1561f798921516a9997de723415a87991bf1187b70434dc5cdea919081900360600190a3610e1b88612f19565b50600801549450610e2b81612ea9565b50505050919050565b6000610e466080830160608401615245565b6040516340c10f1960e01b8152336004820152833560248201526001600160a01b0391909116906340c10f1990604401600060405180830381600087803b158015610e9057600080fd5b505af1158015610ea4573d6000803e3d6000fd5b505050506000610ebc83610eb79061539e565b61300a565b9050610ee633308535610ed56080880160608901615245565b6001600160a01b0316929190612b7d565b92915050565b60008281526002602081905260408220829182918291829190600682015460ff166002811115610f1e57610f1e61509d565b14610f4357600080600080610f338c8c612779565b9550955095509550955050610fb9565b6008810154600090815260128201602090815260408083206001600160a01b038b16845260048082018452828520546005808401865284872054928801865284872054908801909552929094205490939115159260ff928316929015159116610fac8d8d612779565b9650965096509650965050505b9295509295909350565b60008181526002602052604081206011810154606092906001600160401b03811115610ff157610ff16150fe565b60405190808252806020026020018201604052801561101a578160200160208202803683370190505b50905060005b826011015481101561105a578082828151811061103f5761103f615114565b602090810291909101015261105381615140565b9050611020565b509392505050565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110a95760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146111065760405162461bcd60e51b8152600401610af890615190565b6000611111836135ae565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561117657600080fd5b505af115801561118a573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d80600081146111d0576040519150601f19603f3d011682016040523d82523d6000602084013e6111d5565b606091505b5050905080610c9d5760405162461bcd60e51b8152600401610af8906151c7565b6111fe612b24565b61120a84848484613799565b60008481526002602052604090206013810154610c92906001600160a01b03163385613aab565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112785760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146112d55760405162461bcd60e51b8152600401610af890615190565b6112dd612b24565b60006112e883613adb565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561134d57600080fd5b505af1158015611361573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d80600081146113a7576040519150601f19603f3d011682016040523d82523d6000602084013e6113ac565b606091505b50509050806113cd5760405162461bcd60e51b8152600401610af8906151c7565b50506113d96001600055565b5050565b817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114245760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146114815760405162461bcd60e51b8152600401610af890615190565b6000610b6a8484613b7d565b6000806114998461406c565b905060006114a685611975565b90506000670de0b6b3a76400006114bd83896154c7565b6114c791906154de565b6114d19088615500565b905060008386815181106114e7576114e7615114565b602002602001015190506000670de0b6b3a76400008261150791906154c7565b905060005b855181101561156d5787811461155d57600086828151811061153057611530615114565b6020026020010151905061155985826115499190615513565b61155383866154c7565b90614118565b9250505b61156681615140565b905061150c565b50600081116115be5760405162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e63657300000000006044820152606401610af8565b6115d081670de0b6b3a7640000614118565b6115da8484615513565b6115e49190615500565b9998505050505050505050565b6000818152600260208190526040822090600682015460ff16600281111561161b5761161b61509d565b146116295750600092915050565b6011810154600890910154101592915050565b600061164782614152565b6000838152600260205260409020601381015491925090611672906001600160a01b03163384613aab565b505050565b6000611647826135ae565b60006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166116be6080840160608501615245565b6001600160a01b0316146116e45760405162461bcd60e51b8152600401610af890615190565b348235146117345760405162461bcd60e51b815260206004820152601e60248201527f76616c756520646f6573206e6f74206d6174636820617267756d656e747300006044820152606401610af8565b60006118f8604051806101c001604052808560000135815260200185602001358152602001856040013581526020018560600160208101906117769190615245565b6001600160a01b031681526020016117916080870187615526565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506020016117d560a087018761556f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161181c60c087018761556f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001611867610100870160e08801615245565b6001600160a01b031681526101008601356020820152610120860135604082015260600161189d61016087016101408801615245565b6001600160a01b031681526020016118bd61018087016101608801615245565b6001600160a01b0316815261018086013560208201526040016118e86101c087016101a08801615245565b6001600160a01b0316905261300a565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561195557600080fd5b505af1158015611969573d6000803e3d6000fd5b50939695505050505050565b60008181526002602052604081206010810154600c8201546119979190615513565b9392505050565b60008260028060008381526002602081905260409091206006015460ff16908111156119cc576119cc61509d565b036119e95760405162461bcd60e51b8152600401610af8906151f5565b600085815260026020526040908190206014810154601382015492516368d75ae160e11b81526001600160a01b03938416600482015233602482015288939091169063d1aeb5c290604401602060405180830381865afa158015611a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7591906155b5565b611ac15760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420616c6c6f77656420746f207265736f6c7665206d61726b65740000006044820152606401610af8565b60088101869055604080518781524260208201526001818301529051889133917f32c8457b93ca1561f798921516a9997de723415a87991bf1187b70434dc5cdea9181900360600190a3611b1487612f19565b600801549350611b238161434e565b50505092915050565b600081815260026020526040812060118101546060919083906001600160401b03811115611b5c57611b5c6150fe565b604051908082528060200260200182016040528015611b85578160200160208202803683370190505b50905060005b8260110154811015611bce57611ba18682611be2565b828281518110611bb357611bb3615114565b6020908102919091010152611bc781615140565b9050611b8b565b50611bd8856121fd565b9590945092505050565b6000828152600260208190526040822090600682015460ff166002811115611c0c57611c0c61509d565b148015611c1f5750611c1d846115f1565b155b15611c485760088101548314611c36576000611c40565b670de0b6b3a76400005b915050610ee6565b670de0b6b3a764000060005b8260110154811015611cc357808514611cb35760008181526012840160205260408082206003908101548884529190922090910154611c9c90670de0b6b3a7640000906154c7565b611ca691906154de565b611cb09083615513565b91505b611cbc81615140565b9050611c54565b5080611cd7670de0b6b3a7640000806154c7565b611ce191906154de565b95945050505050565b604080516000815260208101909152611d04838383614374565b60008381526002602052604090206013810154610c9d906001600160a01b0316333086612b7d565b6000611d388383613b7d565b6000848152600260205260409020601381015491925090610c9d906001600160a01b03163384613aab565b6000828152600260208181526040808420928301546001600160a01b038616855260048401909252832054611da190670de0b6b3a7640000906154c7565b611dab91906154de565b949350505050565b611dbb612b24565b6000611dc682613adb565b6000838152600260205260409020601381015491925090611df1906001600160a01b03163384613aab565b5050611dfd6001600055565b50565b827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e475760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614611ea45760405162461bcd60e51b8152600401610af890615190565b611eac612b24565b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b5050505050610c9285858584612be8565b600082815260026020526040812060118101546060919083906001600160401b03811115611f6157611f616150fe565b604051908082528060200260200182016040528015611f8a578160200160208202803683370190505b50905060005b8260110154811015611ff357600081815260128401602090815260408083206001600160a01b038a1684526004019091529020548251839083908110611fd857611fd8615114565b6020908102919091010152611fec81615140565b9050611f90565b506001600160a01b03851660009081526004909201602052604090912054925090505b9250929050565b6000818152600260208190526040822090600682015460ff1660028111156120475761204761509d565b14612056575060001992915050565b6008015492915050565b6000818152600260208190526040822060068101548154928201546001830154600384015486958695869586958695929460ff909216939290916120a38d61201d565b949d939c50919a509850965090945092505050565b6000806120c48461406c565b905060006120d185611975565b905060006120e782670de0b6b3a7640000615500565b6120f9670de0b6b3a7640000896154c7565b61210391906154de565b9050600083868151811061211957612119615114565b602002602001015190506000670de0b6b3a76400008261213991906154c7565b905060005b855181101561218f5787811461217f57600086828151811061216257612162615114565b6020026020010151905061217b85826115499190615500565b9250505b61218881615140565b905061213e565b50600081116121e05760405162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e63657300000000006044820152606401610af8565b816121f382670de0b6b3a7640000614118565b6115da9085615513565b6000818152600260208190526040822090600682015460ff1660028111156122275761222761509d565b14801561223a5750612238836115f1565b155b1561227a5760028101546008820154600090815260128301602052604090206003015461227090670de0b6b3a7640000906154c7565b61199791906154de565b6000805b82601101548110156122d9576000818152601284016020526040902060038101546122b1670de0b6b3a7640000806154c7565b6122bb91906154de565b6122c59084615513565b925050806122d290615140565b905061227e565b50808260020154670de0b6b3a764000080670de0b6b3a7640000866011015461230291906154c7565b61230c91906154c7565b61231691906154c7565b611da191906154de565b837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123675760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146123c45760405162461bcd60e51b8152600401610af890615190565b6123cc612b24565b600085815260026020526040902060138101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161461245a5760405162461bcd60e51b815260206004820152601860248201527f6d61726b657420746f6b656e206973206e6f74205745544800000000000000006044820152606401610af8565b61246686868686613799565b604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b50506040516000925033915086908381818185875af1925050503d8060008114612522576040519150601f19603f3d011682016040523d82523d6000602084013e612527565b606091505b50509050806125485760405162461bcd60e51b8152600401610af8906151c7565b5050610c4f6001600055565b606060018054806020026020016040519081016040528092919081815260200182805480156125a257602002820191906000526020600020905b81548152602001906001019080831161258e575b5050505050905090565b6000611d3883836128c3565b6000828152600260209081526040808320848452601281019092528220829182916125e38787611be2565b6003820154600290920154909891975095509350505050565b600080610ebc604051806101c001604052808560000135815260200185602001358152602001856040013581526020018560600160208101906117769190615245565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126865760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146126e35760405162461bcd60e51b8152600401610af890615190565b60408051600081526020810190915234906126ff848383614374565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561275a57600080fd5b505af115801561276e573d6000803e3d6000fd5b505050505050505050565b6000828152600260208181526040808420928301546001600160a01b038616855260048401909252832054600d8301548492916127b5916154c7565b6127bf91906154de565b6001600160a01b0385166000908152600e840160205260409020549091508110156127ef57600092505050610ee6565b6001600160a01b0384166000908152600e83016020526040902054611ce19082615500565b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661285b5760405162461bcd60e51b8152600401610af890615159565b6000818152600260205260409020601301547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146128b85760405162461bcd60e51b8152600401610af890615190565b600061111183614152565b60008260028060008381526002602081905260409091206006015460ff16908111156128f1576128f161509d565b1461290e5760405162461bcd60e51b8152600401610af8906151f5565b600085815260026020908152604080832087845260128101909252909120612935876115f1565b6129785760405162461bcd60e51b81526020600482015260146024820152731b585c9ad95d081a5cc81b9bdd081d9bda59195960621b6044820152606401610af8565b3360009081526004820160205260409020546129d65760405162461bcd60e51b815260206004820181905260248201527f7573657220646f65736e277420686f6c64206f7574636f6d65207368617265736044820152606401610af8565b33600090815260068201602052604090205460ff1615612a385760405162461bcd60e51b815260206004820152601b60248201527f7573657220616c726561647920636c61696d65642073686172657300000000006044820152606401610af8565b6000612a448888611be2565b33600090815260048401602052604081205491925090670de0b6b3a764000090612a6e90846154c7565b612a7891906154de565b90508084600101541015612a9e5760405162461bcd60e51b8152600401610af8906155d7565b808460010154612aae9190615500565b6001858101919091553360008181526006860160209081526040808320805460ff1916909517909455600487018152908390205483518c8152918201529182018390524260608301528a916007919060008051602061574c8339815191529060800160405180910390a498975050505050505050565b600260005403612b765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610af8565b6002600055565b6040516001600160a01b0380851660248301528316604482015260648101829052610c9d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526149ef565b600084815260026020526040902054849042118015612c2b5750600081815260026020819052604082206006015460ff1690811115612c2957612c2961509d565b145b15612c3957612c3981612ea9565b8460008060008381526002602081905260409091206006015460ff1690811115612c6557612c6561509d565b14612c825760405162461bcd60e51b8152600401610af8906151f5565b600087815260026020526040812090612c9c868a8a61148d565b905086811015612cee5760405162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2062757920616d6f756e74206e6f74207265616368656400006044820152606401610af8565b60008111612d335760405162461bcd60e51b8152602060048201526012602482015271073686172657320616d6f756e7420697320360741b6044820152606401610af8565b600c820154600090670de0b6b3a764000090612d4f90896154c7565b612d5991906154de565b600d840154909150612d6c908290615513565b600d8401556000612d7d8289615500565b90506000670de0b6b3a764000085600c01600401548a612d9d91906154c7565b612da791906154de565b9050612db38183615500565b60008c81526012870160205260409020909250612dd08d84614ac1565b6003810154851115612e245760405162461bcd60e51b815260206004820152601e60248201527f73686172657320706f6f6c2062616c616e636520697320746f6f206c6f7700006044820152606401610af8565b612e30338e8e88614b58565b8c6000604080518f8152602081018990529081018d9052426060820152339060008051602061574c8339815191529060800160405180910390a4612e738d612f19565b8115612e9a57600f8601546013870154612e9a916001600160a01b03918216911684613aab565b50505050505050505050505050565b60008181526002602081905260409091206006810154909160ff90911690811115612ed657612ed661509d565b612ee1906001615513565b6002811115612ef257612ef261509d565b60068201805460ff19166001836002811115612f1057612f1061509d565b02179055505050565b600081815260026020526040812060118101549091906001600160401b03811115612f4657612f466150fe565b604051908082528060200260200182016040528015612f6f578160200160208202803683370190505b50905060005b8260110154811015612fc45760008181526012840160205260409020600301548251839083908110612fa957612fa9615114565b6020908102919091010152612fbd81615140565b9050612f75565b50827fb1bbae7680415a1349ae813ba7d737ca09df07db1f6ce058b3e0812ec15e888642838560020154604051612ffd9392919061560e565b60405180910390a2505050565b600354600180548082019091557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601819055600081815260026020526040812083519192916130935760405162461bcd60e51b815260206004820152601560248201527407374616b65206e6565647320746f206265203e203605c1b6044820152606401610af8565b428460200151116130e65760405162461bcd60e51b815260206004820152601e60248201527f7265736f6c7574696f6e206265666f72652063757272656e74206461746500006044820152606401610af8565b60e08401516001600160a01b03166131405760405162461bcd60e51b815260206004820152601a60248201527f696e76616c69642061726269747261746f7220616464726573730000000000006044820152606401610af8565b6000846040015111801561315957506020846040015111155b6131a55760405162461bcd60e51b815260206004820152601e60248201527f6f7574636f6d6520636f756e74206e6f74206265747765656e20312d333200006044820152606401610af8565b66b1a2bc2ec5000084610100015111156131f55760405162461bcd60e51b8152602060048201526011602482015270666565206d757374206265203c3d20352560781b6044820152606401610af8565b66b1a2bc2ec5000084610120015111156132515760405162461bcd60e51b815260206004820152601a60248201527f747265617375727920666565206d757374206265203c3d2035250000000000006044820152606401610af8565b6101608401516001600160a01b03166132ac5760405162461bcd60e51b815260206004820152601d60248201527f5f7265616c6974696f41646472657373206973206164647265737320300000006044820152606401610af8565b6000846101800151116133015760405162461bcd60e51b815260206004820152601860248201527f74696d656f7574206d75737420626520706f73697469766500000000000000006044820152606401610af8565b6101a084015160608501516040516325c7205960e01b81526001600160a01b0391821660048201523360248201529116906325c7205990604401602060405180830381865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c91906155b5565b6133c85760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420616c6c6f77656420746f20637265617465206d61726b6574000000006044820152606401610af8565b60608401516013820180546001600160a01b03199081166001600160a01b0393841617909155602086015180845560068401805460ff19169055610100870151600c8501556101208701516010850155610140870151600f85018054909316908416179091556000196008840155604080870151601185015561016087015160a088015160e08901516101808a0151935163d4876b9f60e01b8152929095169463d4876b9f94613485946002949091906000908190600401615687565b6020604051808303816000875af11580156134a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c8919061522c565b6009820155610160840151600a820180546001600160a01b039283166001600160a01b031991821617909155610180860151600b8401556101a086015160148401805491909316908216179091556015820180549091163317905583516080850151613535918491614374565b61353e82612f19565b81336001600160a01b03167f57c2e8e67a3a13bc1991cd4ba3ed6733e269f1de098668140234d41dcb145ee486604001518760a001518860c00151896060015160405161358e94939291906156d7565b60405180910390a36003546135a4906001615513565b6003555092915050565b60008160028060008381526002602081905260409091206006015460ff16908111156135dc576135dc61509d565b146135f95760405162461bcd60e51b8152600401610af8906151f5565b600084815260026020908152604080832060088101548452601281018352818420338552600481019093529220546136735760405162461bcd60e51b815260206004820181905260248201527f7573657220646f65736e277420686f6c64206f7574636f6d65207368617265736044820152606401610af8565b33600090815260058201602052604090205460ff16156136d55760405162461bcd60e51b815260206004820152601d60248201527f7573657220616c726561647920636c61696d65642077696e6e696e67730000006044820152606401610af8565b336000908152600482016020526040902054600183015481111561370b5760405162461bcd60e51b8152600401610af8906155d7565b80836001015461371b9190615500565b6001808501919091553360009081526005840160205260409020805460ff1916909117905586600460088501543360008181526004870160209081526040918290205482519485529084015282018590524260608301529060008051602061574c833981519152906080015b60405180910390a49695505050505050565b6000848152600260205260409020548490421180156137dc5750600081815260026020819052604082206006015460ff16908111156137da576137da61509d565b145b156137ea576137ea81612ea9565b8460008060008381526002602081905260409091206006015460ff16908111156138165761381661509d565b146138335760405162461bcd60e51b8152600401610af8906151f5565b6000878152600260209081526040808320898452601281019092528220909161385d888b8b6120b8565b9050868111156138af5760405162461bcd60e51b815260206004820152601c60248201527f6d6178696d756d2073656c6c20616d6f756e74206578636565646564000000006044820152606401610af8565b600081116138f45760405162461bcd60e51b8152602060048201526012602482015271073686172657320616d6f756e7420697320360741b6044820152606401610af8565b3360009081526004830160205260409020548111156139555760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74207368617265732062616c616e636500000000006044820152606401610af8565b613961338b8b84614be8565b600061396c8b611975565b9050600061398282670de0b6b3a7640000615500565b600c860154613991908c6154c7565b61399b91906154de565b600d8601549091506139ae908290615513565b600d8601555060006139c882670de0b6b3a7640000615500565b6139d2838c6154c7565b6139dc91906154de565b6139e6908b615513565b90508085600101541015613a0c5760405162461bcd60e51b8152600401610af8906155d7565b613a168c82614c68565b8b6001604080518e8152602081018790529081018d9052426060820152339060008051602061574c8339815191529060800160405180910390a4613a598c612f19565b6000613a6d83670de0b6b3a7640000615500565b6010870154613a7c908d6154c7565b613a8691906154de565b90508015612e9a57600f8601546013870154612e9a916001600160a01b039182169116835b6040516001600160a01b03831660248201526044810182905261167290849063a9059cbb60e01b90606401612bb1565b600081815260026020526040812081613af48433612779565b90508015613b2c57336000908152600e83016020526040902054613b19908290615513565b336000908152600e840160205260409020555b836006336000818152600486016020908152604080832054815193845291830191909152810185905242606082015260008051602061574c8339815191529060800160405180910390a49392505050565b600082815260026020526040812054839042118015613bc05750600081815260026020819052604082206006015460ff1690811115613bbe57613bbe61509d565b145b15613bce57613bce81612ea9565b8360008060008381526002602081905260409091206006015460ff1690811115613bfa57613bfa61509d565b14613c175760405162461bcd60e51b8152600401610af8906151f5565b60008681526002602090815260408083203384526004810190925290912054861115613c855760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74207368617265732062616c616e636500000000006044820152606401610af8565b613c8e87611db3565b613c9a87876003614cf5565b6000613ca58861406c565b9050600081516001600160401b03811115613cc257613cc26150fe565b604051908082528060200260200182016040528015613ceb578160200160208202803683370190505b50905060001960005b8351811015613d38576000848281518110613d1157613d11615114565b6020026020010151905080831115613d27578092505b50613d3181615140565b9050613cf4565b506002840154600090613d4b838c6154c7565b613d5591906154de565b905060005b8451811015613e075785600201548b868381518110613d7b57613d7b615114565b6020026020010151613d8d91906154c7565b613d9791906154de565b848281518110613da957613da9615114565b60200260200101818152505081848281518110613dc857613dc8615114565b6020026020010151613dda9190615500565b848281518110613dec57613dec615114565b6020908102919091010152613e0081615140565b9050613d5a565b50613e128b82614c68565b898560020154613e229190615500565b6002860155336000908152600486016020526040902054613e44908b90615500565b3360009081526004870160205260408120919091555b8451811015613eba576000848281518110613e7757613e77615114565b60200260200101511115613eaa57613eaa338d83878581518110613e9d57613e9d615114565b6020026020010151614b58565b613eb381615140565b9050613e5a565b506000613ec88c6000611be2565b905060005b8551811015613fd2576000858281518110613eea57613eea615114565b60200260200101511115613fc25760008181526012880160205260408082206003908101548380529183200154613f2190856154c7565b613f2b91906154de565b90508d6000336001600160a01b031660008051602061574c833981519152858a8781518110613f5c57613f5c615114565b6020026020010151670de0b6b3a7640000878d8a81518110613f8057613f80615114565b6020026020010151613f9291906154c7565b613f9c91906154de565b6040805193845260208401929092529082015242606082015260800160405180910390a4505b613fcb81615140565b9050613ecd565b508b60036040805160008152602081018f9052908101859052426060820152339060008051602061574c8339815191529060800160405180910390a48b7f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b876002015461403e8f6121fd565b604080519283526020830191909152429082015260600160405180910390a2509a9950505050505050505050565b60008181526002602052604081206011810154606092906001600160401b0381111561409a5761409a6150fe565b6040519080825280602002602001820160405280156140c3578160200160208202803683370190505b50905060005b826011015481101561105a57600081815260128401602052604090206003015482518390839081106140fd576140fd615114565b602090810291909101015261411181615140565b90506140c9565b60008215614148578161412c600185615500565b61413691906154de565b614141906001615513565b9050610ee6565b61199782846154de565b60008160028060008381526002602081905260409091206006015460ff16908111156141805761418061509d565b1461419d5760405162461bcd60e51b8152600401610af8906151f5565b60008481526002602052604090206141b485611db3565b3360009081526004820160205260409020546142125760405162461bcd60e51b815260206004820152601860248201527f7573657220646f65736e277420686f6c642073686172657300000000000000006044820152606401610af8565b33600090815260058201602052604090205460ff16156142745760405162461bcd60e51b815260206004820152601b60248201527f7573657220616c726561647920636c61696d65642073686172657300000000006044820152606401610af8565b600061427f866121fd565b33600090815260048401602052604081205491925090670de0b6b3a7640000906142a990846154c7565b6142b391906154de565b905080836001015410156142d95760405162461bcd60e51b8152600401610af8906155d7565b8083600101546142e99190615500565b600184810191909155336000818152600580870160209081526040808420805460ff1916909617909555600488018152848320548551938452908301529281018490524260608201528992919060008051602061574c83398151915290608001613787565b600081815260026020819052604090912060068101805491929160ff1916600183612f10565b6000838152600260205260409020548390421180156143b75750600081815260026020819052604082206006015460ff16908111156143b5576143b561509d565b145b156143c5576143c581612ea9565b8360008060008381526002602081905260409091206006015460ff16908111156143f1576143f161509d565b1461440e5760405162461bcd60e51b8152600401610af8906151f5565b6000868152600260205260409020856144695760405162461bcd60e51b815260206004820152601f60248201527f7374616b652068617320746f2062652067726561746572207468616e20302e006044820152606401610af8565b6000806144758961406c565b9050600081516001600160401b03811115614492576144926150fe565b6040519080825280602002602001820160405280156144bb578160200160208202803683370190505b50905060008085600201541115614602578851156145135760405162461bcd60e51b81526020600482015260156024820152741b585c9ad95d08185b1c9958591e48199d5b991959605a1b6044820152606401610af8565b60005b835181101561455a57600084828151811061453357614533615114565b6020026020010151905080831015614549578092505b5061455381615140565b9050614516565b5060005b83518110156145d35760008285838151811061457c5761457c615114565b60200260200101518d61458f91906154c7565b61459991906154de565b90506145a5818d615500565b8483815181106145b7576145b7615114565b6020908102919091010152506145cc81615140565b905061455e565b508085600201548b6145e591906154c7565b6145ef91906154de565b93506145fd8b856002614cf5565b614772565b88511561476e57825189511461465a5760405162461bcd60e51b815260206004820181905260248201527f646973747269627574696f6e206c656e677468206e6f74206d61746368696e676044820152606401610af8565b6000805b8a518110156146a25760008b828151811061467b5761467b615114565b6020026020010151905080831015614691578092505b5061469b81615140565b905061465e565b5060005b8a5181101561476b576000828c83815181106146c4576146c4615114565b60200260200101518e6146d791906154c7565b6146e191906154de565b9050600081116147335760405162461bcd60e51b815260206004820152601e60248201527f6d7573742068696e7420612076616c696420646973747269627574696f6e00006044820152606401610af8565b61473d818e615500565b85838151811061474f5761474f615114565b60209081029190910101525061476481615140565b90506146a6565b50505b8993505b8385600201546147829190615513565b60028601553360009081526004860160205260409020546147a4908590615513565b3360009081526004870160205260409020556147c08b8b614ac1565b60005b82518110156148165760008382815181106147e0576147e0615114565b6020026020010151111561480657614806338d83868581518110613e9d57613e9d615114565b61480f81615140565b90506147c3565b5060006148248c6000611be2565b905060005b835181101561492e57600084828151811061484657614846615114565b6020026020010151111561491e576000818152601288016020526040808220600390810154838052918320015461487d90856154c7565b61488791906154de565b90508d6000336001600160a01b031660008051602061574c833981519152858987815181106148b8576148b8615114565b6020026020010151670de0b6b3a7640000878c8a815181106148dc576148dc615114565b60200260200101516148ee91906154c7565b6148f891906154de565b6040805193845260208401929092529082015242606082015260800160405180910390a4505b61492781615140565b9050614829565b5050600061493b8c6121fd565b90506000670de0b6b3a764000061495287846154c7565b61495c91906154de565b90508c60026040805160008152602081018a9052908101849052426060820152339060008051602061574c8339815191529060800160405180910390a46002870154604080519182526020820184905242908201528d907f1eca98f266e5348ae38d5d057a4d8e451e76672f69ac6ba4b0e3b31ea9c7eb2b9060600160405180910390a250505050505050505050505050565b6000614a44826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614dd49092919063ffffffff16565b8051909150156116725780806020019051810190614a6291906155b5565b6116725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610af8565b6000828152600260205260408120905b8160110154811015614b3d57600081815260128301602052604090206003810154614afd908590615513565b60038201556002810154614b12908590615513565b60028201556003830154614b27908590615513565b600384015550614b3681615140565b9050614ad1565b50818160010154614b4e9190615513565b6001909101555050565b60008381526002602090815260408083208584526012810183528184206001600160a01b038916855260048101909352922054614b96908490615513565b6001600160a01b03871660009081526004830160205260409020556003810154614bc1908490615500565b600380830191909155820154614bd8908490615500565b8260030181905550505050505050565b60008381526002602090815260408083208584526012810183528184206001600160a01b038916855260048101909352922054614c26908490615500565b6001600160a01b03871660009081526004830160205260409020556003810154614c51908490615513565b600380830191909155820154614bd8908490615513565b6000828152600260205260408120905b8160110154811015614ce457600081815260128301602052604090206003810154614ca4908590615500565b60038201556002810154614cb9908590615500565b60028201556003830154614cce908590615500565b600384015550614cdd81615140565b9050614c78565b50818160010154614b4e9190615500565b6000838152600260208190526040822090810154600d820154919291614d1b90866154c7565b614d2591906154de565b90506002836007811115614d3b57614d3b61509d565b03614d8957600d820154614d50908290615513565b600d830155336000908152600e83016020526040902054614d72908290615513565b336000908152600e84016020526040902055610c4f565b600d820154614d99908290615500565b600d830155336000908152600e83016020526040902054614dbb908290615500565b336000908152600e840160205260409020555050505050565b6060611dab848460008585600080866001600160a01b03168587604051614dfb919061571c565b60006040518083038185875af1925050503d8060008114614e38576040519150601f19603f3d011682016040523d82523d6000602084013e614e3d565b606091505b5091509150614e4e87838387614e59565b979650505050505050565b60608315614ec8578251600003614ec1576001600160a01b0385163b614ec15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610af8565b5081611dab565b611dab8383815115614edd5781518083602001fd5b8060405162461bcd60e51b8152600401610af89190615738565b634e487b7160e01b600052600160045260246000fd5b600060208284031215614f1f57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015614f5657815187529582019590820190600101614f3a565b509495945050505050565b828152604060208201526000611dab6040830184614f26565b60008060408385031215614f8d57600080fd5b50508035926020909101359150565b60008060008060808587031215614fb257600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215614fe057600080fd5b81356001600160401b03811115614ff657600080fd5b82016101c0818503121561199757600080fd5b6001600160a01b0381168114611dfd57600080fd5b803561502981615009565b919050565b6000806040838503121561504157600080fd5b82359150602083013561505381615009565b809150509250929050565b6020815260006119976020830184614f26565b60008060006060848603121561508657600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052602160045260246000fd5b60c08101600388106150d557634e487b7160e01b600052602160045260246000fd5b968152602081019590955260408501939093526060840191909152608083015260a09091015290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016151525761515261512a565b5060010190565b60208082526019908201527f5745544820616464726573732069732061646472657373203000000000000000604082015260600190565b60208082526018908201527f4d61726b657420746f6b656e206973206e6f7420574554480000000000000000604082015260600190565b6020808252601490820152732330b4b632b2103a379039b2b7321022ba3432b960611b604082015260600190565b60208082526019908201527f4d61726b657420696e20696e636f727265637420737461746500000000000000604082015260600190565b60006020828403121561523e57600080fd5b5051919050565b60006020828403121561525757600080fd5b813561199781615009565b6040516101c081016001600160401b0381118282101715615285576152856150fe565b60405290565b604051601f8201601f191681016001600160401b03811182821017156152b3576152b36150fe565b604052919050565b600082601f8301126152cc57600080fd5b813560206001600160401b038211156152e7576152e76150fe565b8160051b6152f682820161528b565b928352848101820192828101908785111561531057600080fd5b83870192505b84831015614e4e57823582529183019190830190615316565b600082601f83011261534057600080fd5b81356001600160401b03811115615359576153596150fe565b61536c601f8201601f191660200161528b565b81815284602083860101111561538157600080fd5b816020850160208301376000918101602001919091529392505050565b60006101c082360312156153b157600080fd5b6153b9615262565b8235815260208301356020820152604083013560408201526153dd6060840161501e565b606082015260808301356001600160401b03808211156153fc57600080fd5b615408368387016152bb565b608084015260a085013591508082111561542157600080fd5b61542d3683870161532f565b60a084015260c085013591508082111561544657600080fd5b506154533682860161532f565b60c08301525061546560e0840161501e565b60e08201526101008381013590820152610120808401359082015261014061548e81850161501e565b908201526101606154a084820161501e565b9082015261018083810135908201526101a06154bd81850161501e565b9082015292915050565b8082028115828204841417610ee657610ee661512a565b6000826154fb57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610ee657610ee661512a565b80820180821115610ee657610ee661512a565b6000808335601e1984360301811261553d57600080fd5b8301803591506001600160401b0382111561555757600080fd5b6020019150600581901b360382131561201657600080fd5b6000808335601e1984360301811261558657600080fd5b8301803591506001600160401b038211156155a057600080fd5b60200191503681900382131561201657600080fd5b6000602082840312156155c757600080fd5b8151801515811461199757600080fd5b6020808252601b908201527f696e73756666696369656e74206d61726b65742062616c616e63650000000000604082015260600190565b8381526060602082015260006156276060830185614f26565b9050826040830152949350505050565b60005b8381101561565257818101518382015260200161563a565b50506000910152565b60008151808452615673816020860160208601615637565b601f01601f19169290920160200192915050565b87815260e0602082015260006156a060e083018961565b565b6001600160a01b039790971660408301525063ffffffff948516606082015292909316608083015260a082015260c0015292915050565b8481526080602082015260006156f0608083018661565b565b8281036040840152615702818661565b565b91505060018060a01b038316606083015295945050505050565b6000825161572e818460208701615637565b9190910192915050565b602081526000611997602083018461565b56fe9dcabe311735ed0d65f0c22c5425d1f17331f94c9d0767f59e58473cf95ada61a2646970667358221220be08f0e93b6dc10318896481bffe771f2131617f318806984b5524152cec165764736f6c63430008120033"}