@pimlico/alto 0.0.0-main.20251205T161640 → 0.0.0-main.20260101T133101

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 (146) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -1
  2. package/contracts/ERC165.sol/ERC165.json +1 -1
  3. package/contracts/ERC20.sol/ERC20.json +1 -1
  4. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -1
  5. package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
  6. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  7. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  8. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  9. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  10. package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  11. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  12. package/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  13. package/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  14. package/contracts/Exec.sol/Exec.json +1 -1
  15. package/contracts/IAccount.sol/IAccount.json +1 -1
  16. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -1
  17. package/contracts/IAggregator.sol/IAggregator.json +1 -1
  18. package/contracts/IERC165.sol/IERC165.json +1 -1
  19. package/contracts/IERC5267.sol/IERC5267.json +1 -1
  20. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -1
  21. package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride08.json +1 -1
  22. package/contracts/IEntryPointFilterOpsOverride.sol/IEntryPointFilterOpsOverride09.json +1 -0
  23. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
  24. package/contracts/INonceManager.sol/INonceManager.json +1 -1
  25. package/contracts/IPaymaster.sol/IPaymaster.json +1 -1
  26. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -1
  27. package/contracts/IStakeManager.sol/IStakeManager.json +1 -1
  28. package/contracts/LibBytes.sol/LibBytes.json +1 -1
  29. package/contracts/Math.sol/Math.json +1 -1
  30. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -1
  31. package/contracts/NonceManager.sol/NonceManager.json +1 -1
  32. package/contracts/Panic.sol/Panic.json +1 -1
  33. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  34. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -1
  35. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -1
  36. package/contracts/SafeCast.sol/SafeCast.json +1 -1
  37. package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
  38. package/contracts/ShortStrings.sol/ShortStrings.json +1 -1
  39. package/contracts/SignedMath.sol/SignedMath.json +1 -1
  40. package/contracts/SimulationOverrideHelper.sol/SimulationOverrideHelper.json +1 -1
  41. package/contracts/StakeManager.sol/StakeManager.json +1 -1
  42. package/contracts/StorageSlot.sol/StorageSlot.json +1 -1
  43. package/contracts/Strings.sol/Strings.json +1 -1
  44. package/contracts/TransientSlot.sol/TransientSlot.json +1 -1
  45. package/contracts/UserOperation.sol/UserOperationLib.json +1 -1
  46. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
  47. package/contracts/account-abstraction-v9/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
  48. package/contracts/account-abstraction-v9/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  49. package/contracts/account-abstraction-v9/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  50. package/contracts/account-abstraction-v9/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
  51. package/contracts/build-info/{006aa55b425148d5.json → 338795fc743ca612.json} +1 -1
  52. package/contracts/build-info/44a9648cfe32a468.json +1 -0
  53. package/contracts/build-info/{416ffb069999d6eb.json → 8dbf8a4ad39019b5.json} +1 -1
  54. package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  55. package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  56. package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  57. package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  58. package/contracts/core/Eip7702Support.sol/Eip7702Support.json +1 -0
  59. package/contracts/core/NonceManager.sol/NonceManager.json +1 -0
  60. package/contracts/core/SenderCreator.sol/SenderCreator.json +1 -0
  61. package/contracts/core/StakeManager.sol/StakeManager.json +1 -0
  62. package/contracts/core/UserOperationLib.sol/UserOperationLib.json +1 -0
  63. package/contracts/interfaces/IAccount.sol/IAccount.json +1 -0
  64. package/contracts/interfaces/IAccountExecute.sol/IAccountExecute.json +1 -0
  65. package/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -1
  66. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  67. package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -1
  68. package/contracts/interfaces/IPaymaster.sol/IPaymaster.json +1 -0
  69. package/contracts/interfaces/ISenderCreator.sol/ISenderCreator.json +1 -0
  70. package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -1
  71. package/contracts/overrides/Eip7702Support.sol/Eip7702Support.json +1 -0
  72. package/contracts/overrides/NonceManager.sol/NonceManager.json +1 -0
  73. package/contracts/overrides/SenderCreator.sol/SenderCreator.json +1 -0
  74. package/contracts/overrides/StakeManager.sol/StakeManager.json +1 -0
  75. package/contracts/overrides/UserOperationLib.sol/UserOperationLib.json +1 -0
  76. package/contracts/utils/Exec.sol/Exec.json +1 -1
  77. package/contracts/utils/StorageSlot.sol/StorageSlot.json +1 -1
  78. package/contracts/v09/EntryPoint.sol/EntryPoint.json +1 -0
  79. package/esm/cli/config/bundler.d.ts +56 -50
  80. package/esm/cli/config/bundler.js +1 -0
  81. package/esm/cli/config/bundler.js.map +1 -1
  82. package/esm/cli/config/options.js +5 -1
  83. package/esm/cli/config/options.js.map +1 -1
  84. package/esm/cli/deploySimulationsContract.d.ts +1 -0
  85. package/esm/cli/deploySimulationsContract.js +41 -5
  86. package/esm/cli/deploySimulationsContract.js.map +1 -1
  87. package/esm/cli/handler.js +14 -0
  88. package/esm/cli/handler.js.map +1 -1
  89. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -1
  90. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -1
  91. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -1
  92. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride09.json +1 -0
  93. package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -1
  94. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -1
  95. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -1
  96. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations09.json +1 -0
  97. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -1
  98. package/esm/executor/filterOpsAndEstimateGas.js +12 -0
  99. package/esm/executor/filterOpsAndEstimateGas.js.map +1 -1
  100. package/esm/executor/utils.js +2 -2
  101. package/esm/executor/utils.js.map +1 -1
  102. package/esm/mempool/mempool.d.ts +34 -0
  103. package/esm/mempool/mempool.js +14 -4
  104. package/esm/mempool/mempool.js.map +1 -1
  105. package/esm/rpc/estimation/gasEstimations07.js +7 -6
  106. package/esm/rpc/estimation/gasEstimations07.js.map +1 -1
  107. package/esm/rpc/estimation/preVerificationGasCalculator.js +1 -1
  108. package/esm/rpc/estimation/preVerificationGasCalculator.js.map +1 -1
  109. package/esm/rpc/methods/boost_sendUserOperation.d.ts +304 -0
  110. package/esm/rpc/methods/debug_bundler_dumpMempool.d.ts +338 -0
  111. package/esm/rpc/methods/eth_estimateUserOperationGas.d.ts +622 -14
  112. package/esm/rpc/methods/eth_getUserOperationByHash.d.ts +621 -11
  113. package/esm/rpc/methods/eth_sendUserOperation.d.ts +304 -0
  114. package/esm/rpc/methods/pimlico_sendUserOperationNow.d.ts +304 -0
  115. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +3 -12
  116. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  117. package/esm/rpc/methods/pimlico_simulateAssetChange.d.ts +620 -12
  118. package/esm/rpc/validation/SafeValidator.js +5 -5
  119. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  120. package/esm/store/createMempoolStore.js +8 -2
  121. package/esm/store/createMempoolStore.js.map +1 -1
  122. package/esm/store/outstanding/memory.js +26 -17
  123. package/esm/store/outstanding/memory.js.map +1 -1
  124. package/esm/store/outstanding/redis.js +46 -18
  125. package/esm/store/outstanding/redis.js.map +1 -1
  126. package/esm/store/outstanding/types.d.ts +2 -1
  127. package/esm/store/processing/memory.d.ts +3 -1
  128. package/esm/store/processing/memory.js +14 -2
  129. package/esm/store/processing/memory.js.map +1 -1
  130. package/esm/store/processing/redis.d.ts +4 -2
  131. package/esm/store/processing/redis.js +20 -4
  132. package/esm/store/processing/redis.js.map +1 -1
  133. package/esm/store/processing/types.d.ts +2 -1
  134. package/esm/store/types.d.ts +1 -0
  135. package/esm/types/contracts/PimlicoSimulations.d.ts +81 -0
  136. package/esm/types/contracts/PimlicoSimulations.js +105 -0
  137. package/esm/types/contracts/PimlicoSimulations.js.map +1 -1
  138. package/esm/types/schemas.d.ts +13039 -4597
  139. package/esm/types/schemas.js +92 -2
  140. package/esm/types/schemas.js.map +1 -1
  141. package/esm/utils/entryPointOverrides.js +7 -0
  142. package/esm/utils/entryPointOverrides.js.map +1 -1
  143. package/esm/utils/userop.d.ts +76 -2
  144. package/esm/utils/userop.js +71 -79
  145. package/esm/utils/userop.js.map +1 -1
  146. package/package.json +2 -2
@@ -1 +1 @@
1
- { "abi": [{ "type": "receive", "stateMutability": "payable" }, { "type": "function", "name": "SIG_VALIDATION_FAILED", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "_validateSenderAndPaymaster", "inputs": [{ "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "sender", "type": "address", "internalType": "address" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "view" }, { "type": "function", "name": "addStake", "inputs": [{ "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "balanceOf", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "depositTo", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "deposits", "inputs": [{ "name": "", "type": "address", "internalType": "address" }], "outputs": [{ "name": "deposit", "type": "uint112", "internalType": "uint112" }, { "name": "staked", "type": "bool", "internalType": "bool" }, { "name": "stake", "type": "uint112", "internalType": "uint112" }, { "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }, { "name": "withdrawTime", "type": "uint48", "internalType": "uint48" }], "stateMutability": "view" }, { "type": "function", "name": "getDepositInfo", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [{ "name": "info", "type": "tuple", "internalType": "struct IStakeManager.DepositInfo", "components": [{ "name": "deposit", "type": "uint112", "internalType": "uint112" }, { "name": "staked", "type": "bool", "internalType": "bool" }, { "name": "stake", "type": "uint112", "internalType": "uint112" }, { "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }, { "name": "withdrawTime", "type": "uint48", "internalType": "uint48" }] }], "stateMutability": "view" }, { "type": "function", "name": "getNonce", "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "key", "type": "uint192", "internalType": "uint192" }], "outputs": [{ "name": "nonce", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "getSenderAddress", "inputs": [{ "name": "initCode", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "getUserOpHash", "inputs": [{ "name": "userOp", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "handleAggregatedOps", "inputs": [{ "name": "opsPerAggregator", "type": "tuple[]", "internalType": "struct IEntryPoint.UserOpsPerAggregator[]", "components": [{ "name": "userOps", "type": "tuple[]", "internalType": "struct UserOperation[]", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "aggregator", "type": "address", "internalType": "contract IAggregator" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "beneficiary", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "handleOps", "inputs": [{ "name": "ops", "type": "tuple[]", "internalType": "struct UserOperation[]", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "beneficiary", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "incrementNonce", "inputs": [{ "name": "key", "type": "uint192", "internalType": "uint192" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "innerHandleOp", "inputs": [{ "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "opInfo", "type": "tuple", "internalType": "struct EntryPointGasEstimationOverride06.UserOpInfo", "components": [{ "name": "mUserOp", "type": "tuple", "internalType": "struct EntryPointGasEstimationOverride06.MemoryUserOp", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymaster", "type": "address", "internalType": "address" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }] }, { "name": "userOpHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "prefund", "type": "uint256", "internalType": "uint256" }, { "name": "contextOffset", "type": "uint256", "internalType": "uint256" }, { "name": "preOpGas", "type": "uint256", "internalType": "uint256" }] }, { "name": "context", "type": "bytes", "internalType": "bytes" }], "outputs": [{ "name": "actualGasCost", "type": "uint256", "internalType": "uint256" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "nonceSequenceNumber", "inputs": [{ "name": "", "type": "address", "internalType": "address" }, { "name": "", "type": "uint192", "internalType": "uint192" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "simulateHandleOp", "inputs": [{ "name": "op", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "target", "type": "address", "internalType": "address" }, { "name": "targetCallData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "simulateValidation", "inputs": [{ "name": "userOp", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "unlockStake", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawStake", "inputs": [{ "name": "withdrawAddress", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawTo", "inputs": [{ "name": "withdrawAddress", "type": "address", "internalType": "address payable" }, { "name": "withdrawAmount", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "AccountDeployed", "inputs": [{ "name": "userOpHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "factory", "type": "address", "indexed": false, "internalType": "address" }, { "name": "paymaster", "type": "address", "indexed": false, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "BeforeExecution", "inputs": [], "anonymous": false }, { "type": "event", "name": "Deposited", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "totalDeposit", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "SignatureAggregatorChanged", "inputs": [{ "name": "aggregator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StakeLocked", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "totalStaked", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "StakeUnlocked", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "withdrawTime", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "StakeWithdrawn", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "withdrawAddress", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "UserOperationEvent", "inputs": [{ "name": "userOpHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "paymaster", "type": "address", "indexed": true, "internalType": "address" }, { "name": "nonce", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "success", "type": "bool", "indexed": false, "internalType": "bool" }, { "name": "actualGasCost", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "actualGasUsed", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "UserOperationRevertReason", "inputs": [{ "name": "userOpHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "nonce", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "revertReason", "type": "bytes", "indexed": false, "internalType": "bytes" }], "anonymous": false }, { "type": "event", "name": "Withdrawn", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "withdrawAddress", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "error", "name": "CallPhaseReverted", "inputs": [{ "name": "reason", "type": "bytes", "internalType": "bytes" }] }, { "type": "error", "name": "ExecutionResult", "inputs": [{ "name": "preOpGas", "type": "uint256", "internalType": "uint256" }, { "name": "paid", "type": "uint256", "internalType": "uint256" }, { "name": "validAfter", "type": "uint48", "internalType": "uint48" }, { "name": "validUntil", "type": "uint48", "internalType": "uint48" }, { "name": "targetSuccess", "type": "bool", "internalType": "bool" }, { "name": "targetResult", "type": "bytes", "internalType": "bytes" }] }, { "type": "error", "name": "FailedOp", "inputs": [{ "name": "opIndex", "type": "uint256", "internalType": "uint256" }, { "name": "reason", "type": "string", "internalType": "string" }] }, { "type": "error", "name": "FailedOpWithRevert", "inputs": [{ "name": "opIndex", "type": "uint256", "internalType": "uint256" }, { "name": "reason", "type": "string", "internalType": "string" }, { "name": "inner", "type": "bytes", "internalType": "bytes" }] }, { "type": "error", "name": "SenderAddressResult", "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }] }, { "type": "error", "name": "SignatureValidationFailed", "inputs": [{ "name": "aggregator", "type": "address", "internalType": "address" }] }, { "type": "error", "name": "ValidationResult", "inputs": [{ "name": "returnInfo", "type": "tuple", "internalType": "struct IEntryPoint.ReturnInfo", "components": [{ "name": "preOpGas", "type": "uint256", "internalType": "uint256" }, { "name": "prefund", "type": "uint256", "internalType": "uint256" }, { "name": "sigFailed", "type": "bool", "internalType": "bool" }, { "name": "validAfter", "type": "uint48", "internalType": "uint48" }, { "name": "validUntil", "type": "uint48", "internalType": "uint48" }, { "name": "paymasterContext", "type": "bytes", "internalType": "bytes" }] }, { "name": "senderInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "factoryInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "paymasterInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }] }, { "type": "error", "name": "ValidationResultWithAggregation", "inputs": [{ "name": "returnInfo", "type": "tuple", "internalType": "struct IEntryPoint.ReturnInfo", "components": [{ "name": "preOpGas", "type": "uint256", "internalType": "uint256" }, { "name": "prefund", "type": "uint256", "internalType": "uint256" }, { "name": "sigFailed", "type": "bool", "internalType": "bool" }, { "name": "validAfter", "type": "uint48", "internalType": "uint48" }, { "name": "validUntil", "type": "uint48", "internalType": "uint48" }, { "name": "paymasterContext", "type": "bytes", "internalType": "bytes" }] }, { "name": "senderInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "factoryInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "paymasterInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "aggregatorInfo", "type": "tuple", "internalType": "struct IEntryPoint.AggregatorStakeInfo", "components": [{ "name": "aggregator", "type": "address", "internalType": "address" }, { "name": "stakeInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }] }] }], "bytecode": { "object": "0x6080806040523461001b57600160025561546990816100218239f35b600080fdfe60806040526004361015610023575b361561001957600080fd5b610021611ebc565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611d9c565b61000e565b5061010c611b84565b5061010c611a1c565b5061010c611883565b5061010c611705565b5061010c6116c6565b5061010c6116a5565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d811515612033565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b1115612098565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611f2d565b966102a48815156120fd565b6102b081891115612162565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b6121c7565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611e82565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091612fca565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d482939261268a565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a576100218585612797565b90919360019061093f61092e878987612749565b6109388886612727565b5190612a50565b0194019190610909565b61097461096d61095b83859795612727565b51610967848987612749565b84613a5c565b919061374c565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061374c565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c61256e565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc56124d9565b5061257b565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e15915061268a565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612797565b610ee8610e9282848a612b3b565b610ebd610ea4610ea460208401612bdd565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612b89565b906000915b808310610f0557505050610f0090611e82565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b612749565b918d612727565b90611f2d565b99611e82565b95611e82565b9190610eed565b610f50818688612b3b565b6020610f68610f5f8380612b89565b92909301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611e82565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d612727565b51610fc58c8b8a612749565b85613a5c565b908b613704565b611e82565b929190610f84565b610fea828587612b3b565b90610ff58280612b89565b92611005610ea460208301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612be7565b61104b575b5050506110459161103f91611f2d565b91611e82565b90610e04565b9095926110646040999693999895989788810190612888565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612d81565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613299565b906132a7565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff8111610359576115cc602061157360249336906004016106b9565b73ffffffffffffffffffffffffffffffffffffffff9291836115936134a3565b169060006040518097819582947f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613492565b03925af1918215611640575b600092611610575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b61163291925060203d8111611639575b61162a81836105ab565b81019061347d565b90386115e0565b503d611620565b611648612a43565b6115d8565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b79160040161164d565b50346103595760206116be6116b93661165c565b613112565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561170081610422565b611ec1565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611880573381528060205260408120600181019063ffffffff825416908115611822576117bf6117846117e793611776611771855460ff9060701c1690565b61232b565b65ffffffffffff4216612390565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576004356118bf81610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119013373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b926119b9611924610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119308615156123aa565b6119916001820161196965ffffffffffff611955835465ffffffffffff9060201c1690565b1661196181151561240f565b421015612474565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a166124d9565b50612509565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611a6d90369060040161164d565b60243591611a7a83610422565b60443590811161035957611a95610a3f9136906004016106b9565b611a9d612607565b611aa6856135ff565b611ab9611ab38287613854565b90612eac565b94611ac982600092438452612a50565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611b50575b505050506080015193611b1d6040611b0f602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612e51565b83955083949650611b6a6040949293945180948193612e43565b03925af1906080611b796124d9565b929190388080611aee565b503461035957611b933661165c565b611b9b612607565b611ba4826135ff565b611bae8183613854565b825160a00151919391611bdb9073ffffffffffffffffffffffffffffffffffffffff16613428565b613428565b90611bff611bd6855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c08613261565b50611c37611c1b60409586810190612888565b90600060148310611d94575061142b611bd69261143192613299565b91611c4191612eac565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611c969065ffffffffffff1690565b91015165ffffffffffff16916060015192611caf6105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611d8b575b50611d205750610a3f92519485947fe0cff05f000000000000000000000000000000000000000000000000000000008652600486016133ce565b9190610a3f93611d2f84613428565b611d56611d3a610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e40000000000000000000000000000000000000000000000000000000087526004870161333c565b90501538611ce6565b915050613428565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611ded81610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611eb0570190565b611eb8611e52565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611ee13482611f42565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611f3a57565b61044d611e52565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff80825416928301809311612026575b808311611fc85761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b61202e611e52565b611f83565b1561203a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561209f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561210457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b1561216957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d946122276dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b1561233257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611f3a57565b156123b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561241657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b1561247b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d15612504573d906124ea82610639565b916124f860405193846105ab565b82523d6000602084013e565b606090565b1561251057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611f3a57565b1561258257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff81116125fa575b60051b0190565b612602610505565b6125f3565b6040519061261482610535565b604051608083610100830167ffffffffffffffff81118482101761267d575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b612685610505565b612633565b90612694826125e0565b6126a160405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126cf82946125e0565b019060005b8281106126e057505050565b6020906126eb612607565b828285010152016126d4565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602091815181101561273c575b60051b010190565b6127446126f7565b612734565b919081101561278a575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b6127926126f7565b612753565b73ffffffffffffffffffffffffffffffffffffffff16801561282a57600080809381935af16127c46124d9565b50156127cc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b83811061293a5750506000910152565b818101518382015260200161292a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361298681518092818752878088019101612927565b0116010190565b906129a76080916108b796946101c08086528501916128e8565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261294a565b506040513d6000823e3d90fd5b612aa0602091612a696060850151916060810190612888565b92909160405195869485947f1d7327560000000000000000000000000000000000000000000000000000000086526004860161298d565b03816000305af160009181612b0b575b506108b757612abd6124d9565b60206000803e805115612ad257805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612b2d91925060203d8111612b34575b612b2581836105ab565b8101906128d9565b9038612ab0565b503d612b1b565b9190811015612b7c575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612b846126f7565b612b45565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612bee57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612cc781612cad8461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612d62612d13612cf8612ce76040860186612c4c565b6101608060408801528601916128e8565b612d056060860186612c4c565b9085830360608701526128e8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612d5581860186612c4c565b91858403908601526128e8565b91612d736101409182810190612c4c565b9290918185039101526128e8565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612dc4575050505050508460206108b7959685039101526128e8565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612e3f5760019184612e2d9201612c9c565b98602090810196950193019190612da5565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a0820152019061294a565b60405190612e9a8261058f565b60006040838281528260208201520152565b612ec1612ec791612ebb612e8d565b50612f5e565b91612f5e565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612f53575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612f4b575b50808511612f43575b5060405195612f318761058f565b16855216602084015216604082015290565b935038612f23565b925038612f1a565b815181169350612eea565b612f66612e8d565b5065ffffffffffff808260a01c168015612fb2575b60405192612f888461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612f7b565b9060206108b792818152019061294a565b9291925a903033036130735782518151613000575b50506108b793612ffa915a9003608084015101933691610682565b90615101565b5161302b916130279173ffffffffffffffffffffffffffffffffffffffff16905a916130d1565b1590565b613036573880612fdf565b610a3f6130416130e3565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301612fb9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d61080080821161310a575b50604051906020818301016040528082526000602083013e90565b9050386130ef565b6131286131226040830183612888565b90613256565b906131396131226060830183612888565b906131ef61314e613122610120840184612888565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b5190206040805160208101928352309181019190915246606082015260809283018152909161325090826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff82111761328c575b60405260006020838281520152565b613294610505565b61327d565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090358181169392601481106132dc57505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a0820152019061294a565b929461339d61044d9561338b610100959998613379613365602097610140808c528b01906132eb565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61341761044d946134056133f060a0959998969960e0865260e08601906132eb565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff613446613261565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b79381815201916128e8565b7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff16806108b75750737fc98430eaedbb6070b35b39d79872504908834890565b9061352873ffffffffffffffffffffffffffffffffffffffff916108b7979596946060855260608501916128e8565b9416602082015260408185039101526128e8565b60009060033d1161354957565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135d6578184019485519384116135de573d850101602084870101116135d657506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b79260008152816020820152019061294a565b61360c6040820182612888565b61362461361884612bdd565b93610120810190612888565b9290303b15610359576000936136689160405196879586957f957122ab000000000000000000000000000000000000000000000000000000008752600487016134f9565b0381305afa90816136f1575b5061044d57600161368361353c565b6308c379a01461369c575b61369457565b61044d612a43565b6136a461355a565b806136b0575b5061368e565b805160009250156136aa57610a3f906040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b8061112d6136fe9261057b565b38613674565b9291906137109061374c565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab15761373f9061374c565b9116610a43576109b35750565b80156137e65761375b90612f5e565b7f182d361d27e8fee91541f8630840b9272bdb770c7bb6239b09cd74563c40534154806137cb575073ffffffffffffffffffffffffffffffffffffffff425b65ffffffffffff908160408501511681119182156137bb575b505091511691565b60208501511611905038806137b3565b73ffffffffffffffffffffffffffffffffffffffff9061379a565b50600090600090565b156137f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138678282613d37565b61387081613112565b60208401526138ae6effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137ef565b6138b782613df9565b6138c2818584613ed1565b97906138f36130276138e8875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c62565b6139ef5761390043600052565b73ffffffffffffffffffffffffffffffffffffffff61393860a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139d5575b505a810360a0840135106139685760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139e69297508584614bc9565b9590923861393e565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a6f8184613d37565b613a7883613112565b6020850152613ab66effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137ef565b613abf81613df9565b613acb8186868b61423d565b9890613afc613027613af1865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c62565b613bf457613b0943600052565b73ffffffffffffffffffffffffffffffffffffffff613b4160a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bd9575b505a840360a086013510613b735750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613beb929850868685614e5c565b96909138613b47565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613cbe8260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ccb84611e82565b9055161490565b15613cd957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613da990613d61613d4782612bdd565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190612888565b908115613dee57613dd361143161142b8460a094613dce601461044d99981015613cd2565b613299565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e3b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613e1e565b613e5c60409295949395606083526060830190612c9c565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b810103600f8101855201836105ab565b6040906108b793928152816020820152019061294a565b916000926000925a93613f9f6020835193613f00855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f18613f116040830183612888565b90846144a8565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f3d43600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141d5575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e44565b03938a1690f18291816141b5575b506141ac5750600190613fbe61353c565b6308c379a014614158575b506140eb575b613fdc575b50505a900391565b6140069073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614021610c2582546dffffffffffffffffffffffffffff1690565b80831161407e57614077926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fd4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61416061355a565b908161416c5750613fc9565b610a3f9161417a9150613e66565b6040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b9550613fcf9050565b6141ce91925060203d8111612b3457612b2581836105ab565b9038613fad565b945061421b610c256142078c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b8111156142325750856060835b96915050613f60565b606087918d03614229565b90926000936000935a94614286602083519361426d855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f1861427e6040830183612888565b90848c6147af565b03938a1690f1829181614488575b5061447f57506001906142a561353c565b6308c379a014614429575b506143bb575b6142c4575b5050505a900391565b6142ee9073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161430a610c2584546dffffffffffffffffffffffffffff1690565b90818311614355575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff161790553880806142bb565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61443161355a565b908161443d57506142b0565b86916144499150613e66565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613eba565b96506142b69050565b6144a191925060203d8111612b3457612b2581836105ab565b9038614294565b9091806144b457505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b61474257600060206144e6610ea4610ea46134a3565b606086510151604051809481937f570e1a36000000000000000000000000000000000000000000000000000000008352826145258a8a60048401613492565b0393f1908115614735575b600091614717575b5073ffffffffffffffffffffffffffffffffffffffff8082169586156146aa571680950361463d573b156145d05761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361459793613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61472f915060203d81116116395761162a81836105ab565b38614538565b61473d612a43565b614530565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147be575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614a4f57600060206147f0610ea4610ea46134a3565b606087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261482f8b8b60048401613492565b0393f1908115614a42575b600091614a24575b5073ffffffffffffffffffffffffffffffffffffffff8082169687156149b65716809603614948573b156148e2575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936148a293613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147b8565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614a3c915060203d81116116395761162a81836105ab565b38614842565b614a4a612a43565b61483a565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614abc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614b5183610639565b91614b5f60405193846105ab565b8383526020848301011161035957602092614b7f91848085019101612927565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b939192606094600094600093805192614c0860a08a86015195614bed888811614ab5565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614c338373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614c4f610c2587546dffffffffffffffffffffffffffff1690565b96858810614def5773ffffffffffffffffffffffffffffffffffffffff60208a9894614cc58a966dffffffffffffffffffffffffffff8b614cfe9e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e44565b0395169103f1908183918493614dc9575b50614dc2575050600190614d2161353c565b6308c379a014614da0575b50614d3357565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614da861355a565b9081614db45750614d2c565b610a3f9161417a9150614b85565b9450925050565b909250614de891503d8085833e614de081836105ab565b810190614b1a565b9138614d0f565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614e8360a08b84015193614bed848611614ab5565b93614eae8573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614ec9610c2582546dffffffffffffffffffffffffffff1690565b878110615024579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614cc58a966dffffffffffffffffffffffffffff8d614f439e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615006575b50614ffe575050600190614f6661353c565b6308c379a014614fdf575b50614f795750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b614fe761355a565b9081614ff35750614f71565b614449925050614b85565b955093505050565b90925061501d91503d8085833e614de081836105ab565b9138614f54565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b9291906150b06040916000865260606020870152606086019061294a565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f702072657665727465640000000000000000000000006080820152816040820152019061294a565b9291905a93805190615112826153db565b9260a0830194615136865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9281841691826152a257505050615176845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a90030193840296604083019288845110615235576151be6020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611f42565b01519261523060206152026151e7845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b999181516152b2575b5050615178565b606087015191813b15610359576153009289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615092565b0393f190816153c8575b506153c1576153176124d9565b80511561535457610a3f906040519182917f65c8fd4d000000000000000000000000000000000000000000000000000000008352600483016150b5565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b38806152ab565b8061112d6153d59261057b565b3861530a565b60e060c082015191015180821461542f577f59e3bb5c9eacf8e7a9c3802366751badc68d4d97d3e35b1744045784c52f20dd5480615429575048905b0180821015615424575090565b905090565b90615417565b509056fea2646970667358221220684f3682aa746ce7e00b461215a0d96e4353263a4da4aa7cd01807f962b9636764736f6c63430008110033", "sourceMap": "1235:33115:17:-:0;;;;;;;1716:1:12;1821:22;1716:1;1235:33115:17;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x60806040526004361015610023575b361561001957600080fd5b610021611ebc565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611d9c565b61000e565b5061010c611b84565b5061010c611a1c565b5061010c611883565b5061010c611705565b5061010c6116c6565b5061010c6116a5565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d811515612033565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b1115612098565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611f2d565b966102a48815156120fd565b6102b081891115612162565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b6121c7565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611e82565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091612fca565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d482939261268a565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a576100218585612797565b90919360019061093f61092e878987612749565b6109388886612727565b5190612a50565b0194019190610909565b61097461096d61095b83859795612727565b51610967848987612749565b84613a5c565b919061374c565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061374c565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c61256e565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc56124d9565b5061257b565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e15915061268a565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612797565b610ee8610e9282848a612b3b565b610ebd610ea4610ea460208401612bdd565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612b89565b906000915b808310610f0557505050610f0090611e82565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b612749565b918d612727565b90611f2d565b99611e82565b95611e82565b9190610eed565b610f50818688612b3b565b6020610f68610f5f8380612b89565b92909301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611e82565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d612727565b51610fc58c8b8a612749565b85613a5c565b908b613704565b611e82565b929190610f84565b610fea828587612b3b565b90610ff58280612b89565b92611005610ea460208301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612be7565b61104b575b5050506110459161103f91611f2d565b91611e82565b90610e04565b9095926110646040999693999895989788810190612888565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612d81565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613299565b906132a7565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff8111610359576115cc602061157360249336906004016106b9565b73ffffffffffffffffffffffffffffffffffffffff9291836115936134a3565b169060006040518097819582947f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613492565b03925af1918215611640575b600092611610575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b61163291925060203d8111611639575b61162a81836105ab565b81019061347d565b90386115e0565b503d611620565b611648612a43565b6115d8565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b79160040161164d565b50346103595760206116be6116b93661165c565b613112565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561170081610422565b611ec1565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611880573381528060205260408120600181019063ffffffff825416908115611822576117bf6117846117e793611776611771855460ff9060701c1690565b61232b565b65ffffffffffff4216612390565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576004356118bf81610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119013373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b926119b9611924610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119308615156123aa565b6119916001820161196965ffffffffffff611955835465ffffffffffff9060201c1690565b1661196181151561240f565b421015612474565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a166124d9565b50612509565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611a6d90369060040161164d565b60243591611a7a83610422565b60443590811161035957611a95610a3f9136906004016106b9565b611a9d612607565b611aa6856135ff565b611ab9611ab38287613854565b90612eac565b94611ac982600092438452612a50565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611b50575b505050506080015193611b1d6040611b0f602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612e51565b83955083949650611b6a6040949293945180948193612e43565b03925af1906080611b796124d9565b929190388080611aee565b503461035957611b933661165c565b611b9b612607565b611ba4826135ff565b611bae8183613854565b825160a00151919391611bdb9073ffffffffffffffffffffffffffffffffffffffff16613428565b613428565b90611bff611bd6855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c08613261565b50611c37611c1b60409586810190612888565b90600060148310611d94575061142b611bd69261143192613299565b91611c4191612eac565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611c969065ffffffffffff1690565b91015165ffffffffffff16916060015192611caf6105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611d8b575b50611d205750610a3f92519485947fe0cff05f000000000000000000000000000000000000000000000000000000008652600486016133ce565b9190610a3f93611d2f84613428565b611d56611d3a610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e40000000000000000000000000000000000000000000000000000000087526004870161333c565b90501538611ce6565b915050613428565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611ded81610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611eb0570190565b611eb8611e52565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611ee13482611f42565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611f3a57565b61044d611e52565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff80825416928301809311612026575b808311611fc85761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b61202e611e52565b611f83565b1561203a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561209f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561210457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b1561216957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d946122276dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b1561233257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611f3a57565b156123b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561241657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b1561247b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d15612504573d906124ea82610639565b916124f860405193846105ab565b82523d6000602084013e565b606090565b1561251057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611f3a57565b1561258257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff81116125fa575b60051b0190565b612602610505565b6125f3565b6040519061261482610535565b604051608083610100830167ffffffffffffffff81118482101761267d575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b612685610505565b612633565b90612694826125e0565b6126a160405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126cf82946125e0565b019060005b8281106126e057505050565b6020906126eb612607565b828285010152016126d4565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602091815181101561273c575b60051b010190565b6127446126f7565b612734565b919081101561278a575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b6127926126f7565b612753565b73ffffffffffffffffffffffffffffffffffffffff16801561282a57600080809381935af16127c46124d9565b50156127cc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b83811061293a5750506000910152565b818101518382015260200161292a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361298681518092818752878088019101612927565b0116010190565b906129a76080916108b796946101c08086528501916128e8565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261294a565b506040513d6000823e3d90fd5b612aa0602091612a696060850151916060810190612888565b92909160405195869485947f1d7327560000000000000000000000000000000000000000000000000000000086526004860161298d565b03816000305af160009181612b0b575b506108b757612abd6124d9565b60206000803e805115612ad257805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612b2d91925060203d8111612b34575b612b2581836105ab565b8101906128d9565b9038612ab0565b503d612b1b565b9190811015612b7c575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612b846126f7565b612b45565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612bee57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612cc781612cad8461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612d62612d13612cf8612ce76040860186612c4c565b6101608060408801528601916128e8565b612d056060860186612c4c565b9085830360608701526128e8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612d5581860186612c4c565b91858403908601526128e8565b91612d736101409182810190612c4c565b9290918185039101526128e8565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612dc4575050505050508460206108b7959685039101526128e8565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612e3f5760019184612e2d9201612c9c565b98602090810196950193019190612da5565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a0820152019061294a565b60405190612e9a8261058f565b60006040838281528260208201520152565b612ec1612ec791612ebb612e8d565b50612f5e565b91612f5e565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612f53575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612f4b575b50808511612f43575b5060405195612f318761058f565b16855216602084015216604082015290565b935038612f23565b925038612f1a565b815181169350612eea565b612f66612e8d565b5065ffffffffffff808260a01c168015612fb2575b60405192612f888461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612f7b565b9060206108b792818152019061294a565b9291925a903033036130735782518151613000575b50506108b793612ffa915a9003608084015101933691610682565b90615101565b5161302b916130279173ffffffffffffffffffffffffffffffffffffffff16905a916130d1565b1590565b613036573880612fdf565b610a3f6130416130e3565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301612fb9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d61080080821161310a575b50604051906020818301016040528082526000602083013e90565b9050386130ef565b6131286131226040830183612888565b90613256565b906131396131226060830183612888565b906131ef61314e613122610120840184612888565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b5190206040805160208101928352309181019190915246606082015260809283018152909161325090826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff82111761328c575b60405260006020838281520152565b613294610505565b61327d565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090358181169392601481106132dc57505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a0820152019061294a565b929461339d61044d9561338b610100959998613379613365602097610140808c528b01906132eb565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61341761044d946134056133f060a0959998969960e0865260e08601906132eb565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff613446613261565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b79381815201916128e8565b7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff16806108b75750737fc98430eaedbb6070b35b39d79872504908834890565b9061352873ffffffffffffffffffffffffffffffffffffffff916108b7979596946060855260608501916128e8565b9416602082015260408185039101526128e8565b60009060033d1161354957565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135d6578184019485519384116135de573d850101602084870101116135d657506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b79260008152816020820152019061294a565b61360c6040820182612888565b61362461361884612bdd565b93610120810190612888565b9290303b15610359576000936136689160405196879586957f957122ab000000000000000000000000000000000000000000000000000000008752600487016134f9565b0381305afa90816136f1575b5061044d57600161368361353c565b6308c379a01461369c575b61369457565b61044d612a43565b6136a461355a565b806136b0575b5061368e565b805160009250156136aa57610a3f906040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b8061112d6136fe9261057b565b38613674565b9291906137109061374c565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab15761373f9061374c565b9116610a43576109b35750565b80156137e65761375b90612f5e565b7f182d361d27e8fee91541f8630840b9272bdb770c7bb6239b09cd74563c40534154806137cb575073ffffffffffffffffffffffffffffffffffffffff425b65ffffffffffff908160408501511681119182156137bb575b505091511691565b60208501511611905038806137b3565b73ffffffffffffffffffffffffffffffffffffffff9061379a565b50600090600090565b156137f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138678282613d37565b61387081613112565b60208401526138ae6effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137ef565b6138b782613df9565b6138c2818584613ed1565b97906138f36130276138e8875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c62565b6139ef5761390043600052565b73ffffffffffffffffffffffffffffffffffffffff61393860a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139d5575b505a810360a0840135106139685760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139e69297508584614bc9565b9590923861393e565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a6f8184613d37565b613a7883613112565b6020850152613ab66effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137ef565b613abf81613df9565b613acb8186868b61423d565b9890613afc613027613af1865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c62565b613bf457613b0943600052565b73ffffffffffffffffffffffffffffffffffffffff613b4160a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bd9575b505a840360a086013510613b735750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613beb929850868685614e5c565b96909138613b47565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613cbe8260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ccb84611e82565b9055161490565b15613cd957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613da990613d61613d4782612bdd565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190612888565b908115613dee57613dd361143161142b8460a094613dce601461044d99981015613cd2565b613299565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e3b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613e1e565b613e5c60409295949395606083526060830190612c9c565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b810103600f8101855201836105ab565b6040906108b793928152816020820152019061294a565b916000926000925a93613f9f6020835193613f00855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f18613f116040830183612888565b90846144a8565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f3d43600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141d5575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e44565b03938a1690f18291816141b5575b506141ac5750600190613fbe61353c565b6308c379a014614158575b506140eb575b613fdc575b50505a900391565b6140069073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614021610c2582546dffffffffffffffffffffffffffff1690565b80831161407e57614077926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fd4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61416061355a565b908161416c5750613fc9565b610a3f9161417a9150613e66565b6040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b9550613fcf9050565b6141ce91925060203d8111612b3457612b2581836105ab565b9038613fad565b945061421b610c256142078c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b8111156142325750856060835b96915050613f60565b606087918d03614229565b90926000936000935a94614286602083519361426d855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f1861427e6040830183612888565b90848c6147af565b03938a1690f1829181614488575b5061447f57506001906142a561353c565b6308c379a014614429575b506143bb575b6142c4575b5050505a900391565b6142ee9073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161430a610c2584546dffffffffffffffffffffffffffff1690565b90818311614355575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff161790553880806142bb565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61443161355a565b908161443d57506142b0565b86916144499150613e66565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613eba565b96506142b69050565b6144a191925060203d8111612b3457612b2581836105ab565b9038614294565b9091806144b457505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b61474257600060206144e6610ea4610ea46134a3565b606086510151604051809481937f570e1a36000000000000000000000000000000000000000000000000000000008352826145258a8a60048401613492565b0393f1908115614735575b600091614717575b5073ffffffffffffffffffffffffffffffffffffffff8082169586156146aa571680950361463d573b156145d05761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361459793613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61472f915060203d81116116395761162a81836105ab565b38614538565b61473d612a43565b614530565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147be575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614a4f57600060206147f0610ea4610ea46134a3565b606087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261482f8b8b60048401613492565b0393f1908115614a42575b600091614a24575b5073ffffffffffffffffffffffffffffffffffffffff8082169687156149b65716809603614948573b156148e2575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936148a293613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147b8565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614a3c915060203d81116116395761162a81836105ab565b38614842565b614a4a612a43565b61483a565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614abc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614b5183610639565b91614b5f60405193846105ab565b8383526020848301011161035957602092614b7f91848085019101612927565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b939192606094600094600093805192614c0860a08a86015195614bed888811614ab5565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614c338373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614c4f610c2587546dffffffffffffffffffffffffffff1690565b96858810614def5773ffffffffffffffffffffffffffffffffffffffff60208a9894614cc58a966dffffffffffffffffffffffffffff8b614cfe9e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e44565b0395169103f1908183918493614dc9575b50614dc2575050600190614d2161353c565b6308c379a014614da0575b50614d3357565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614da861355a565b9081614db45750614d2c565b610a3f9161417a9150614b85565b9450925050565b909250614de891503d8085833e614de081836105ab565b810190614b1a565b9138614d0f565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614e8360a08b84015193614bed848611614ab5565b93614eae8573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614ec9610c2582546dffffffffffffffffffffffffffff1690565b878110615024579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614cc58a966dffffffffffffffffffffffffffff8d614f439e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615006575b50614ffe575050600190614f6661353c565b6308c379a014614fdf575b50614f795750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b614fe761355a565b9081614ff35750614f71565b614449925050614b85565b955093505050565b90925061501d91503d8085833e614de081836105ab565b9138614f54565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b9291906150b06040916000865260606020870152606086019061294a565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f702072657665727465640000000000000000000000006080820152816040820152019061294a565b9291905a93805190615112826153db565b9260a0830194615136865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9281841691826152a257505050615176845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a90030193840296604083019288845110615235576151be6020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611f42565b01519261523060206152026151e7845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b999181516152b2575b5050615178565b606087015191813b15610359576153009289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615092565b0393f190816153c8575b506153c1576153176124d9565b80511561535457610a3f906040519182917f65c8fd4d000000000000000000000000000000000000000000000000000000008352600483016150b5565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b38806152ab565b8061112d6153d59261057b565b3861530a565b60e060c082015191015180821461542f577f59e3bb5c9eacf8e7a9c3802366751badc68d4d97d3e35b1744045784c52f20dd5480615429575048905b0180821015615424575090565b905090565b90615417565b509056fea2646970667358221220684f3682aa746ce7e00b461215a0d96e4353263a4da4aa7cd01807f962b9636764736f6c63430008110033", "sourceMap": "1235:33115:17:-:0;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2684:47:3;;2169:10;2258:80;2160:20;2169:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;2160:20:3;2198:19;2190:58;2198:19;;;2190:58;:::i;:::-;2266:39;1235:33115:17;2285:20:3;;;1235:33115:17;;;;;;;;;;2266:39:3;-1:-1:-1;2266:39:3;2258:80;:::i;:::-;1235:33115:17;;;;2377:9:3;2532:137;2364:22;2377:9;1235:33115:17;;;;;2364:22:3;:::i;:::-;2404:9;2396:40;2404:9;;;2396:40;:::i;:::-;2446:53;2454:26;;;;2446:53;:::i;:::-;2532:137;1235:33115:17;;;:::i;:::-;;;2532:137:3;1235:33115:17;;;;;;2532:137:3;2285:20;1235:33115:17;2532:137:3;;1235:33115:17;;;;;2532:137:3;;;1235:33115:17;;2532:137:3;1235:33115:17;;;2532:137:3;;;1235:33115:17;;2532:137:3;;;1235:33115:17;2509:20:3;2169:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;2509:20:3;1235:33115:17;:::i;:::-;2532:137:3;1235:33115:17;;;;;;;;;;;;;2169:10:3;;1235:33115:17;;;;;;;2684:47:3;;;;1235:33115:17;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;848:36:1;868:10;;-1:-1:-1;1235:33115:17;848:19:1;1235:33115:17;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;848:36:1;:38;1235:33115:17;;848:38:1;:::i;:::-;1235:33115:17;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;268:74:1;1235:33115:17;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;268:74:1;1235:33115:17;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;268:74:1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;16366:15;1235:33115;;16366:15;1235:33115;;;;;;;;;;;16366:15;1235:33115;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;5767:24;;;;;:::i;:::-;5843:1;5846:10;;;;;;6165:21;5843:1;6205:17;;;;;6242:13;6237:120;6257:10;;;;;;6396:9;;;;:::i;6269:3::-;6323:6;;;1235:33115;6323:6;1235:33115;6323:6;;;;;:::i;:::-;6331:10;;;;:::i;:::-;;1235:33115;;:::i;:::-;;6269:3;1235:33115;6242:13;;;;5858:3;25287:34;5989:38;5908:10;;;;;;:::i;:::-;;6012:6;;;;;:::i;:::-;5989:38;;:::i;:::-;25287:34;;;:::i;:::-;1235:33115;;;;;25331:111;;25451:96;;25847:43;;;:::i;:::-;1235:33115;;25900:105;;26014:106;;1235:33115;;5831:13;;;;;26014:106;1235:33115;;;26055:54;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;26055:54;;;;;25900:105;25953:41;1235:33115;;;25953:41;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;25451:96;25492:44;1235:33115;;;25492:44;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;25331:111;25390:41;1235:33115;;;25390:41;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;4450:10:3;;1235:33115:17;;;;;;;;;;;;4479:30:3;;;;1235:33115:17;;4572:29:3;;1235:33115:17;4572:29:3;;;4549:53;4572:29;;4564:38;4572:29;;;4757:38;4572:29;;:::i;:::-;1235:33115:17;;;;4564:38:3;1235:33115:17;;;;;;;;;;4549:53:3;1235:33115:17;;;;;;;;;;;;;;4450:10:3;;4617:54;;;1235:33115:17;4699:48:3;;;;:::i;:::-;;4757:38;:::i;:::-;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;462:19:1;1235:33115:17;;462:32:1;1235:33115:17;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;462:32:1;1235:33115:17;;;;;;;;462:55:1;1235:33115:17;;;;;;;;;;;:::i;:::-;6902:1;6918:13;6933:11;;;;;;7684:26;;;;:::i;:::-;7726:17;6902:1;7726:17;;6902:1;7788:13;7803:11;;;;;;8531;;6902:1;8500:21;8557:13;;8572:11;;;;;;9098:9;9024:38;;6902:1;8678:51;9024:38;;;9098:9;:::i;8585:3::-;8774:11;8640:19;;;;;:::i;:::-;8678:51;8705:23;8713:14;7115;8713;;;:::i;:::-;1235:33115;;;;8678:51;;6902:1;8678:51;;8774:11;;:::i;:::-;8846:13;6902:1;8841:159;8861:10;;;;;;8585:3;;;;;;:::i;:::-;8557:13;;8873:3;8933:6;;;;8976:9;8896:62;8873:3;8933:6;8896:62;8933:6;8941:16;8933:6;;;;;:::i;:::-;8941:16;;;:::i;8896:62::-;;;:::i;:::-;8976:9;;:::i;:::-;8873:3;;:::i;:::-;8846:13;;;;7816:3;7871:19;;;;;:::i;:::-;7115:14;7985;7935:11;;;;:::i;:::-;7985:14;;;;;:::i;:::-;8060:13;1235:33115;6902:1;1235:33115;;8055:425;8075:10;;;;;;7816:3;;;;;;;:::i;:::-;7788:13;;8087:3;8137:16;;;;8456:9;8137:16;8401:19;8137:16;8231:44;8137:16;8087:3;8137:16;;;:::i;:::-;;8260:6;;;;;:::i;:::-;8231:44;;:::i;:::-;8401:19;;;:::i;:::-;8456:9;:::i;8087:3::-;8060:13;;;;;6946:3;7001:19;;;;;:::i;:::-;7065:11;;;;;:::i;:::-;7115:14;7216:19;7115:14;;;;;:::i;7216:19::-;1235:33115;;;;7208:69;7247:1;7216:33;;;7208:69;:::i;:::-;7292:305;;6946:3;7611:22;;;6946:3;7611:22;;;;:::i;:::-;6946:3;;:::i;:::-;6918:13;;;7292:305;7449:13;;;;;;;;;;;;;;;;;;:::i;:::-;7414:49;;;;;;;1235:33115;;;;;;7414:49;;;;;1235:33115;7414:49;;1235:33115;7414:49;;;;;;;;:::i;:::-;;;;;6902:1;7414:49;;;;;;7292:305;-1:-1:-1;7410:173:17;;1235:33115;;7518:46;;;1235:33115;;;7518:46;;;1235:33115;;;;;;;26055:54;;;7410:173;;;-1:-1:-1;7410:173:17;;-1:-1:-1;7410:173:17;;-1:-1:-1;7410:173:17;;7611:22;6946:3;7292:305;;7414:49;;;;;;:::i;:::-;;;:::i;:::-;;;;1235:33115;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1235:33115:17;-1:-1:-1;1235:33115:17;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1926:1;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20582:20;;;;:47;;;;1235:33115;20578:182;;;20800:2;20773:29;;;20769:308;;1235:33115;21111:10;1235:33115;;;21111:10;;;;;;;;1235:33115;;;;;;;;;;;;;20769:308;20854:22;20838:40;20854:22;20846:31;20854:22;;:::i;:::-;20846:31;;:::i;:::-;1235:33115;;;;20838:40;20896:21;:26;20892:175;;20769:308;;;;20892:175;21015:37;1235:33115;;;21015:37;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;20578:182;20714:35;1235:33115;;;20714:35;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;20582:47;20606:18;;;:23;20582:47;;;1235:33115;;;;;;;;;;;;;;;;;;;19730:45;1235:33115;;;;;;;;;:::i;:::-;;;;19658:45;;;:::i;:::-;1235:33115;;-1:-1:-1;1235:33115:17;;19730:45;;;;;;1235:33115;19730:45;;1235:33115;19730:45;;;:::i;:::-;;;;;;;;;;1235:33115;-1:-1:-1;19730:45:17;;;1235:33115;;;;19793:27;;;;1235:33115;;19793:27;;1235:33115;19793:27;19730:45;;;;;1235:33115;19730:45;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;1235:33115;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;2955:10:3;1235:33115:17;;;;;;;;2984:20:3;;;1235:33115:17;;;;;2984:25:3;;;1235:33115:17;;3163:32:3;3107:46;3205:19;1235:33115:17;3034:41:3;1235:33115:17;;;;;;;;;;;3034:41:3;:::i;:::-;1235:33115:17;3114:15:3;1235:33115:17;3107:46:3;:::i;:::-;1235:33115:17;;;;;;;;;;;;;;;3163:32:3;1235:33115:17;;;;;;;3205:19:3;1235:33115:17;;;;;;;;;2955:10:3;;3239:39;;1235:33115:17;;3239:39:3;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4091:44:3;1235:33115:17;3593:20:3;3602:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;3593:20:3;1235:33115:17;3935:14:3;3623:26;1235:33115:17;;;;;;;;;;3623:26:3;3667:9;3659:42;3667:9;;;3659:42;:::i;:::-;3904:21;3719:17;;;3784:76;1235:33115:17;;;;;;;;;;;;;3711:63:3;3719:21;;;3711:63;:::i;:::-;3813:15;-1:-1:-1;3792:36:3;3784:76;:::i;:::-;1235:33115:17;;;;;;;3904:21:3;1235:33115:17;;;;;;;3935:14:3;1235:33115:17;;;;;;;;;;;;;;3602:10:3;;3964:50;;;-1:-1:-1;1235:33115:17;;;;;;;;4042:39:3;;;;:::i;:::-;;4091:44;:::i;1235:33115:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9870:101;1235:33115;;;;;;:::i;:::-;;;:::i;:::-;9362:2;;;:::i;:::-;9508:60;9435:34;;;;:::i;:::-;9508:60;;:::i;:::-;-1:-1:-1;9618:29:17;-1:-1:-1;;34290:52:17;;;;9618:29;:::i;:::-;34290:52;;;;9681:18;9709:25;1235:33115;;;;;9744:110;;1235:33115;9886:15;;;;;;1235:33115;9909:15;1235:33115;;;;9909:15;;1235:33115;;;;;;9926:15;;1235:33115;;;;;;;;;9870:101;;;;;;1235:33115;9870:101;;;:::i;9744:110::-;1235:33115;;;;;;;;;;;;;;;;;;;:::i;:::-;9816:27;;;;;9886:15;9816:27;;:::i;:::-;9784:59;9744:110;;;;;;;1235:33115;;;;;;;;:::i;:::-;;;:::i;:::-;15996:6;;;:::i;:::-;16073:41;;;;:::i;:::-;16171:17;;:27;;1235:33115;16171:17;;;16157:42;;1235:33115;;16157:42;:::i;16171:27::-;16157:42;:::i;:::-;16253:17;16239:39;16253:24;:17;;1235:33115;;;;;;16239:39;1235:33115;;;:::i;:::-;;16510:22;16366:15;;;;;;;;:::i;:::-;16413:69;-1:-1:-1;16432:2:17;16413:21;;16432:2;;16453:14;;16437:32;16453:14;16445:23;16453:14;;:::i;16510:22::-;16582:60;;;;:::i;:::-;1235:33115;;;;;;;;16737:1;16715:24;;16804:18;;;;1235:33115;16836:17;;;;1235:33115;16890:15;;;;;1235:33115;;;;;;;;16919:15;;1235:33115;;;16973:23;;;1235:33115;;;;:::i;:::-;;;;16890:15;16780:227;;1235:33115;;;;16780:227;;;1235:33115;;;16973:23;16780:227;;1235:33115;;;16804:18;16780:227;;1235:33115;16171:27;16780:227;;1235:33115;17022:24;;:52;;;;16413:69;17018:305;;;1235:33115;17339:68;1235:33115;;17339:68;;;;;;1235:33115;17339:68;;;:::i;17018:305::-;17166:25;;17213:99;17166:25;;;;:::i;:::-;17134:58;1235:33115;;:::i;:::-;;;;;;;;17134:58;16890:15;17134:58;;1235:33115;;17213:99;;;;;;1235:33115;17213:99;;;:::i;17022:52::-;17050:24;;;17022:52;;;16413:69;;;;16510:22;:::i;1235:33115::-;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1235:33115:17;-1:-1:-1;1235:33115:17;;;;-1:-1:-1;1235:33115:17;;506:47:3;1235:33115:17;;506:47:3;;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;1216:65:3:-;1263:10;;1649:206;1235:33115:17;1649:206:3;1737:9;;;;:::i;:::-;1235:33115:17;;1784:8:3;1235:33115:17;1784:8:3;1235:33115:17;;1816:32:3;1235:33115:17;;;1784:8:3;1235:33115:17;;;;;;;;1816:32:3;1649:206::o;1235:33115:17:-;;;;;;;;;;:::o;:::-;;;:::i;1287:293:3:-;1235:33115:17;;1393:8:3;1235:33115:17;1393:8:3;1235:33115:17;;;1393:8:3;1235:33115:17;;;;;;;;;;;;;;1287:293:3;1479:30;;;1235:33115:17;;1540:33:3;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1235:33115:17;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;2722:278;1235:33115;;2815:25;;1235:33115;;2838:1;2897:35;;;;;;;;;:::i;:::-;;1235:33115;;;2722:278::o;1235:33115::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1235:33115:17;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;3228:1997;3516:52;;3228:1997;3535:15;3480:20;;;1235:33115;3535:15;3480:20;3535:15;;;;:::i;:::-;1235:33115;;;;;3516:52;;;;;1235:33115;3516:52;;;;;;:::i;:::-;;:4;1235:33115;3516:4;:52;;1235:33115;;3516:52;;;3228:1997;-1:-1:-1;3512:1707:17;;3654:1565;;:::i;:::-;3516:52;1235:33115;3733:109;;1235:33115;;4562:18;4558:52;;4625:142;;;3516:52;4625:142;;4558:52;1235:33115;;4589:21;;;1235:33115;3516:52;4589:21;;1235:33115;-1:-1:-1;1235:33115:17;;;;;;26055:54;3516:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1235:33115:17;;;;;;;;;;;;:::o;1392:927:0:-;1571:36;1658:45;1392:927;1235:33115:17;;:::i;:::-;;1571:36:0;:::i;:::-;1658:45;;:::i;:::-;1235:33115:17;;;;;;;1780:24:0;;;1776:95;;1392:927;1235:33115:17;1900:32:0;;;;1962;1900;;;;1235:33115:17;;1962:32:0;;1235:33115:17;;2026:27:0;;1962:32;2026:27;1900:32;2026:27;;1235:33115:17;;2085:27:0;;1235:33115:17;;2127:25:0;;;;2123:56;;1392:927;2193:25;;;;2189:56;;1392:927;1235:33115:17;1962:32:0;1235:33115:17;;;;;:::i;:::-;;;;;1900:32:0;2262:50;;1235:33115:17;;1962:32:0;2262:50;;1235:33115:17;1392:927:0;:::o;2189:56::-;2220:25;-1:-1:-1;2189:56:0;;;2123;2154:25;-1:-1:-1;2123:56:0;;;1776:95;1235:33115:17;;;;;-1:-1:-1;1776:95:0;;904:439;1235:33115:17;;:::i;:::-;;;;;1115:3:0;1235:33115:17;;1133:15:0;;1129:75;;904:439;1235:33115:17;;;;;;:::i;:::-;;;;;;1259:8:0;1235:33115:17;1286:50:0;;;1235:33115:17;;;1286:50:0;;1235:33115:17;904:439:0;:::o;1129:75::-;1164:29;;1129:75;;1695:4:17;;;;;;;;;;;:::i;10744:3392::-;;;;10928:9;10977:4;;10955:10;:27;1235:33115;;11050:14;;1235:33115;;12085:1745;;10744:3392;13893:9;;14069:50;13893:9;1695:4;13893:9;;1695:4;;13905:15;;;1235:33115;;1695:4;;;;:::i;:::-;14069:50;;:::i;12085:1745::-;1235:33115;12815:8;;12495:49;;1235:33115;;12534:9;;12495:49;;:::i;:::-;12815:8;;1235:33115;12815:8;12811:1009;;12085:1745;;;;12811:1009;13280:25;12865:41;;:::i;:::-;1235:33115;;13280:25;;;;;;;;;;:::i;1235:33115::-;;;;;;;;;;;;;;;;;;;;;;;230:263:11;;11050:14:17;230:263:11;;;;385:102;;;;;;;230:263;:::o;1066:436::-;1163:333;1695:4:17;1163:333:11;;;;;1066:436;1163:333;;;;;;;;;;;;;;;;;;;1066:436;:::o;1163:333::-;;;;;;14344:174:17;2762:31:10;2777:15;;;;;;:::i;:::-;2762:31;;:::i;:::-;2841:15;2826:31;2841:15;;;;;;:::i;2826:31::-;3217:23;3259:237;3202:39;3217:23;;;;;;:::i;3202:39::-;2777:15;1235:33115:17;3259:237:10;;;2717:12;3259:237;;3134:27;;;;1235:33115:17;3074:19:10;;;;1235:33115:17;3016:25:10;;;;1235:33115:17;2950:27:10;;;;1235:33115:17;2890:19:10;;;;1235:33115:17;2717:12:10;1235:33115:17;2717:12:10;;;1235:33115:17;1859:39:10;;1235:33115:17;3259:237:10;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:237:10;;;;;;;;;;;;;:::i;:::-;1235:33115:17;3603:23:10;;2777:15;1235:33115:17;;2717:12:10;14455:55:17;;1235:33115;;;14489:4;1235:33115;;;;;;;14496:13;1235:33115;;;;;14455:55;;;;;;;;;1235:33115;14455:55;:::i;:::-;1235:33115;14445:66;;14344:174;:::o;3357:265:0:-;3439:177;;;;;;;3357:265;:::o;1235:33115:17:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;:::o;:::-;;;:::i;:::-;;;;;20800:2;1235:33115;;;;20800:2;1235:33115;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1235:33115:17:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;781:248:3;;1235:33115:17;;;:::i;:::-;;;908:8:3;1235:33115:17;908:8:3;1235:33115:17;;;995:27:3;1235:33115:17;908:8:3;1235:33115:17;;;;;;;;;995:27:3;1235:33115:17;;;972:20:3;;1235:33115:17;781:248:3:o;1235:33115:17:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;1003:226:16:-;317:27;;1235:33115:17;;1163:21:16;1235:33115:17;;1163:59:16;695:42;1003:226;:::o;1235:33115:17:-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;20031:13;1235:33115;;;;;;;;;;:::i;19833:421::-;20014:15;;;;;;:::i;:::-;20046:23;20031:13;;;:::i;:::-;20046:23;;;;;;:::i;:::-;19981:4;;;:89;;;;20031:13;1235:33115;19981:89;1235:33115;20014:15;1235:33115;19981:89;;;;;1235:33115;19981:89;;;;;;:::i;:::-;;:4;;:89;;;;;;19833:421;-1:-1:-1;19977:271:17;;;;;:::i;:::-;;;;;;;;19833:421::o;19977:271::-;;;:::i;:::-;20082:166;;:::i;:::-;;;;19977:271;;;;20082:166;1235:33115;;20031:13;;-1:-1:-1;20136:102:17;20082:166;20136:102;20198:25;1235:33115;20014:15;1235:33115;20198:25;;;;;;19981:89;20198:25;;;:::i;19981:89::-;;;;;;:::i;:::-;;;;25027:1099;;;;25287:34;25027:1099;25287:34;:::i;:::-;1235:33115;;;;;;;;;25335:32;25331:111;;25451:96;;25847:43;;;:::i;:::-;1235:33115;;25900:105;;26014:106;;25027:1099;:::o;26132:523::-;26290:19;;26286:76;;26400:36;;;:::i;:::-;494:28:16;1235:33115:17;2434:14:16;;;2451:15;1235:33115:17;2451:15:16;2434:44;1235:33115:17;26559:15;;;;;1235:33115;;26542:32;;:68;;;;;2434:44:16;26525:85:17;;1235:33115;;;26132:523;:::o;26542:68::-;26595:15;;;1235:33115;;-1:-1:-1;;;26542:68:17;;;;2434:44:16;1235:33115:17;2434:44:16;;;26286:76:17;26325:26;26308:1;26325:26;26308:1;26325:26;:::o;1235:33115::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;27012:2125;;-1:-1:-1;27239:9:17;;27288:17;;;27343:7;;;;;:::i;:::-;27384:21;;;:::i;:::-;27361:20;;;1235:33115;27745:70;1235:33115;27591:26;;;1235:33115;27620:28;;;1235:33115;27591:57;27651:20;;;1235:33115;27591:80;27708:27;;;1235:33115;27686:19;;;;1235:33115;27591:114;:144;27753:33;;27745:70;:::i;:::-;27906:28;;;:::i;:::-;28011:71;;;;;:::i;:::-;27944:138;;28097:55;28098:54;1235:33115;;;;;;;;27361:20;28138:13;;1235:33115;28098:54;;:::i;28097:55::-;28093:140;;;34290:52;;;34242:106;28093:140;1235:33115;;28468:17;27620:28;28468:17;;1235:33115;;;;;;;28464:238;;27012:2125;28762:9;;1695:4;;28468:17;28790:27;;1235:33115;28790:37;28786:134;;27591:26;28933:17;29095:25;28933:17;27651:20;28933:17;;1235:33115;27620:28;28982:23;;1235:33115;29083:9;1695:4;;29095:25;;1235:33115;;29053:18;;1235:33115;27012:2125::o;28786:134::-;27651:20;1235:33115;28854:51;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;28464:238;28552:139;;;;;;;;;;;:::i;:::-;28515:176;;28464:238;;;;28093:140;27651:20;1235:33115;28175:47;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;27012:2125;;;;1235:33115;27239:9;;27288:17;;27343:7;;;;:::i;:::-;27384:21;;;:::i;:::-;27361:20;;;1235:33115;27745:70;1235:33115;27591:26;;;1235:33115;27620:28;;;1235:33115;27591:57;27651:20;;;1235:33115;27591:80;27708:27;;;1235:33115;27686:19;;;;1235:33115;27591:114;:144;27753:33;;27745:70;:::i;:::-;27906:28;;;:::i;:::-;28011:71;;;;;;:::i;:::-;27944:138;;28097:55;28098:54;1235:33115;;;;;;;;27361:20;28138:13;;1235:33115;28098:54;;:::i;28097:55::-;28093:140;;;34290:52;;;34242:106;28093:140;1235:33115;;28468:17;27620:28;28468:17;;1235:33115;;;;;;;28464:238;;27012:2125;28762:9;;1695:4;;28468:17;28790:27;;1235:33115;28790:37;28786:134;;-1:-1:-1;27651:20:17;28933:17;;1235:33115;27620:28;28982:23;;1235:33115;27591:26;;28933:17;29095:25;;29083:9;1695:4;;29095:25;;1235:33115;;29053:18;;1235:33115;27012:2125::o;28786:134::-;27651:20;1235:33115;;28854:51;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;28464:238;28552:139;;;;;;;;;;;;:::i;:::-;28515:176;;28464:238;;;;28093:140;28175:47;1235:33115;27651:20;1235:33115;28175:47;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;1008:234:1;1235:33115:17;;-1:-1:-1;1235:33115:17;1194:19:1;1235:33115:17;;;1194:32:1;1235:33115:17;1138:2:1;1235:33115:17;1138:2:1;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;1194:32:1;1235:33115:17;;;1194:34:1;;;;:::i;:::-;1235:33115:17;;;1194:41:1;1008:234;:::o;1235:33115:17:-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14613:831;15142:23;14613:831;14726:30;14743:13;;;:::i;:::-;1235:33115;;;;;14726:30;14782:12;;;1235:33115;14782:12;14766:13;;1235:33115;14827:19;;;1235:33115;14804:20;;;1235:33115;14887:27;;;1235:33115;14856:28;;;1235:33115;14953:25;;;1235:33115;14827:19;14924:26;;1235:33115;15011:19;;;1235:33115;14953:25;14988:20;;1235:33115;15071:27;;;1235:33115;15011:19;15040:28;;1235:33115;15142:23;;;;;:::i;:::-;15179:27;;;;;15327:39;15335:30;15343:21;15230:29;14887:27;15230:29;15222:71;15257:2;15307:59;15230:29;;;;15222:71;:::i;:::-;15343:21;:::i;15327:39::-;1235:33115;;15307:17;;1235:33115;;15175:263;15397:17;;14887:27;1235:33115;15397:17;;1235:33115;14613:831::o;17420:579::-;17754:17;;;1235:33115;;;17754:31;:39;;17962:20;17788:1;17754:39;1235:33115;17829:20;;;1235:33115;;;17852:28;;;1235:33115;;;17889:26;;;1235:33115;;17962:20;;1235:33115;;17420:579;:::o;17754:39::-;17962:20;17792:1;17754:39;;1235:33115;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;21334:1772::-;;-1:-1:-1;21565:22:17;-1:-1:-1;21640:9:17;;21693:14;22154:140;22242:17;21693:14;;1235:33115;;;;;;;;;21805:11;;;;;;;;:::i;:::-;;;;:::i;:::-;21851:17;;;1235:33115;;;21831:37;;34290:52;;;34242:106;21831:37;21910:31;;1235:33115;;;;;21959:23;21955:182;;;;21334:1772;22191:28;;1235:33115;22242:17;;;1235:33115;21805:11;1235:33115;;22154:140;;1235:33115;;;;;;;;22154:140;;;;:::i;:::-;;1235:33115;;;22154:140;;;;;;;21334:1772;-1:-1:-1;22150:480:17;;;;;;;:::i;:::-;;;;;;;;;;22643:378;;22150:480;23080:9;;;1695:4;;21334:1772;:::o;22643:378::-;22723:16;;1235:33115;;;;;;;;;;;;22723:16;22757:36;1235:33115;;;;;;;22757:36;22815:25;;;22811:123;;22951:55;1695:4;1235:33115;1695:4;;1235:33115;;;;;;;;;;;22951:55;22643:378;;;;22811:123;21805:11;1235:33115;22871:44;;;;;22154:140;22871:44;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;22150:480;21805:11;1235:33115;22572:43;;;;;22154:140;22572:43;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;22150:480;22395:145;;:::i;:::-;;;;;22150:480;;;22395:145;22460:65;22395:145;22478:46;22395:145;22478:46;;:::i;:::-;21805:11;1235:33115;22460:65;;;;;;22154:140;22460:65;;;:::i;22150:480::-;22347:32;-1:-1:-1;22150:480:17;;-1:-1:-1;22150:480:17;22154:140;;;;;22242:17;22154:140;;;;;;;;;:::i;:::-;;;;;21955:182;1178:17:3;;1171:32;1178:25;:17;;1235:33115:17;;;;;;;;;;;;1178:17:3;1235:33115:17;;;;;1171:32:3;22073:21:17;;;;;;:49;;22191:28;22073:49;;21955:182;;;;;;22073:49;22191:28;1695:4;;;;22073:49;;21334:1772;;;1235:33115;21565:22;1235:33115;21640:9;;21693:14;22154:140;22242:17;21693:14;;1235:33115;;;;;;;;;21805:11;;;;;;;;:::i;:::-;;;;;:::i;22154:140::-;;1235:33115;;;22154:140;;;;;;;21334:1772;-1:-1:-1;22150:480:17;;;;;;;:::i;:::-;;;;;;;;;;22643:378;;22150:480;23080:9;;;;1695:4;;21334:1772;:::o;22643:378::-;22723:16;;1235:33115;;;;;;;;;;;;22723:16;1235:33115;22757:36;1235:33115;;;;;;;22757:36;22815:25;;;;22811:123;;-1:-1:-1;1235:33115:17;;;;1695:4;;;1235:33115;;;;;22643:378;;;;;22811:123;21805:11;1235:33115;;22871:44;;;22154:140;22871:44;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;22150:480;22572:43;1235:33115;21805:11;1235:33115;22572:43;;;;;;22154:140;22572:43;;1235:33115;;;;;;;;;;;;;;;;;;;;;;22150:480;22395:145;;:::i;:::-;;;;;22150:480;;;22395:145;;;22478:46;22395:145;22478:46;;:::i;:::-;1235:33115;22460:65;21805:11;1235:33115;22460:65;;;;;;22154:140;22460:65;;;:::i;22150:480::-;22347:32;-1:-1:-1;22150:480:17;;-1:-1:-1;22150:480:17;22154:140;;;;;22242:17;22154:140;;;;;;;;;:::i;:::-;;;;;18052:1073;;;18174:20;18170:949;;18052:1073;;;:::o;18170:949::-;18227:14;;1235:33115;;;18266:18;;;18262:88;;-1:-1:-1;18563:87:17;:35;:22;18486:45;;:::i;18563:35::-;18604;:14;;:35;1235:33115;;;18563:87;;;;1235:33115;18563:87;;;;;;;;;;:::i;:::-;;;;;;;;;18170:949;-1:-1:-1;18563:87:17;;;18170:949;1235:33115;;;;;18669:21;;;18665:82;;1235:33115;18765:17;;;18761:83;;18862:19;:24;18858:90;;18988:23;18996:14;19031:77;18996:14;18980:32;18996:14;;:::i;18980:32::-;18563:87;19047:17;;;1235:33115;19083:14;;:24;;1235:33115;;;;;;;;;;;;;;;;;;;;;;19031:77;18052:1073::o;18858:90::-;1235:33115;;18895:53;;;;;18563:87;18895:53;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18761:83;1235:33115;;18791:53;;;;;18563:87;18791:53;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18665:82;1235:33115;;18699:48;;;;;18563:87;18699:48;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18563:87;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;18262:88;1235:33115;;18298:52;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18052:1073;;;;18174:20;18170:949;;18052:1073;;;;;:::o;18170:949::-;18227:14;;1235:33115;;;18266:18;;;18262:88;;18193:1;18563:87;:35;:22;18486:45;;:::i;18563:35::-;18604;:14;;:35;1235:33115;;;18563:87;;;;1235:33115;18563:87;;;;;;;;;;:::i;:::-;;;;;;;;;18170:949;18193:1;18563:87;;;18170:949;1235:33115;;;;;18669:21;;;18665:82;;1235:33115;18765:17;;;18761:83;;18862:19;:24;18858:90;;18996:14;18988:23;18996:14;19031:77;18996:14;18980:32;18996:14;;:::i;18980:32::-;18563:87;19047:17;;;1235:33115;19083:14;;:24;;1235:33115;;;;;;;;;;;;;;;;;;;;;;19031:77;18170:949;;;;;;18858:90;1235:33115;;;18895:53;;;18563:87;18895:53;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;18761:83;18791:53;1235:33115;;;18791:53;;;;;;18563:87;18791:53;;1235:33115;;;;;;;;;;;;;;;;;;;;;;18665:82;18699:48;1235:33115;;;18699:48;;;;;;18563:87;18699:48;;1235:33115;;;;;;;;;;;;;;;;;;;;;;18563:87;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;18262:88;1235:33115;;;18298:52;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;1235:33115;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23364:1555::-;;;;1235:33115;23627:22;-1:-1:-1;23627:22:17;-1:-1:-1;23715:14:17;;;23774:28;1235:33115;24037:17;23774:28;;;1235:33115;23824:57;23816:101;23824:57;;;23816:101;:::i;:::-;24037:17;1235:33115;;;;;;24104:19;;;1235:33115;;;;;;;;;;;;24104:19;1235:33115;24137:39;1235:33115;;;;;;;24137:39;24194:25;;;;24190:122;;1235:33115;24461:17;1695:4;;;24325:58;1695:4;;1235:33115;1695:4;24401:95;1695:4;;1235:33115;;;;;;;;;;;24325:58;24461:17;1235:33115;;;;24401:95;;;;;;;1235:33115;24401:95;;;;;;:::i;:::-;;1235:33115;;1695:4;;24401:95;;;;-1:-1:-1;;24401:95:17;;;23364:1555;-1:-1:-1;24397:506:17;;;;;;;;:::i;:::-;;;;;;;;;23364:1555::o;24397:506::-;1235:33115;;24845:43;;;;;24401:95;24845:43;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;24397:506;24668:145;;:::i;:::-;;;;;24397:506;;;24668:145;24733:65;24668:145;24751:46;24668:145;24751:46;;:::i;24397:506::-;24584:18;-1:-1:-1;24584:18:17;-1:-1:-1;;23364:1555:17:o;24401:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;24190:122;1235:33115;;24246:51;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;23364:1555;;;;;;;1235:33115;23627:22;1235:33115;23627:22;1235:33115;23715:14;;;23774:28;1235:33115;24037:17;23774:28;;;1235:33115;23824:57;23816:101;23824:57;;;23816:101;:::i;1235:33115::-;24104:19;;;1235:33115;;;;;;;;;;;;24104:19;24137:39;1235:33115;;;;;;;24137:39;24194:25;;;24190:122;;1695:4;1235:33115;24461:17;1695:4;;;;;24325:58;1695:4;;1235:33115;1695:4;24401:95;1695:4;;;;1235:33115;;;;;;;;;;;24401:95;;1235:33115;;1695:4;;24401:95;;;;1235:33115;;24401:95;;;23364:1555;-1:-1:-1;24397:506:17;;;;;;;;:::i;:::-;;;;;;;;;;23364:1555::o;24397:506::-;1235:33115;;;24845:43;;;24401:95;24845:43;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;24397:506;24668:145;;:::i;:::-;;;;;24397:506;;;24668:145;24751:46;24668:145;;24751:46;;:::i;24397:506::-;24584:18;-1:-1:-1;24584:18:17;-1:-1:-1;;;23364:1555:17:o;24401:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;24190:122;24246:51;1235:33115;;;24246:51;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29781:3124::-;;;;30029:9;30072:21;30137:14;;30184:26;;;;:::i;:::-;30245:17;;;;1235:33115;;;;;;;;;;;;;;;30280:23;1235:33115;;;;;;;;;;;;;30276:2007;;32318:9;1695:4;;1235:33115;;;;32395:14;;;;1235:33115;;;;32395:30;32391:129;;32627:6;32759:17;1235:33115;;32723:152;1235:33115;;1695:4;32627:6;;:::i;:::-;32759:17;1235:33115;;32723:152;32759:17;1235:33115;;;;;;;;;;;;;;;;32813:13;;1235:33115;;;;32395:14;1235:33115;;;;;;;32723:152;;1235:33115;;;;;;;;;;;32663:41;1235:33115;;;;;;;;;;;32723:152;;;;29781:3124::o;32391:129::-;32395:14;1235:33115;32452:53;;;;;;;;1235:33115;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;30276:2007;30392:25;;1235:33115;;30435:1834;;30276:2007;;;;;30435:1834;31020:28;;;1235:33115;30986:147;;;;;;;1235:33115;;11050:14;1235:33115;;;;30986:147;;;;;;1235:33115;30986:147;;1235:33115;;30986:147;;;;;:::i;:::-;;;;;;;;30435:1834;-1:-1:-1;30982:406:17;;31137:251;;:::i;:::-;1235:33115;;31199:18;31195:70;;31302:59;1235:33115;;;31302:59;;;;;;30986:147;31302:59;;;:::i;31195:70::-;1235:33115;;31226:39;;;;;30986:147;31226:39;;1235:33115;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;30982:406;30435:1834;;;;30986:147;;;;;;:::i;:::-;;;;33073:546;33283:28;33218:20;;;1235:33115;33283:28;;1235:33115;33329:36;;;33325:173;;405:35:16;1235:33115:17;2102:12:16;;;2117:13;;2102:38;;1235:33115:17;33709:5;;;;;;:13;33073:546;:::o;33709:13::-;;;33073:546;:::o;2102:38:16:-;;;;33325:173:17;33464:19;;:::o", "linkReferences": {} }, "methodIdentifiers": { "SIG_VALIDATION_FAILED()": "8f41ec5a", "_validateSenderAndPaymaster(bytes,address,bytes)": "957122ab", "addStake(uint32)": "0396cb60", "balanceOf(address)": "70a08231", "depositTo(address)": "b760faf9", "deposits(address)": "fc7e286d", "getDepositInfo(address)": "5287ce12", "getNonce(address,uint192)": "35567e1a", "getSenderAddress(bytes)": "9b249f69", "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": "a6193531", "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": "4b1d7cf5", "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)": "1fad948c", "incrementNonce(uint192)": "0bd28e3b", "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)": "1d732756", "nonceSequenceNumber(address,uint192)": "1b2e01b8", "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)": "d6383f94", "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": "ee219423", "unlockStake()": "bb9fe6bf", "withdrawStake(address)": "c23a5cea", "withdrawTo(address,uint256)": "205c2878" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"CallPhaseReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"targetSuccess\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"targetResult\",\"type\":\"bytes\"}],\"name\":\"ExecutionResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"FailedOp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inner\",\"type\":\"bytes\"}],\"name\":\"FailedOpWithRevert\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderAddressResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureValidationFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResult\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"stakeInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct IEntryPoint.AggregatorStakeInfo\",\"name\":\"aggregatorInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResultWithAggregation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"}],\"name\":\"AccountDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"BeforeExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDeposit\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureAggregatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalStaked\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"name\":\"StakeLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawTime\",\"type\":\"uint256\"}],\"name\":\"StakeUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasUsed\",\"type\":\"uint256\"}],\"name\":\"UserOperationEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"revertReason\",\"type\":\"bytes\"}],\"name\":\"UserOperationRevertReason\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SIG_VALIDATION_FAILED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"}],\"name\":\"_validateSenderAndPaymaster\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDepositInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"internalType\":\"struct IStakeManager.DepositInfo\",\"name\":\"info\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"getSenderAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"userOps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAggregator\",\"name\":\"aggregator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.UserOpsPerAggregator[]\",\"name\":\"opsPerAggregator\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleAggregatedOps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleOps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.MemoryUserOp\",\"name\":\"mUserOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"contextOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.UserOpInfo\",\"name\":\"opInfo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"innerHandleOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"name\":\"nonceSequenceNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"op\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetCallData\",\"type\":\"bytes\"}],\"name\":\"simulateHandleOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"simulateValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"FailedOp(uint256,string)\":[{\"params\":{\"opIndex\":\"- index into the array of ops to the failed one (in simulateValidation, this is always zero)\",\"reason\":\"- revert reason The string starts with a unique code \\\"AAmn\\\", where \\\"m\\\" is \\\"1\\\" for factory, \\\"2\\\" for account and \\\"3\\\" for paymaster issues, so a failure can be attributed to the correct entity. Should be caught in off-chain handleOps simulation and not happen on-chain. Useful for mitigating DoS attempts against batchers or for troubleshooting of factory/account/paymaster reverts.\"}}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"params\":{\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"params\":{\"aggregatorInfo\":\"signature aggregation info (if the account requires signature aggregator) bundler MUST use it to verify the signature, or reject the UserOperation\",\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}]},\"kind\":\"dev\",\"methods\":{\"addStake(uint32)\":{\"params\":{\"unstakeDelaySec\":\"the new lock duration before the deposit can be withdrawn.\"}},\"getDepositInfo(address)\":{\"returns\":{\"info\":\"- full deposit information of given account\"}},\"getNonce(address,uint192)\":{\"params\":{\"key\":\"the high 192 bit of the nonce\",\"sender\":\"the account address\"},\"returns\":{\"nonce\":\"a full nonce to pass for next UserOp with this sender.\"}},\"getSenderAddress(bytes)\":{\"params\":{\"initCode\":\"the constructor code to be passed into the UserOperation.\"}},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"opsPerAggregator\":\"the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)\"}},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"ops\":\"the operations to execute\"}},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"params\":{\"op\":\"the UserOperation to simulate\",\"target\":\"if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.\",\"targetCallData\":\"callData to pass to target address\"}},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"details\":\"this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.\",\"params\":{\"userOp\":\"the user operation to validate.\"}},\"withdrawStake(address)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\",\"withdrawAmount\":\"the amount to withdraw.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)\":[{\"notice\":\"return value of simulateHandleOp\"}],\"FailedOp(uint256,string)\":[{\"notice\":\"a custom revert error of handleOps, to identify the offending op. NOTE: if simulateValidation passes successfully, there should be no reason for handleOps to fail on it.\"}],\"SenderAddressResult(address)\":[{\"notice\":\"return value of getSenderAddress\"}],\"SignatureValidationFailed(address)\":[{\"notice\":\"error case when a signature aggregator fails to verify the aggregated signature it had created.\"}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"notice\":\"Successful result from simulateValidation.\"}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"notice\":\"Successful result from simulateValidation, if the account returns a signature aggregator\"}]},\"events\":{\"AccountDeployed(bytes32,address,address,address)\":{\"notice\":\"account \\\"sender\\\" was deployed.\"},\"BeforeExecution()\":{\"notice\":\"an event emitted by handleOps(), before starting the execution loop. any event emitted before this event, is part of the validation.\"},\"SignatureAggregatorChanged(address)\":{\"notice\":\"signature aggregator used by the following UserOperationEvents within this bundle.\"},\"StakeLocked(address,uint256,uint256)\":{\"notice\":\"Emitted when stake or unstake delay are modified\"},\"StakeUnlocked(address,uint256)\":{\"notice\":\"Emitted once a stake is scheduled for withdrawal\"},\"UserOperationRevertReason(bytes32,address,uint256,bytes)\":{\"notice\":\"An event emitted if the UserOperation \\\"callData\\\" reverted with non-zero length\"}},\"kind\":\"user\",\"methods\":{\"SIG_VALIDATION_FAILED()\":{\"notice\":\"for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert.\"},\"_validateSenderAndPaymaster(bytes,address,bytes)\":{\"notice\":\"Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution.\"},\"addStake(uint32)\":{\"notice\":\"add to the account's stake - amount and delay any pending unstake is first cancelled.\"},\"balanceOf(address)\":{\"notice\":\"return the deposit (for gas payment) of the account\"},\"depositTo(address)\":{\"notice\":\"add to the deposit of the given account\"},\"deposits(address)\":{\"notice\":\"maps paymaster to their deposits and stakes\"},\"getNonce(address,uint192)\":{\"notice\":\"Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order.\"},\"getSenderAddress(bytes)\":{\"notice\":\"Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error\"},\"getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid.\"},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperation with Aggregators\"},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead.\"},\"incrementNonce(uint192)\":{\"notice\":\"Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \\\"initialize\\\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key.\"},\"innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)\":{\"notice\":\"inner function to handle a UserOperation. Must be declared \\\"external\\\" to open a call context, but it can only be called by handleOps.\"},\"nonceSequenceNumber(address,uint192)\":{\"notice\":\"The next valid sequence number for a given nonce key.\"},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"notice\":\"simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \\\"ExecutionResult\\\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events.\"},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp.\"},\"unlockStake()\":{\"notice\":\"attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay.\"},\"withdrawStake(address)\":{\"notice\":\"withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass\"},\"withdrawTo(address,uint256)\":{\"notice\":\"withdraw from the deposit.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v06/EntryPointGasEstimationOverride.sol\":\"EntryPointGasEstimationOverride06\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":@account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":@account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/\",\":@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/\",\":@test-utils/=lib/singleton-paymaster/test/utils/\",\":account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":singleton-paymaster/=lib/singleton-paymaster/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/account-abstraction-v6/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction-v6/contracts/core/NonceManager.sol\":{\"keccak256\":\"0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7\",\"dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1\"]},\"lib/account-abstraction-v6/contracts/core/SenderCreator.sol\":{\"keccak256\":\"0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612\",\"dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x\"]},\"lib/account-abstraction-v6/contracts/core/StakeManager.sol\":{\"keccak256\":\"0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a\",\"dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4\",\"dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"]},\"lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/account-abstraction-v6/contracts/utils/Exec.sol\":{\"keccak256\":\"0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe\",\"dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/SimulationOverrideHelper.sol\":{\"keccak256\":\"0x98850f986164c992b840ba8e878814c459be0852debe8ad8d69140c09c6b05c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a57d5979f5557ccbc6947c3f6b5b6ec10f152609b9d11c265b20d925d915b559\",\"dweb:/ipfs/QmcA4kpMCnjCfEyky32w5S8qXzvvchZJhMBvJvmBp5tcep\"]},\"src/v06/EntryPointGasEstimationOverride.sol\":{\"keccak256\":\"0xd543e1dfeb6c3f74ce1964099364ce549563c11ea47c3cb97b02bc7e71e8f46d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://53d579d8654dbed980bb14d08ecafddb30b4f634ffedd4a64a2d30b39803d4f7\",\"dweb:/ipfs/QmTnT9yk1AB2LydP2QWiyuPrTHAZzqFcrLLjkB5Q1z7DpD\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.17+commit.8df45f5f" }, "language": "Solidity", "output": { "abi": [{ "inputs": [{ "internalType": "bytes", "name": "reason", "type": "bytes" }], "type": "error", "name": "CallPhaseReverted" }, { "inputs": [{ "internalType": "uint256", "name": "preOpGas", "type": "uint256" }, { "internalType": "uint256", "name": "paid", "type": "uint256" }, { "internalType": "uint48", "name": "validAfter", "type": "uint48" }, { "internalType": "uint48", "name": "validUntil", "type": "uint48" }, { "internalType": "bool", "name": "targetSuccess", "type": "bool" }, { "internalType": "bytes", "name": "targetResult", "type": "bytes" }], "type": "error", "name": "ExecutionResult" }, { "inputs": [{ "internalType": "uint256", "name": "opIndex", "type": "uint256" }, { "internalType": "string", "name": "reason", "type": "string" }], "type": "error", "name": "FailedOp" }, { "inputs": [{ "internalType": "uint256", "name": "opIndex", "type": "uint256" }, { "internalType": "string", "name": "reason", "type": "string" }, { "internalType": "bytes", "name": "inner", "type": "bytes" }], "type": "error", "name": "FailedOpWithRevert" }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }], "type": "error", "name": "SenderAddressResult" }, { "inputs": [{ "internalType": "address", "name": "aggregator", "type": "address" }], "type": "error", "name": "SignatureValidationFailed" }, { "inputs": [{ "internalType": "struct IEntryPoint.ReturnInfo", "name": "returnInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "preOpGas", "type": "uint256" }, { "internalType": "uint256", "name": "prefund", "type": "uint256" }, { "internalType": "bool", "name": "sigFailed", "type": "bool" }, { "internalType": "uint48", "name": "validAfter", "type": "uint48" }, { "internalType": "uint48", "name": "validUntil", "type": "uint48" }, { "internalType": "bytes", "name": "paymasterContext", "type": "bytes" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "senderInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "factoryInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "paymasterInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }], "type": "error", "name": "ValidationResult" }, { "inputs": [{ "internalType": "struct IEntryPoint.ReturnInfo", "name": "returnInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "preOpGas", "type": "uint256" }, { "internalType": "uint256", "name": "prefund", "type": "uint256" }, { "internalType": "bool", "name": "sigFailed", "type": "bool" }, { "internalType": "uint48", "name": "validAfter", "type": "uint48" }, { "internalType": "uint48", "name": "validUntil", "type": "uint48" }, { "internalType": "bytes", "name": "paymasterContext", "type": "bytes" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "senderInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "factoryInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "paymasterInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IEntryPoint.AggregatorStakeInfo", "name": "aggregatorInfo", "type": "tuple", "components": [{ "internalType": "address", "name": "aggregator", "type": "address" }, { "internalType": "struct IStakeManager.StakeInfo", "name": "stakeInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }] }], "type": "error", "name": "ValidationResultWithAggregation" }, { "inputs": [{ "internalType": "bytes32", "name": "userOpHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "address", "name": "factory", "type": "address", "indexed": false }, { "internalType": "address", "name": "paymaster", "type": "address", "indexed": false }], "type": "event", "name": "AccountDeployed", "anonymous": false }, { "inputs": [], "type": "event", "name": "BeforeExecution", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "totalDeposit", "type": "uint256", "indexed": false }], "type": "event", "name": "Deposited", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "aggregator", "type": "address", "indexed": true }], "type": "event", "name": "SignatureAggregatorChanged", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "totalStaked", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256", "indexed": false }], "type": "event", "name": "StakeLocked", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "withdrawTime", "type": "uint256", "indexed": false }], "type": "event", "name": "StakeUnlocked", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "address", "name": "withdrawAddress", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }], "type": "event", "name": "StakeWithdrawn", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "userOpHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "address", "name": "paymaster", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "nonce", "type": "uint256", "indexed": false }, { "internalType": "bool", "name": "success", "type": "bool", "indexed": false }, { "internalType": "uint256", "name": "actualGasCost", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "actualGasUsed", "type": "uint256", "indexed": false }], "type": "event", "name": "UserOperationEvent", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "userOpHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "nonce", "type": "uint256", "indexed": false }, { "internalType": "bytes", "name": "revertReason", "type": "bytes", "indexed": false }], "type": "event", "name": "UserOperationRevertReason", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "address", "name": "withdrawAddress", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }], "type": "event", "name": "Withdrawn", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "SIG_VALIDATION_FAILED", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }], "stateMutability": "view", "type": "function", "name": "_validateSenderAndPaymaster" }, { "inputs": [{ "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }], "stateMutability": "payable", "type": "function", "name": "addStake" }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "view", "type": "function", "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "payable", "type": "function", "name": "depositTo" }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function", "name": "deposits", "outputs": [{ "internalType": "uint112", "name": "deposit", "type": "uint112" }, { "internalType": "bool", "name": "staked", "type": "bool" }, { "internalType": "uint112", "name": "stake", "type": "uint112" }, { "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }, { "internalType": "uint48", "name": "withdrawTime", "type": "uint48" }] }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "view", "type": "function", "name": "getDepositInfo", "outputs": [{ "internalType": "struct IStakeManager.DepositInfo", "name": "info", "type": "tuple", "components": [{ "internalType": "uint112", "name": "deposit", "type": "uint112" }, { "internalType": "bool", "name": "staked", "type": "bool" }, { "internalType": "uint112", "name": "stake", "type": "uint112" }, { "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }, { "internalType": "uint48", "name": "withdrawTime", "type": "uint48" }] }] }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint192", "name": "key", "type": "uint192" }], "stateMutability": "view", "type": "function", "name": "getNonce", "outputs": [{ "internalType": "uint256", "name": "nonce", "type": "uint256" }] }, { "inputs": [{ "internalType": "bytes", "name": "initCode", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "getSenderAddress" }, { "inputs": [{ "internalType": "struct UserOperation", "name": "userOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }], "stateMutability": "view", "type": "function", "name": "getUserOpHash", "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }] }, { "inputs": [{ "internalType": "struct IEntryPoint.UserOpsPerAggregator[]", "name": "opsPerAggregator", "type": "tuple[]", "components": [{ "internalType": "struct UserOperation[]", "name": "userOps", "type": "tuple[]", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "contract IAggregator", "name": "aggregator", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "address payable", "name": "beneficiary", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "handleAggregatedOps" }, { "inputs": [{ "internalType": "struct UserOperation[]", "name": "ops", "type": "tuple[]", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "address payable", "name": "beneficiary", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "handleOps" }, { "inputs": [{ "internalType": "uint192", "name": "key", "type": "uint192" }], "stateMutability": "nonpayable", "type": "function", "name": "incrementNonce" }, { "inputs": [{ "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "struct EntryPointGasEstimationOverride06.UserOpInfo", "name": "opInfo", "type": "tuple", "components": [{ "internalType": "struct EntryPointGasEstimationOverride06.MemoryUserOp", "name": "mUserOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "address", "name": "paymaster", "type": "address" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }] }, { "internalType": "bytes32", "name": "userOpHash", "type": "bytes32" }, { "internalType": "uint256", "name": "prefund", "type": "uint256" }, { "internalType": "uint256", "name": "contextOffset", "type": "uint256" }, { "internalType": "uint256", "name": "preOpGas", "type": "uint256" }] }, { "internalType": "bytes", "name": "context", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "innerHandleOp", "outputs": [{ "internalType": "uint256", "name": "actualGasCost", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint192", "name": "", "type": "uint192" }], "stateMutability": "view", "type": "function", "name": "nonceSequenceNumber", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "struct UserOperation", "name": "op", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "targetCallData", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "simulateHandleOp" }, { "inputs": [{ "internalType": "struct UserOperation", "name": "userOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }], "stateMutability": "nonpayable", "type": "function", "name": "simulateValidation" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "unlockStake" }, { "inputs": [{ "internalType": "address payable", "name": "withdrawAddress", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "withdrawStake" }, { "inputs": [{ "internalType": "address payable", "name": "withdrawAddress", "type": "address" }, { "internalType": "uint256", "name": "withdrawAmount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "withdrawTo" }, { "inputs": [], "stateMutability": "payable", "type": "receive" }], "devdoc": { "kind": "dev", "methods": { "addStake(uint32)": { "params": { "unstakeDelaySec": "the new lock duration before the deposit can be withdrawn." } }, "getDepositInfo(address)": { "returns": { "info": "- full deposit information of given account" } }, "getNonce(address,uint192)": { "params": { "key": "the high 192 bit of the nonce", "sender": "the account address" }, "returns": { "nonce": "a full nonce to pass for next UserOp with this sender." } }, "getSenderAddress(bytes)": { "params": { "initCode": "the constructor code to be passed into the UserOperation." } }, "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": { "params": { "beneficiary": "the address to receive the fees", "opsPerAggregator": "the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)" } }, "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)": { "params": { "beneficiary": "the address to receive the fees", "ops": "the operations to execute" } }, "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)": { "params": { "op": "the UserOperation to simulate", "target": "if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.", "targetCallData": "callData to pass to target address" } }, "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { "details": "this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.", "params": { "userOp": "the user operation to validate." } }, "withdrawStake(address)": { "params": { "withdrawAddress": "the address to send withdrawn value." } }, "withdrawTo(address,uint256)": { "params": { "withdrawAddress": "the address to send withdrawn value.", "withdrawAmount": "the amount to withdraw." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "SIG_VALIDATION_FAILED()": { "notice": "for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert." }, "_validateSenderAndPaymaster(bytes,address,bytes)": { "notice": "Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution." }, "addStake(uint32)": { "notice": "add to the account's stake - amount and delay any pending unstake is first cancelled." }, "balanceOf(address)": { "notice": "return the deposit (for gas payment) of the account" }, "depositTo(address)": { "notice": "add to the deposit of the given account" }, "deposits(address)": { "notice": "maps paymaster to their deposits and stakes" }, "getNonce(address,uint192)": { "notice": "Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order." }, "getSenderAddress(bytes)": { "notice": "Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error" }, "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { "notice": "generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid." }, "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": { "notice": "Execute a batch of UserOperation with Aggregators" }, "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)": { "notice": "Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead." }, "incrementNonce(uint192)": { "notice": "Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \"initialize\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key." }, "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)": { "notice": "inner function to handle a UserOperation. Must be declared \"external\" to open a call context, but it can only be called by handleOps." }, "nonceSequenceNumber(address,uint192)": { "notice": "The next valid sequence number for a given nonce key." }, "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)": { "notice": "simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \"ExecutionResult\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events." }, "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { "notice": "Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp." }, "unlockStake()": { "notice": "attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay." }, "withdrawStake(address)": { "notice": "withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass" }, "withdrawTo(address,uint256)": { "notice": "withdraw from the deposit." } }, "version": 1 } }, "settings": { "remappings": ["@account-abstraction-v6/=lib/account-abstraction-v6/contracts/", "@account-abstraction-v7/=lib/account-abstraction-v7/contracts/", "@account-abstraction-v8/=lib/account-abstraction-v8/contracts/", "@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/", "@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/", "@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/", "@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/", "@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/", "@test-utils/=lib/singleton-paymaster/test/utils/", "account-abstraction-v6/=lib/account-abstraction-v6/contracts/", "account-abstraction-v7/=lib/account-abstraction-v7/contracts/", "account-abstraction-v8/=lib/account-abstraction-v8/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/", "openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/", "openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/", "openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/", "singleton-paymaster/=lib/singleton-paymaster/src/", "solady/=lib/solady/src/"], "optimizer": { "enabled": true, "runs": 1000000 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "src/v06/EntryPointGasEstimationOverride.sol": "EntryPointGasEstimationOverride06" }, "evmVersion": "london", "libraries": {}, "viaIR": true }, "sources": { "lib/account-abstraction-v6/contracts/core/Helpers.sol": { "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", "urls": ["bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/core/NonceManager.sol": { "keccak256": "0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25", "urls": ["bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7", "dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/core/SenderCreator.sol": { "keccak256": "0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2", "urls": ["bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612", "dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/core/StakeManager.sol": { "keccak256": "0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a", "urls": ["bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a", "dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN"], "license": "GPL-3.0-only" }, "lib/account-abstraction-v6/contracts/interfaces/IAccount.sol": { "keccak256": "0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418", "urls": ["bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4", "dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol": { "keccak256": "0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a", "urls": ["bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b", "dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol": { "keccak256": "0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8", "urls": ["bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf", "dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol": { "keccak256": "0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12", "urls": ["bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2", "dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol": { "keccak256": "0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456", "urls": ["bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8", "dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol": { "keccak256": "0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f", "urls": ["bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3", "dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ"], "license": "GPL-3.0-only" }, "lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol": { "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", "urls": ["bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/utils/Exec.sol": { "keccak256": "0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1", "urls": ["bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe", "dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy"], "license": "LGPL-3.0-only" }, "lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol": { "keccak256": "0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc", "urls": ["bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010", "dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u"], "license": "MIT" }, "lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol": { "keccak256": "0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d", "urls": ["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4", "dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"], "license": "MIT" }, "lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol": { "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", "urls": ["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"], "license": "MIT" }, "lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": ["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"], "license": "MIT" }, "src/SimulationOverrideHelper.sol": { "keccak256": "0x98850f986164c992b840ba8e878814c459be0852debe8ad8d69140c09c6b05c5", "urls": ["bzz-raw://a57d5979f5557ccbc6947c3f6b5b6ec10f152609b9d11c265b20d925d915b559", "dweb:/ipfs/QmcA4kpMCnjCfEyky32w5S8qXzvvchZJhMBvJvmBp5tcep"], "license": "MIT" }, "src/v06/EntryPointGasEstimationOverride.sol": { "keccak256": "0xd543e1dfeb6c3f74ce1964099364ce549563c11ea47c3cb97b02bc7e71e8f46d", "urls": ["bzz-raw://53d579d8654dbed980bb14d08ecafddb30b4f634ffedd4a64a2d30b39803d4f7", "dweb:/ipfs/QmTnT9yk1AB2LydP2QWiyuPrTHAZzqFcrLLjkB5Q1z7DpD"], "license": "GPL-3.0" } }, "version": 1 }, "id": 17 }
1
+ { "abi": [{ "type": "receive", "stateMutability": "payable" }, { "type": "function", "name": "SIG_VALIDATION_FAILED", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "_validateSenderAndPaymaster", "inputs": [{ "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "sender", "type": "address", "internalType": "address" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "view" }, { "type": "function", "name": "addStake", "inputs": [{ "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "balanceOf", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "depositTo", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "deposits", "inputs": [{ "name": "", "type": "address", "internalType": "address" }], "outputs": [{ "name": "deposit", "type": "uint112", "internalType": "uint112" }, { "name": "staked", "type": "bool", "internalType": "bool" }, { "name": "stake", "type": "uint112", "internalType": "uint112" }, { "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }, { "name": "withdrawTime", "type": "uint48", "internalType": "uint48" }], "stateMutability": "view" }, { "type": "function", "name": "getDepositInfo", "inputs": [{ "name": "account", "type": "address", "internalType": "address" }], "outputs": [{ "name": "info", "type": "tuple", "internalType": "struct IStakeManager.DepositInfo", "components": [{ "name": "deposit", "type": "uint112", "internalType": "uint112" }, { "name": "staked", "type": "bool", "internalType": "bool" }, { "name": "stake", "type": "uint112", "internalType": "uint112" }, { "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }, { "name": "withdrawTime", "type": "uint48", "internalType": "uint48" }] }], "stateMutability": "view" }, { "type": "function", "name": "getNonce", "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "key", "type": "uint192", "internalType": "uint192" }], "outputs": [{ "name": "nonce", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "getSenderAddress", "inputs": [{ "name": "initCode", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "getUserOpHash", "inputs": [{ "name": "userOp", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "handleAggregatedOps", "inputs": [{ "name": "opsPerAggregator", "type": "tuple[]", "internalType": "struct IEntryPoint.UserOpsPerAggregator[]", "components": [{ "name": "userOps", "type": "tuple[]", "internalType": "struct UserOperation[]", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "aggregator", "type": "address", "internalType": "contract IAggregator" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "beneficiary", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "handleOps", "inputs": [{ "name": "ops", "type": "tuple[]", "internalType": "struct UserOperation[]", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "beneficiary", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "incrementNonce", "inputs": [{ "name": "key", "type": "uint192", "internalType": "uint192" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "innerHandleOp", "inputs": [{ "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "opInfo", "type": "tuple", "internalType": "struct EntryPointGasEstimationOverride06.UserOpInfo", "components": [{ "name": "mUserOp", "type": "tuple", "internalType": "struct EntryPointGasEstimationOverride06.MemoryUserOp", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymaster", "type": "address", "internalType": "address" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }] }, { "name": "userOpHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "prefund", "type": "uint256", "internalType": "uint256" }, { "name": "contextOffset", "type": "uint256", "internalType": "uint256" }, { "name": "preOpGas", "type": "uint256", "internalType": "uint256" }] }, { "name": "context", "type": "bytes", "internalType": "bytes" }], "outputs": [{ "name": "actualGasCost", "type": "uint256", "internalType": "uint256" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "nonceSequenceNumber", "inputs": [{ "name": "", "type": "address", "internalType": "address" }, { "name": "", "type": "uint192", "internalType": "uint192" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "simulateHandleOp", "inputs": [{ "name": "op", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "target", "type": "address", "internalType": "address" }, { "name": "targetCallData", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "simulateValidation", "inputs": [{ "name": "userOp", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "unlockStake", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawStake", "inputs": [{ "name": "withdrawAddress", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawTo", "inputs": [{ "name": "withdrawAddress", "type": "address", "internalType": "address payable" }, { "name": "withdrawAmount", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "AccountDeployed", "inputs": [{ "name": "userOpHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "factory", "type": "address", "indexed": false, "internalType": "address" }, { "name": "paymaster", "type": "address", "indexed": false, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "BeforeExecution", "inputs": [], "anonymous": false }, { "type": "event", "name": "Deposited", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "totalDeposit", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "SignatureAggregatorChanged", "inputs": [{ "name": "aggregator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StakeLocked", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "totalStaked", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "StakeUnlocked", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "withdrawTime", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "StakeWithdrawn", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "withdrawAddress", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "UserOperationEvent", "inputs": [{ "name": "userOpHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "paymaster", "type": "address", "indexed": true, "internalType": "address" }, { "name": "nonce", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "success", "type": "bool", "indexed": false, "internalType": "bool" }, { "name": "actualGasCost", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "actualGasUsed", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "UserOperationRevertReason", "inputs": [{ "name": "userOpHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "nonce", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "revertReason", "type": "bytes", "indexed": false, "internalType": "bytes" }], "anonymous": false }, { "type": "event", "name": "Withdrawn", "inputs": [{ "name": "account", "type": "address", "indexed": true, "internalType": "address" }, { "name": "withdrawAddress", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "error", "name": "CallPhaseReverted", "inputs": [{ "name": "reason", "type": "bytes", "internalType": "bytes" }] }, { "type": "error", "name": "ExecutionResult", "inputs": [{ "name": "preOpGas", "type": "uint256", "internalType": "uint256" }, { "name": "paid", "type": "uint256", "internalType": "uint256" }, { "name": "validAfter", "type": "uint48", "internalType": "uint48" }, { "name": "validUntil", "type": "uint48", "internalType": "uint48" }, { "name": "targetSuccess", "type": "bool", "internalType": "bool" }, { "name": "targetResult", "type": "bytes", "internalType": "bytes" }] }, { "type": "error", "name": "FailedOp", "inputs": [{ "name": "opIndex", "type": "uint256", "internalType": "uint256" }, { "name": "reason", "type": "string", "internalType": "string" }] }, { "type": "error", "name": "FailedOpWithRevert", "inputs": [{ "name": "opIndex", "type": "uint256", "internalType": "uint256" }, { "name": "reason", "type": "string", "internalType": "string" }, { "name": "inner", "type": "bytes", "internalType": "bytes" }] }, { "type": "error", "name": "SenderAddressResult", "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }] }, { "type": "error", "name": "SignatureValidationFailed", "inputs": [{ "name": "aggregator", "type": "address", "internalType": "address" }] }, { "type": "error", "name": "ValidationResult", "inputs": [{ "name": "returnInfo", "type": "tuple", "internalType": "struct IEntryPoint.ReturnInfo", "components": [{ "name": "preOpGas", "type": "uint256", "internalType": "uint256" }, { "name": "prefund", "type": "uint256", "internalType": "uint256" }, { "name": "sigFailed", "type": "bool", "internalType": "bool" }, { "name": "validAfter", "type": "uint48", "internalType": "uint48" }, { "name": "validUntil", "type": "uint48", "internalType": "uint48" }, { "name": "paymasterContext", "type": "bytes", "internalType": "bytes" }] }, { "name": "senderInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "factoryInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "paymasterInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }] }, { "type": "error", "name": "ValidationResultWithAggregation", "inputs": [{ "name": "returnInfo", "type": "tuple", "internalType": "struct IEntryPoint.ReturnInfo", "components": [{ "name": "preOpGas", "type": "uint256", "internalType": "uint256" }, { "name": "prefund", "type": "uint256", "internalType": "uint256" }, { "name": "sigFailed", "type": "bool", "internalType": "bool" }, { "name": "validAfter", "type": "uint48", "internalType": "uint48" }, { "name": "validUntil", "type": "uint48", "internalType": "uint48" }, { "name": "paymasterContext", "type": "bytes", "internalType": "bytes" }] }, { "name": "senderInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "factoryInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "paymasterInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }, { "name": "aggregatorInfo", "type": "tuple", "internalType": "struct IEntryPoint.AggregatorStakeInfo", "components": [{ "name": "aggregator", "type": "address", "internalType": "address" }, { "name": "stakeInfo", "type": "tuple", "internalType": "struct IStakeManager.StakeInfo", "components": [{ "name": "stake", "type": "uint256", "internalType": "uint256" }, { "name": "unstakeDelaySec", "type": "uint256", "internalType": "uint256" }] }] }] }], "bytecode": { "object": "0x6080806040523461001b57600160025561546990816100218239f35b600080fdfe60806040526004361015610023575b361561001957600080fd5b610021611ebc565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611d9c565b61000e565b5061010c611b84565b5061010c611a1c565b5061010c611883565b5061010c611705565b5061010c6116c6565b5061010c6116a5565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d811515612033565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b1115612098565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611f2d565b966102a48815156120fd565b6102b081891115612162565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b6121c7565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611e82565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091612fca565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d482939261268a565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a576100218585612797565b90919360019061093f61092e878987612749565b6109388886612727565b5190612a50565b0194019190610909565b61097461096d61095b83859795612727565b51610967848987612749565b84613a5c565b919061374c565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061374c565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c61256e565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc56124d9565b5061257b565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e15915061268a565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612797565b610ee8610e9282848a612b3b565b610ebd610ea4610ea460208401612bdd565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612b89565b906000915b808310610f0557505050610f0090611e82565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b612749565b918d612727565b90611f2d565b99611e82565b95611e82565b9190610eed565b610f50818688612b3b565b6020610f68610f5f8380612b89565b92909301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611e82565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d612727565b51610fc58c8b8a612749565b85613a5c565b908b613704565b611e82565b929190610f84565b610fea828587612b3b565b90610ff58280612b89565b92611005610ea460208301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612be7565b61104b575b5050506110459161103f91611f2d565b91611e82565b90610e04565b9095926110646040999693999895989788810190612888565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612d81565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613299565b906132a7565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff8111610359576115cc602061157360249336906004016106b9565b73ffffffffffffffffffffffffffffffffffffffff9291836115936134a3565b169060006040518097819582947f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613492565b03925af1918215611640575b600092611610575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b61163291925060203d8111611639575b61162a81836105ab565b81019061347d565b90386115e0565b503d611620565b611648612a43565b6115d8565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b79160040161164d565b50346103595760206116be6116b93661165c565b613112565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561170081610422565b611ec1565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611880573381528060205260408120600181019063ffffffff825416908115611822576117bf6117846117e793611776611771855460ff9060701c1690565b61232b565b65ffffffffffff4216612390565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576004356118bf81610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119013373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b926119b9611924610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119308615156123aa565b6119916001820161196965ffffffffffff611955835465ffffffffffff9060201c1690565b1661196181151561240f565b421015612474565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a166124d9565b50612509565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611a6d90369060040161164d565b60243591611a7a83610422565b60443590811161035957611a95610a3f9136906004016106b9565b611a9d612607565b611aa6856135ff565b611ab9611ab38287613854565b90612eac565b94611ac982600092438452612a50565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611b50575b505050506080015193611b1d6040611b0f602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612e51565b83955083949650611b6a6040949293945180948193612e43565b03925af1906080611b796124d9565b929190388080611aee565b503461035957611b933661165c565b611b9b612607565b611ba4826135ff565b611bae8183613854565b825160a00151919391611bdb9073ffffffffffffffffffffffffffffffffffffffff16613428565b613428565b90611bff611bd6855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c08613261565b50611c37611c1b60409586810190612888565b90600060148310611d94575061142b611bd69261143192613299565b91611c4191612eac565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611c969065ffffffffffff1690565b91015165ffffffffffff16916060015192611caf6105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611d8b575b50611d205750610a3f92519485947fe0cff05f000000000000000000000000000000000000000000000000000000008652600486016133ce565b9190610a3f93611d2f84613428565b611d56611d3a610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e40000000000000000000000000000000000000000000000000000000087526004870161333c565b90501538611ce6565b915050613428565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611ded81610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611eb0570190565b611eb8611e52565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611ee13482611f42565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611f3a57565b61044d611e52565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff80825416928301809311612026575b808311611fc85761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b61202e611e52565b611f83565b1561203a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561209f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561210457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b1561216957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d946122276dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b1561233257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611f3a57565b156123b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561241657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b1561247b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d15612504573d906124ea82610639565b916124f860405193846105ab565b82523d6000602084013e565b606090565b1561251057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611f3a57565b1561258257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff81116125fa575b60051b0190565b612602610505565b6125f3565b6040519061261482610535565b604051608083610100830167ffffffffffffffff81118482101761267d575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b612685610505565b612633565b90612694826125e0565b6126a160405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126cf82946125e0565b019060005b8281106126e057505050565b6020906126eb612607565b828285010152016126d4565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602091815181101561273c575b60051b010190565b6127446126f7565b612734565b919081101561278a575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b6127926126f7565b612753565b73ffffffffffffffffffffffffffffffffffffffff16801561282a57600080809381935af16127c46124d9565b50156127cc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b83811061293a5750506000910152565b818101518382015260200161292a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361298681518092818752878088019101612927565b0116010190565b906129a76080916108b796946101c08086528501916128e8565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261294a565b506040513d6000823e3d90fd5b612aa0602091612a696060850151916060810190612888565b92909160405195869485947f1d7327560000000000000000000000000000000000000000000000000000000086526004860161298d565b03816000305af160009181612b0b575b506108b757612abd6124d9565b60206000803e805115612ad257805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612b2d91925060203d8111612b34575b612b2581836105ab565b8101906128d9565b9038612ab0565b503d612b1b565b9190811015612b7c575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612b846126f7565b612b45565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612bee57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612cc781612cad8461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612d62612d13612cf8612ce76040860186612c4c565b6101608060408801528601916128e8565b612d056060860186612c4c565b9085830360608701526128e8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612d5581860186612c4c565b91858403908601526128e8565b91612d736101409182810190612c4c565b9290918185039101526128e8565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612dc4575050505050508460206108b7959685039101526128e8565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612e3f5760019184612e2d9201612c9c565b98602090810196950193019190612da5565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a0820152019061294a565b60405190612e9a8261058f565b60006040838281528260208201520152565b612ec1612ec791612ebb612e8d565b50612f5e565b91612f5e565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612f53575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612f4b575b50808511612f43575b5060405195612f318761058f565b16855216602084015216604082015290565b935038612f23565b925038612f1a565b815181169350612eea565b612f66612e8d565b5065ffffffffffff808260a01c168015612fb2575b60405192612f888461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612f7b565b9060206108b792818152019061294a565b9291925a903033036130735782518151613000575b50506108b793612ffa915a9003608084015101933691610682565b90615101565b5161302b916130279173ffffffffffffffffffffffffffffffffffffffff16905a916130d1565b1590565b613036573880612fdf565b610a3f6130416130e3565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301612fb9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d61080080821161310a575b50604051906020818301016040528082526000602083013e90565b9050386130ef565b6131286131226040830183612888565b90613256565b906131396131226060830183612888565b906131ef61314e613122610120840184612888565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b5190206040805160208101928352309181019190915246606082015260809283018152909161325090826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff82111761328c575b60405260006020838281520152565b613294610505565b61327d565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090358181169392601481106132dc57505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a0820152019061294a565b929461339d61044d9561338b610100959998613379613365602097610140808c528b01906132eb565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61341761044d946134056133f060a0959998969960e0865260e08601906132eb565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff613446613261565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b79381815201916128e8565b7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff16806108b75750737fc98430eaedbb6070b35b39d79872504908834890565b9061352873ffffffffffffffffffffffffffffffffffffffff916108b7979596946060855260608501916128e8565b9416602082015260408185039101526128e8565b60009060033d1161354957565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135d6578184019485519384116135de573d850101602084870101116135d657506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b79260008152816020820152019061294a565b61360c6040820182612888565b61362461361884612bdd565b93610120810190612888565b9290303b15610359576000936136689160405196879586957f957122ab000000000000000000000000000000000000000000000000000000008752600487016134f9565b0381305afa90816136f1575b5061044d57600161368361353c565b6308c379a01461369c575b61369457565b61044d612a43565b6136a461355a565b806136b0575b5061368e565b805160009250156136aa57610a3f906040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b8061112d6136fe9261057b565b38613674565b9291906137109061374c565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab15761373f9061374c565b9116610a43576109b35750565b80156137e65761375b90612f5e565b7f182d361d27e8fee91541f8630840b9272bdb770c7bb6239b09cd74563c40534154806137cb575073ffffffffffffffffffffffffffffffffffffffff425b65ffffffffffff908160408501511681119182156137bb575b505091511691565b60208501511611905038806137b3565b73ffffffffffffffffffffffffffffffffffffffff9061379a565b50600090600090565b156137f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138678282613d37565b61387081613112565b60208401526138ae6effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137ef565b6138b782613df9565b6138c2818584613ed1565b97906138f36130276138e8875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c62565b6139ef5761390043600052565b73ffffffffffffffffffffffffffffffffffffffff61393860a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139d5575b505a810360a0840135106139685760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139e69297508584614bc9565b9590923861393e565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a6f8184613d37565b613a7883613112565b6020850152613ab66effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137ef565b613abf81613df9565b613acb8186868b61423d565b9890613afc613027613af1865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c62565b613bf457613b0943600052565b73ffffffffffffffffffffffffffffffffffffffff613b4160a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bd9575b505a840360a086013510613b735750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613beb929850868685614e5c565b96909138613b47565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613cbe8260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ccb84611e82565b9055161490565b15613cd957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613da990613d61613d4782612bdd565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190612888565b908115613dee57613dd361143161142b8460a094613dce601461044d99981015613cd2565b613299565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e3b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613e1e565b613e5c60409295949395606083526060830190612c9c565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b810103600f8101855201836105ab565b6040906108b793928152816020820152019061294a565b916000926000925a93613f9f6020835193613f00855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f18613f116040830183612888565b90846144a8565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f3d43600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141d5575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e44565b03938a1690f18291816141b5575b506141ac5750600190613fbe61353c565b6308c379a014614158575b506140eb575b613fdc575b50505a900391565b6140069073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614021610c2582546dffffffffffffffffffffffffffff1690565b80831161407e57614077926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fd4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61416061355a565b908161416c5750613fc9565b610a3f9161417a9150613e66565b6040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b9550613fcf9050565b6141ce91925060203d8111612b3457612b2581836105ab565b9038613fad565b945061421b610c256142078c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b8111156142325750856060835b96915050613f60565b606087918d03614229565b90926000936000935a94614286602083519361426d855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f1861427e6040830183612888565b90848c6147af565b03938a1690f1829181614488575b5061447f57506001906142a561353c565b6308c379a014614429575b506143bb575b6142c4575b5050505a900391565b6142ee9073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161430a610c2584546dffffffffffffffffffffffffffff1690565b90818311614355575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff161790553880806142bb565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61443161355a565b908161443d57506142b0565b86916144499150613e66565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613eba565b96506142b69050565b6144a191925060203d8111612b3457612b2581836105ab565b9038614294565b9091806144b457505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b61474257600060206144e6610ea4610ea46134a3565b606086510151604051809481937f570e1a36000000000000000000000000000000000000000000000000000000008352826145258a8a60048401613492565b0393f1908115614735575b600091614717575b5073ffffffffffffffffffffffffffffffffffffffff8082169586156146aa571680950361463d573b156145d05761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361459793613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61472f915060203d81116116395761162a81836105ab565b38614538565b61473d612a43565b614530565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147be575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614a4f57600060206147f0610ea4610ea46134a3565b606087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261482f8b8b60048401613492565b0393f1908115614a42575b600091614a24575b5073ffffffffffffffffffffffffffffffffffffffff8082169687156149b65716809603614948573b156148e2575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936148a293613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147b8565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614a3c915060203d81116116395761162a81836105ab565b38614842565b614a4a612a43565b61483a565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614abc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614b5183610639565b91614b5f60405193846105ab565b8383526020848301011161035957602092614b7f91848085019101612927565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b939192606094600094600093805192614c0860a08a86015195614bed888811614ab5565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614c338373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614c4f610c2587546dffffffffffffffffffffffffffff1690565b96858810614def5773ffffffffffffffffffffffffffffffffffffffff60208a9894614cc58a966dffffffffffffffffffffffffffff8b614cfe9e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e44565b0395169103f1908183918493614dc9575b50614dc2575050600190614d2161353c565b6308c379a014614da0575b50614d3357565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614da861355a565b9081614db45750614d2c565b610a3f9161417a9150614b85565b9450925050565b909250614de891503d8085833e614de081836105ab565b810190614b1a565b9138614d0f565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614e8360a08b84015193614bed848611614ab5565b93614eae8573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614ec9610c2582546dffffffffffffffffffffffffffff1690565b878110615024579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614cc58a966dffffffffffffffffffffffffffff8d614f439e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615006575b50614ffe575050600190614f6661353c565b6308c379a014614fdf575b50614f795750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b614fe761355a565b9081614ff35750614f71565b614449925050614b85565b955093505050565b90925061501d91503d8085833e614de081836105ab565b9138614f54565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b9291906150b06040916000865260606020870152606086019061294a565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f702072657665727465640000000000000000000000006080820152816040820152019061294a565b9291905a93805190615112826153db565b9260a0830194615136865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9281841691826152a257505050615176845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a90030193840296604083019288845110615235576151be6020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611f42565b01519261523060206152026151e7845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b999181516152b2575b5050615178565b606087015191813b15610359576153009289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615092565b0393f190816153c8575b506153c1576153176124d9565b80511561535457610a3f906040519182917f65c8fd4d000000000000000000000000000000000000000000000000000000008352600483016150b5565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b38806152ab565b8061112d6153d59261057b565b3861530a565b60e060c082015191015180821461542f577f59e3bb5c9eacf8e7a9c3802366751badc68d4d97d3e35b1744045784c52f20dd5480615429575048905b0180821015615424575090565b905090565b90615417565b509056fea26469706673582212203fca224dfbd8b1fefa805b4e915b908764a6afcc59f7052fa77d8196e44e8ae864736f6c63430008110033", "sourceMap": "1235:33115:17:-:0;;;;;;;1716:1:12;1821:22;1716:1;1235:33115:17;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x60806040526004361015610023575b361561001957600080fd5b610021611ebc565b005b60003560e01c80630396cb60146101b35780630bd28e3b146101aa5780631b2e01b8146101a15780631d732756146101985780631fad948c1461018f578063205c28781461018657806335567e1a1461017d5780634b1d7cf5146101745780635287ce121461016b57806370a08231146101625780638f41ec5a14610159578063957122ab146101505780639b249f6914610147578063a61935311461013e578063b760faf914610135578063bb9fe6bf1461012c578063c23a5cea14610123578063d6383f941461011a578063ee219423146101115763fc7e286d0361000e5761010c611d9c565b61000e565b5061010c611b84565b5061010c611a1c565b5061010c611883565b5061010c611705565b5061010c6116c6565b5061010c6116a5565b5061010c61151c565b5061010c611349565b5061010c61130e565b5061010c611289565b5061010c611139565b5061010c610df1565b5061010c610d2c565b5061010c610b8d565b5061010c6108ba565b5061010c6106e7565b5061010c610467565b5061010c610385565b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043563ffffffff8116808203610359576103547fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916102716102413373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161024d811515612033565b61026a610261600185015463ffffffff1690565b63ffffffff1690565b1115612098565b54926103366dffffffffffffffffffffffffffff946102f461029834888460781c16611f2d565b966102a48815156120fd565b6102b081891115612162565b6102d4816102bc6105ec565b941684906dffffffffffffffffffffffffffff169052565b6001602084015287166dffffffffffffffffffffffffffff166040830152565b63ffffffff83166060820152600060808201526103313373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b6121c7565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b600080fd5b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361035957565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043577ffffffffffffffffffffffffffffffffffffffffffffffff81168103610359576104149033600052600160205260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61041e8154611e82565b9055005b73ffffffffffffffffffffffffffffffffffffffff81160361035957565b6024359061044d82610422565b565b60c4359061044d82610422565b359061044d82610422565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760206104fc6004356104a881610422565b73ffffffffffffffffffffffffffffffffffffffff6104c561035e565b91166000526001835260406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761055157604052565b610559610505565b604052565b610100810190811067ffffffffffffffff82111761055157604052565b67ffffffffffffffff811161055157604052565b6060810190811067ffffffffffffffff82111761055157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055157604052565b6040519061044d82610535565b6040519060c0820182811067ffffffffffffffff82111761055157604052565b604051906040820182811067ffffffffffffffff82111761055157604052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209267ffffffffffffffff8111610675575b01160190565b61067d610505565b61066f565b92919261068e82610639565b9161069c60405193846105ab565b829481845281830111610359578281602093846000960137010152565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b5034610359576101c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957366023820112156103595761074a903690602481600401359101610682565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101808112610359576101006040519161078783610535565b12610359576040516107988161055e565b6107a0610440565b815260443560208201526064356040820152608435606082015260a43560808201526107ca61044f565b60a082015260e43560c08201526101043560e082015281526101243560208201526101443560408201526101643560608201526101843560808201526101a4359182116103595761083e9261082661082e9336906004016106b9565b929091612fca565b6040519081529081906020820190565b0390f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595760043567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248460051b830101116103595760240191906024356108b781610422565b90565b5034610359576108c936610842565b6108d482939261268a565b60005b84811061094957506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f9728480a183915b85831061091a576100218585612797565b90919360019061093f61092e878987612749565b6109388886612727565b5190612a50565b0194019190610909565b61097461096d61095b83859795612727565b51610967848987612749565b84613a5c565b919061374c565b73ffffffffffffffffffffffffffffffffffffffff92918316610b1f57610ab15761099e9061374c565b9116610a43576109b3576001019290926108d7565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b0390fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b610a3f836040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600435610bc981610422565b6024359060009133835282602052604083206dffffffffffffffffffffffffffff81541692838311610cce57848373ffffffffffffffffffffffffffffffffffffffff829593610c718496610c38610c258798610ccb9c61256e565b6dffffffffffffffffffffffffffff1690565b6dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610cc56124d9565b5061257b565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b50346103595760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576020600435610d6a81610422565b73ffffffffffffffffffffffffffffffffffffffff610d8761035e565b911660005260018252610dc28160406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b503461035957610e0036610842565b6000805b838210610fdf57610e15915061268a565b7fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000805b848110610f4557505060008093815b818110610e8457610021868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2612797565b610ee8610e9282848a612b3b565b610ebd610ea4610ea460208401612bdd565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a280612b89565b906000915b808310610f0557505050610f0090611e82565b610e4d565b90919497610f38610f32610f3e92610f2c8c610938610f258c898b612749565b918d612727565b90611f2d565b99611e82565b95611e82565b9190610eed565b610f50818688612b3b565b6020610f68610f5f8380612b89565b92909301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff60009316905b828410610f9d5750505050610f9890611e82565b610e3e565b90919294610f3881610fd285610fcb610fb9610fd7968d612727565b51610fc58c8b8a612749565b85613a5c565b908b613704565b611e82565b929190610f84565b610fea828587612b3b565b90610ff58280612b89565b92611005610ea460208301612bdd565b9173ffffffffffffffffffffffffffffffffffffffff831661102a6001821415612be7565b61104b575b5050506110459161103f91611f2d565b91611e82565b90610e04565b9095926110646040999693999895989788810190612888565b92908a3b156103595789938b918a5193849283927fe3563a4f00000000000000000000000000000000000000000000000000000000845260049e8f8501936110ab94612d81565b03815a93600094fa9081611120575b5061110a5786517f86a9f75000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16818a0190815281906020010390fd5b949750929550909350918161103f61104561102f565b8061112d6111339261057b565b80611303565b386110ba565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761083e73ffffffffffffffffffffffffffffffffffffffff60043561118d81610422565b60806040928392835161119f81610535565b60009381858093528260208201528287820152826060820152015216815280602052209061122e65ffffffffffff60018351946111db86610535565b80546dffffffffffffffffffffffffffff8082168852607082901c60ff161515602089015260789190911c1685870152015463ffffffff8116606086015260201c16608084019065ffffffffffff169052565b5191829182919091608065ffffffffffff8160a08401956dffffffffffffffffffffffffffff808251168652602082015115156020870152604082015116604086015263ffffffff6060820151166060860152015116910152565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff6004356112da81610422565b16600052600060205260206dffffffffffffffffffffffffffff60406000205416604051908152f35b600091031261035957565b50346103595760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957602060405160018152f35b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035957600467ffffffffffffffff81358181116103595761139a90369084016106b9565b9050602435916113a983610422565b604435908111610359576113c090369085016106b9565b929091159081611512575b506114ab57601482101561141b575b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160409060208152600060208201520190565b61142b6114379261143192613299565b906132a7565b60601c90565b3b156114445738806113da565b610a3f906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601b60208201527f41413330207061796d6173746572206e6f74206465706c6f796564000000000060408201520190565b610a3f836040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601960208201527f41413230206163636f756e74206e6f74206465706c6f7965640000000000000060408201520190565b90503b15386113cb565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595760043567ffffffffffffffff8111610359576115cc602061157360249336906004016106b9565b73ffffffffffffffffffffffffffffffffffffffff9291836115936134a3565b169060006040518097819582947f570e1a3600000000000000000000000000000000000000000000000000000000845260048401613492565b03925af1918215611640575b600092611610575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b61163291925060203d8111611639575b61162a81836105ab565b81019061347d565b90386115e0565b503d611620565b611648612a43565b6115d8565b90816101609103126103595790565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610359576004359067ffffffffffffffff8211610359576108b79160040161164d565b50346103595760206116be6116b93661165c565b613112565b604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595761002160043561170081610422565b611ec1565b5034610359576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611880573381528060205260408120600181019063ffffffff825416908115611822576117bf6117846117e793611776611771855460ff9060701c1690565b61232b565b65ffffffffffff4216612390565b84547fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff16602082901b69ffffffffffff000000001617909455565b7fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff8154169055565b60405165ffffffffffff91909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a280f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b80fd5b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610359576004356118bf81610422565b610ccb73ffffffffffffffffffffffffffffffffffffffff6119013373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b926119b9611924610c2586546dffffffffffffffffffffffffffff9060781c1690565b946119308615156123aa565b6119916001820161196965ffffffffffff611955835465ffffffffffff9060201c1690565b1661196181151561240f565b421015612474565b80547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000169055565b7fffffff0000000000000000000000000000ffffffffffffffffffffffffffffff8154169055565b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810186905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2600080809581948294165af1611a166124d9565b50612509565b50346103595760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595767ffffffffffffffff60043581811161035957611a6d90369060040161164d565b60243591611a7a83610422565b60443590811161035957611a95610a3f9136906004016106b9565b611a9d612607565b611aa6856135ff565b611ab9611ab38287613854565b90612eac565b94611ac982600092438452612a50565b96438252819360609573ffffffffffffffffffffffffffffffffffffffff8316611b50575b505050506080015193611b1d6040611b0f602084015165ffffffffffff1690565b92015165ffffffffffff1690565b906040519687967f8b7ac98000000000000000000000000000000000000000000000000000000000885260048801612e51565b83955083949650611b6a6040949293945180948193612e43565b03925af1906080611b796124d9565b929190388080611aee565b503461035957611b933661165c565b611b9b612607565b611ba4826135ff565b611bae8183613854565b825160a00151919391611bdb9073ffffffffffffffffffffffffffffffffffffffff16613428565b613428565b90611bff611bd6855173ffffffffffffffffffffffffffffffffffffffff90511690565b94611c08613261565b50611c37611c1b60409586810190612888565b90600060148310611d94575061142b611bd69261143192613299565b91611c4191612eac565b805173ffffffffffffffffffffffffffffffffffffffff169073ffffffffffffffffffffffffffffffffffffffff821660018114916080880151978781015191886020820151611c969065ffffffffffff1690565b91015165ffffffffffff16916060015192611caf6105f9565b9a8b5260208b0152841515898b015265ffffffffffff1660608a015265ffffffffffff16608089015260a088015215159081611d8b575b50611d205750610a3f92519485947fe0cff05f000000000000000000000000000000000000000000000000000000008652600486016133ce565b9190610a3f93611d2f84613428565b611d56611d3a610619565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b6020850152519586957ffaecb4e40000000000000000000000000000000000000000000000000000000087526004870161333c565b90501538611ce6565b915050613428565b50346103595760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103595773ffffffffffffffffffffffffffffffffffffffff600435611ded81610422565b16600052600060205260a0604060002065ffffffffffff60018254920154604051926dffffffffffffffffffffffffffff90818116855260ff8160701c161515602086015260781c16604084015263ffffffff8116606084015260201c166080820152f35b507f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611eb0570190565b611eb8611e52565b0190565b61044d335b73ffffffffffffffffffffffffffffffffffffffff90611ee13482611f42565b168060005260006020527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206dffffffffffffffffffffffffffff60406000205416604051908152a2565b91908201809211611f3a57565b61044d611e52565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000206dffffffffffffffffffffffffffff80825416928301809311612026575b808311611fc85761044d92166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6465706f736974206f766572666c6f77000000000000000000000000000000006044820152fd5b61202e611e52565b611f83565b1561203a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b1561209f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b1561210457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b1561216957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b9065ffffffffffff6080600161044d946122276dffffffffffffffffffffffffffff86511682906dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b602085015115156eff000000000000000000000000000082549160701b16807fffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff83161783557fffffff000000000000000000000000000000ffffffffffffffffffffffffffff7cffffffffffffffffffffffffffff000000000000000000000000000000604089015160781b16921617178155019263ffffffff6060820151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008554161784550151167fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff69ffffffffffff0000000083549260201b169116179055565b1561233257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b91909165ffffffffffff80809416911601918211611f3a57565b156123b157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b1561241657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b1561247b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b3d15612504573d906124ea82610639565b916124f860405193846105ab565b82523d6000602084013e565b606090565b1561251057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b91908203918211611f3a57565b1561258257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60209067ffffffffffffffff81116125fa575b60051b0190565b612602610505565b6125f3565b6040519061261482610535565b604051608083610100830167ffffffffffffffff81118482101761267d575b60405260009283815283602082015283604082015283606082015283838201528360a08201528360c08201528360e082015281528260208201528260408201528260608201520152565b612685610505565b612633565b90612694826125e0565b6126a160405191826105ab565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126cf82946125e0565b019060005b8281106126e057505050565b6020906126eb612607565b828285010152016126d4565b507f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602091815181101561273c575b60051b010190565b6127446126f7565b612734565b919081101561278a575b60051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea181360301821215610359570190565b6127926126f7565b612753565b73ffffffffffffffffffffffffffffffffffffffff16801561282a57600080809381935af16127c46124d9565b50156127cc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff82116103595760200191813603831361035957565b90816020910312610359575190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60005b83811061293a5750506000910152565b818101518382015260200161292a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361298681518092818752878088019101612927565b0116010190565b906129a76080916108b796946101c08086528501916128e8565b9360e0815173ffffffffffffffffffffffffffffffffffffffff80825116602087015260208201516040870152604082015160608701526060820151858701528482015160a087015260a08201511660c086015260c081015182860152015161010084015260208101516101208401526040810151610140840152606081015161016084015201516101808201526101a081840391015261294a565b506040513d6000823e3d90fd5b612aa0602091612a696060850151916060810190612888565b92909160405195869485947f1d7327560000000000000000000000000000000000000000000000000000000086526004860161298d565b03816000305af160009181612b0b575b506108b757612abd6124d9565b60206000803e805115612ad257805190602001fd5b6040517f462c71b20000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604490fd5b612b2d91925060203d8111612b34575b612b2581836105ab565b8101906128d9565b9038612ab0565b503d612b1b565b9190811015612b7c575b60051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610359570190565b612b846126f7565b612b45565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610359570180359067ffffffffffffffff821161035957602001918160051b3603831361035957565b356108b781610422565b15612bee57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561035957016020813591019167ffffffffffffffff821161035957813603831361035957565b6108b791612cc781612cad8461045c565b73ffffffffffffffffffffffffffffffffffffffff169052565b60208201356020820152612d62612d13612cf8612ce76040860186612c4c565b6101608060408801528601916128e8565b612d056060860186612c4c565b9085830360608701526128e8565b6080840135608084015260a084013560a084015260c084013560c084015260e084013560e08401526101008085013590840152610120612d5581860186612c4c565b91858403908601526128e8565b91612d736101409182810190612c4c565b9290918185039101526128e8565b949391929083604087016040885252606086019360608160051b8801019482600090815b848310612dc4575050505050508460206108b7959685039101526128e8565b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b820301855288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea184360301811215612e3f5760019184612e2d9201612c9c565b98602090810196950193019190612da5565b8280fd5b908092918237016000815290565b9290936108b796959260c0958552602085015265ffffffffffff8092166040850152166060830152151560808201528160a0820152019061294a565b60405190612e9a8261058f565b60006040838281528260208201520152565b612ec1612ec791612ebb612e8d565b50612f5e565b91612f5e565b9073ffffffffffffffffffffffffffffffffffffffff9182825116928315612f53575b65ffffffffffff928391826040816020850151169301511693836040816020840151169201511690808410612f4b575b50808511612f43575b5060405195612f318761058f565b16855216602084015216604082015290565b935038612f23565b925038612f1a565b815181169350612eea565b612f66612e8d565b5065ffffffffffff808260a01c168015612fb2575b60405192612f888461058f565b73ffffffffffffffffffffffffffffffffffffffff8116845260d01c602084015216604082015290565b5080612f7b565b9060206108b792818152019061294a565b9291925a903033036130735782518151613000575b50506108b793612ffa915a9003608084015101933691610682565b90615101565b5161302b916130279173ffffffffffffffffffffffffffffffffffffffff16905a916130d1565b1590565b613036573880612fdf565b610a3f6130416130e3565b6040519182917f462c71b200000000000000000000000000000000000000000000000000000000835260048301612fb9565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b9060009283809360208451940192f190565b3d61080080821161310a575b50604051906020818301016040528082526000602083013e90565b9050386130ef565b6131286131226040830183612888565b90613256565b906131396131226060830183612888565b906131ef61314e613122610120840184612888565b60405194859360208501956101008201359260e08301359260c08101359260a08201359260808301359273ffffffffffffffffffffffffffffffffffffffff60208201359135168c9693909a9998959261012098959273ffffffffffffffffffffffffffffffffffffffff6101408a019d168952602089015260408801526060870152608086015260a085015260c084015260e08301526101008201520152565b03916132217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938481018352826105ab565b5190206040805160208101928352309181019190915246606082015260809283018152909161325090826105ab565b51902090565b816040519182372090565b604051906040820182811067ffffffffffffffff82111761328c575b60405260006020838281520152565b613294610505565b61327d565b906014116103595790601490565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090358181169392601481106132dc57505050565b60140360031b82901b16169150565b9060c060a06108b793805184526020810151602085015260408101511515604085015265ffffffffffff80606083015116606086015260808201511660808501520151918160a0820152019061294a565b929461339d61044d9561338b610100959998613379613365602097610140808c528b01906132eb565b9b878a019060208091805184520151910152565b80516060890152602001516080880152565b805160a08701526020015160c0860152565b73ffffffffffffffffffffffffffffffffffffffff81511660e0850152015191019060208091805184520151910152565b61341761044d946134056133f060a0959998969960e0865260e08601906132eb565b98602085019060208091805184520151910152565b80516060840152602001516080830152565b019060208091805184520151910152565b9073ffffffffffffffffffffffffffffffffffffffff613446613261565b9216600052600060205263ffffffff600160406000206dffffffffffffffffffffffffffff815460781c1685520154166020830152565b9081602091031261035957516108b781610422565b9160206108b79381815201916128e8565b7fbc79d710c27c417daea28cbdc16e638da2309ea2f5542218b102827c395d15d45473ffffffffffffffffffffffffffffffffffffffff16806108b75750737fc98430eaedbb6070b35b39d79872504908834890565b9061352873ffffffffffffffffffffffffffffffffffffffff916108b7979596946060855260608501916128e8565b9416602082015260408185039101526128e8565b60009060033d1161354957565b905060046000803e60005160e01c90565b600060443d106108b7576040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc91823d016004833e815167ffffffffffffffff918282113d6024840111176135d6578184019485519384116135de573d850101602084870101116135d657506108b7929101602001906105ab565b949350505050565b50949350505050565b9060406108b79260008152816020820152019061294a565b61360c6040820182612888565b61362461361884612bdd565b93610120810190612888565b9290303b15610359576000936136689160405196879586957f957122ab000000000000000000000000000000000000000000000000000000008752600487016134f9565b0381305afa90816136f1575b5061044d57600161368361353c565b6308c379a01461369c575b61369457565b61044d612a43565b6136a461355a565b806136b0575b5061368e565b805160009250156136aa57610a3f906040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b8061112d6136fe9261057b565b38613674565b9291906137109061374c565b909273ffffffffffffffffffffffffffffffffffffffff80809516911603610b1f57610ab15761373f9061374c565b9116610a43576109b35750565b80156137e65761375b90612f5e565b7f182d361d27e8fee91541f8630840b9272bdb770c7bb6239b09cd74563c40534154806137cb575073ffffffffffffffffffffffffffffffffffffffff425b65ffffffffffff908160408501511681119182156137bb575b505091511691565b60208501511611905038806137b3565b73ffffffffffffffffffffffffffffffffffffffff9061379a565b50600090600090565b156137f657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b916000915a938151906138678282613d37565b61387081613112565b60208401526138ae6effffffffffffffffffffffffffffff60808401516060850151176040850151176101008401359060e0850135171711156137ef565b6138b782613df9565b6138c2818584613ed1565b97906138f36130276138e8875173ffffffffffffffffffffffffffffffffffffffff1690565b602088015190613c62565b6139ef5761390043600052565b73ffffffffffffffffffffffffffffffffffffffff61393860a0606097015173ffffffffffffffffffffffffffffffffffffffff1690565b166139d5575b505a810360a0840135106139685760809360c092604087015260608601525a900391013501910152565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413430206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b909350816139e69297508584614bc9565b9590923861393e565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b9290916000925a8251613a6f8184613d37565b613a7883613112565b6020850152613ab66effffffffffffffffffffffffffffff60808301516060840151176040840151176101008601359060e0870135171711156137ef565b613abf81613df9565b613acb8186868b61423d565b9890613afc613027613af1865173ffffffffffffffffffffffffffffffffffffffff1690565b602087015190613c62565b613bf457613b0943600052565b73ffffffffffffffffffffffffffffffffffffffff613b4160a0606096015173ffffffffffffffffffffffffffffffffffffffff1690565b16613bd9575b505a840360a086013510613b735750604085015260608401526080919060c0905a900391013501910152565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601e60448201527f41413430206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b90925081613beb929850868685614e5c565b96909138613b47565b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b73ffffffffffffffffffffffffffffffffffffffff16600052600160205267ffffffffffffffff613cbe8260401c60406000209077ffffffffffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b91825492613ccb84611e82565b9055161490565b15613cd957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b613da990613d61613d4782612bdd565b73ffffffffffffffffffffffffffffffffffffffff168452565b602081013560208401526080810135604084015260a0810135606084015260c0810135608084015260e081013560c084015261010081013560e0840152610120810190612888565b908115613dee57613dd361143161142b8460a094613dce601461044d99981015613cd2565b613299565b73ffffffffffffffffffffffffffffffffffffffff16910152565b505060a06000910152565b60a081015173ffffffffffffffffffffffffffffffffffffffff1615613e3b5760c060035b60ff60408401519116606084015102016080830151019101510290565b60c06001613e1e565b613e5c60409295949395606083526060830190612c9c565b9460208201520152565b9061044d602f60405180947f414132332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b810103600f8101855201836105ab565b6040906108b793928152816020820152019061294a565b916000926000925a93613f9f6020835193613f00855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f18613f116040830183612888565b90846144a8565b60a086015173ffffffffffffffffffffffffffffffffffffffff1690613f3d43600052565b85809373ffffffffffffffffffffffffffffffffffffffff8094161598896141d5575b60600151908601516040517f3a871cdd000000000000000000000000000000000000000000000000000000008152978896879586939060048501613e44565b03938a1690f18291816141b5575b506141ac5750600190613fbe61353c565b6308c379a014614158575b506140eb575b613fdc575b50505a900391565b6140069073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614021610c2582546dffffffffffffffffffffffffffff1690565b80831161407e57614077926dffffffffffffffffffffffffffff9103166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b3880613fd4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61416061355a565b908161416c5750613fc9565b610a3f9161417a9150613e66565b6040519182917f220266b6000000000000000000000000000000000000000000000000000000008352600483016135e7565b9550613fcf9050565b6141ce91925060203d8111612b3457612b2581836105ab565b9038613fad565b945061421b610c256142078c73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b546dffffffffffffffffffffffffffff1690565b8b8111156142325750856060835b96915050613f60565b606087918d03614229565b90926000936000935a94614286602083519361426d855173ffffffffffffffffffffffffffffffffffffffff1690565b95613f1861427e6040830183612888565b90848c6147af565b03938a1690f1829181614488575b5061447f57506001906142a561353c565b6308c379a014614429575b506143bb575b6142c4575b5050505a900391565b6142ee9073ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9161430a610c2584546dffffffffffffffffffffffffffff1690565b90818311614355575082547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000169190036dffffffffffffffffffffffffffff161790553880806142bb565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601660408201527f4141323320726576657274656420286f72204f4f47290000000000000000000060608201520190565b61443161355a565b908161443d57506142b0565b86916144499150613e66565b90610a3f6040519283927f220266b600000000000000000000000000000000000000000000000000000000845260048401613eba565b96506142b69050565b6144a191925060203d8111612b3457612b2581836105ab565b9038614294565b9091806144b457505050565b81515173ffffffffffffffffffffffffffffffffffffffff1692833b61474257600060206144e6610ea4610ea46134a3565b606086510151604051809481937f570e1a36000000000000000000000000000000000000000000000000000000008352826145258a8a60048401613492565b0393f1908115614735575b600091614717575b5073ffffffffffffffffffffffffffffffffffffffff8082169586156146aa571680950361463d573b156145d05761143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9361459793613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313520696e6974436f6465206d757374206372656174652073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b61472f915060203d81116116395761162a81836105ab565b38614538565b61473d612a43565b614530565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601f60408201527f414131302073656e64657220616c726561647920636f6e73747275637465640060608201520190565b929091816147be575b50505050565b82515173ffffffffffffffffffffffffffffffffffffffff1693843b614a4f57600060206147f0610ea4610ea46134a3565b606087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261482f8b8b60048401613492565b0393f1908115614a42575b600091614a24575b5073ffffffffffffffffffffffffffffffffffffffff8082169687156149b65716809603614948573b156148e2575061143161142b7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936148a293613299565b602083810151935160a001516040805173ffffffffffffffffffffffffffffffffffffffff9485168152939091169183019190915290a3388080806147b8565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610a3f826040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610a3f846040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614a3c915060203d81116116395761162a81836105ab565b38614842565b614a4a612a43565b61483a565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b15614abc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4141343120746f6f206c6974746c6520766572696669636174696f6e476173006044820152fd5b919060408382031261035957825167ffffffffffffffff81116103595783019080601f8301121561035957815191614b5183610639565b91614b5f60405193846105ab565b8383526020848301011161035957602092614b7f91848085019101612927565b92015190565b9061044d602f60405180947f414133332072657665727465643a2000000000000000000000000000000000006020830152613eaa8151809260208686019101612927565b939192606094600094600093805192614c0860a08a86015195614bed888811614ab5565b015173ffffffffffffffffffffffffffffffffffffffff1690565b91614c338373ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b94614c4f610c2587546dffffffffffffffffffffffffffff1690565b96858810614def5773ffffffffffffffffffffffffffffffffffffffff60208a9894614cc58a966dffffffffffffffffffffffffffff8b614cfe9e03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b015194604051998a98899788937ff465c77e00000000000000000000000000000000000000000000000000000000855260048501613e44565b0395169103f1908183918493614dc9575b50614dc2575050600190614d2161353c565b6308c379a014614da0575b50614d3357565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601660408201527f4141333320726576657274656420286f72204f4f47290000000000000000000060608201520190565b614da861355a565b9081614db45750614d2c565b610a3f9161417a9150614b85565b9450925050565b909250614de891503d8085833e614de081836105ab565b810190614b1a565b9138614d0f565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b919492939093606095600095600093825190614e8360a08b84015193614bed848611614ab5565b93614eae8573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b614ec9610c2582546dffffffffffffffffffffffffffff1690565b878110615024579273ffffffffffffffffffffffffffffffffffffffff60208a98969394614cc58a966dffffffffffffffffffffffffffff8d614f439e9c9a03166dffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffff0000000000000000000000000000825416179055565b0395169103f1908183918493615006575b50614ffe575050600190614f6661353c565b6308c379a014614fdf575b50614f795750565b604080517f220266b600000000000000000000000000000000000000000000000000000000815260048101929092526024820152601660448201527f4141333320726576657274656420286f72204f4f4729000000000000000000006064820152608490fd5b614fe761355a565b9081614ff35750614f71565b614449925050614b85565b955093505050565b90925061501d91503d8085833e614de081836105ab565b9138614f54565b610a3f8a6040519182917f220266b600000000000000000000000000000000000000000000000000000000835260048301608091815260406020820152601e60408201527f41413331207061796d6173746572206465706f73697420746f6f206c6f77000060608201520190565b9291906150b06040916000865260606020870152606086019061294a565b930152565b9060a06108b7926000815260606020820152601460608201527f4141353020706f73744f702072657665727465640000000000000000000000006080820152816040820152019061294a565b9291905a93805190615112826153db565b9260a0830194615136865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff9281841691826152a257505050615176845173ffffffffffffffffffffffffffffffffffffffff1690565b975b5a90030193840296604083019288845110615235576151be6020928a7f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f96510390611f42565b01519261523060206152026151e7845173ffffffffffffffffffffffffffffffffffffffff1690565b985173ffffffffffffffffffffffffffffffffffffffff1690565b9201519589846040519586951699169784606091949392608082019582526001602083015260408201520152565b0390a4565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152602060408201527f414135312070726566756e642062656c6f772061637475616c476173436f737460608201520190565b999181516152b2575b5050615178565b606087015191813b15610359576153009289600080946040518097819682957fa9a234090000000000000000000000000000000000000000000000000000000084528c029060048401615092565b0393f190816153c8575b506153c1576153176124d9565b80511561535457610a3f906040519182917f65c8fd4d000000000000000000000000000000000000000000000000000000008352600483016150b5565b6040517f220266b600000000000000000000000000000000000000000000000000000000815280610a3f600482016080906000815260406020820152601260408201527f4141353020706f73744f7020726576657274000000000000000000000000000060608201520190565b38806152ab565b8061112d6153d59261057b565b3861530a565b60e060c082015191015180821461542f577f59e3bb5c9eacf8e7a9c3802366751badc68d4d97d3e35b1744045784c52f20dd5480615429575048905b0180821015615424575090565b905090565b90615417565b509056fea26469706673582212203fca224dfbd8b1fefa805b4e915b908764a6afcc59f7052fa77d8196e44e8ae864736f6c63430008110033", "sourceMap": "1235:33115:17:-:0;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2684:47:3;;2169:10;2258:80;2160:20;2169:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;2160:20:3;2198:19;2190:58;2198:19;;;2190:58;:::i;:::-;2266:39;1235:33115:17;2285:20:3;;;1235:33115:17;;;;;;;;;;2266:39:3;-1:-1:-1;2266:39:3;2258:80;:::i;:::-;1235:33115:17;;;;2377:9:3;2532:137;2364:22;2377:9;1235:33115:17;;;;;2364:22:3;:::i;:::-;2404:9;2396:40;2404:9;;;2396:40;:::i;:::-;2446:53;2454:26;;;;2446:53;:::i;:::-;2532:137;1235:33115:17;;;:::i;:::-;;;2532:137:3;1235:33115:17;;;;;;2532:137:3;2285:20;1235:33115:17;2532:137:3;;1235:33115:17;;;;;2532:137:3;;;1235:33115:17;;2532:137:3;1235:33115:17;;;2532:137:3;;;1235:33115:17;;2532:137:3;;;1235:33115:17;2509:20:3;2169:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;2509:20:3;1235:33115:17;:::i;:::-;2532:137:3;1235:33115:17;;;;;;;;;;;;;2169:10:3;;1235:33115:17;;;;;;;2684:47:3;;;;1235:33115:17;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;848:36:1;868:10;;-1:-1:-1;1235:33115:17;848:19:1;1235:33115:17;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;848:36:1;:38;1235:33115:17;;848:38:1;:::i;:::-;1235:33115:17;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;268:74:1;1235:33115:17;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;268:74:1;1235:33115:17;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;268:74:1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;16366:15;1235:33115;;16366:15;1235:33115;;;;;;;;;;;16366:15;1235:33115;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;5767:24;;;;;:::i;:::-;5843:1;5846:10;;;;;;6165:21;5843:1;6205:17;;;;;6242:13;6237:120;6257:10;;;;;;6396:9;;;;:::i;6269:3::-;6323:6;;;1235:33115;6323:6;1235:33115;6323:6;;;;;:::i;:::-;6331:10;;;;:::i;:::-;;1235:33115;;:::i;:::-;;6269:3;1235:33115;6242:13;;;;5858:3;25287:34;5989:38;5908:10;;;;;;:::i;:::-;;6012:6;;;;;:::i;:::-;5989:38;;:::i;:::-;25287:34;;;:::i;:::-;1235:33115;;;;;25331:111;;25451:96;;25847:43;;;:::i;:::-;1235:33115;;25900:105;;26014:106;;1235:33115;;5831:13;;;;;26014:106;1235:33115;;;26055:54;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;26055:54;;;;;25900:105;25953:41;1235:33115;;;25953:41;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;25451:96;25492:44;1235:33115;;;25492:44;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;25331:111;25390:41;1235:33115;;;25390:41;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;4450:10:3;;1235:33115:17;;;;;;;;;;;;4479:30:3;;;;1235:33115:17;;4572:29:3;;1235:33115:17;4572:29:3;;;4549:53;4572:29;;4564:38;4572:29;;;4757:38;4572:29;;:::i;:::-;1235:33115:17;;;;4564:38:3;1235:33115:17;;;;;;;;;;4549:53:3;1235:33115:17;;;;;;;;;;;;;;4450:10:3;;4617:54;;;1235:33115:17;4699:48:3;;;;:::i;:::-;;4757:38;:::i;:::-;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;462:19:1;1235:33115:17;;462:32:1;1235:33115:17;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;462:32:1;1235:33115:17;;;;;;;;462:55:1;1235:33115:17;;;;;;;;;;;:::i;:::-;6902:1;6918:13;6933:11;;;;;;7684:26;;;;:::i;:::-;7726:17;6902:1;7726:17;;6902:1;7788:13;7803:11;;;;;;8531;;6902:1;8500:21;8557:13;;8572:11;;;;;;9098:9;9024:38;;6902:1;8678:51;9024:38;;;9098:9;:::i;8585:3::-;8774:11;8640:19;;;;;:::i;:::-;8678:51;8705:23;8713:14;7115;8713;;;:::i;:::-;1235:33115;;;;8678:51;;6902:1;8678:51;;8774:11;;:::i;:::-;8846:13;6902:1;8841:159;8861:10;;;;;;8585:3;;;;;;:::i;:::-;8557:13;;8873:3;8933:6;;;;8976:9;8896:62;8873:3;8933:6;8896:62;8933:6;8941:16;8933:6;;;;;:::i;:::-;8941:16;;;:::i;8896:62::-;;;:::i;:::-;8976:9;;:::i;:::-;8873:3;;:::i;:::-;8846:13;;;;7816:3;7871:19;;;;;:::i;:::-;7115:14;7985;7935:11;;;;:::i;:::-;7985:14;;;;;:::i;:::-;8060:13;1235:33115;6902:1;1235:33115;;8055:425;8075:10;;;;;;7816:3;;;;;;;:::i;:::-;7788:13;;8087:3;8137:16;;;;8456:9;8137:16;8401:19;8137:16;8231:44;8137:16;8087:3;8137:16;;;:::i;:::-;;8260:6;;;;;:::i;:::-;8231:44;;:::i;:::-;8401:19;;;:::i;:::-;8456:9;:::i;8087:3::-;8060:13;;;;;6946:3;7001:19;;;;;:::i;:::-;7065:11;;;;;:::i;:::-;7115:14;7216:19;7115:14;;;;;:::i;7216:19::-;1235:33115;;;;7208:69;7247:1;7216:33;;;7208:69;:::i;:::-;7292:305;;6946:3;7611:22;;;6946:3;7611:22;;;;:::i;:::-;6946:3;;:::i;:::-;6918:13;;;7292:305;7449:13;;;;;;;;;;;;;;;;;;:::i;:::-;7414:49;;;;;;;1235:33115;;;;;;7414:49;;;;;1235:33115;7414:49;;1235:33115;7414:49;;;;;;;;:::i;:::-;;;;;6902:1;7414:49;;;;;;7292:305;-1:-1:-1;7410:173:17;;1235:33115;;7518:46;;;1235:33115;;;7518:46;;;1235:33115;;;;;;;26055:54;;;7410:173;;;-1:-1:-1;7410:173:17;;-1:-1:-1;7410:173:17;;-1:-1:-1;7410:173:17;;7611:22;6946:3;7292:305;;7414:49;;;;;;:::i;:::-;;;:::i;:::-;;;;1235:33115;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1235:33115:17;-1:-1:-1;1235:33115:17;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1926:1;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20582:20;;;;:47;;;;1235:33115;20578:182;;;20800:2;20773:29;;;20769:308;;1235:33115;21111:10;1235:33115;;;21111:10;;;;;;;;1235:33115;;;;;;;;;;;;;20769:308;20854:22;20838:40;20854:22;20846:31;20854:22;;:::i;:::-;20846:31;;:::i;:::-;1235:33115;;;;20838:40;20896:21;:26;20892:175;;20769:308;;;;20892:175;21015:37;1235:33115;;;21015:37;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;20578:182;20714:35;1235:33115;;;20714:35;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;20582:47;20606:18;;;:23;20582:47;;;1235:33115;;;;;;;;;;;;;;;;;;;19730:45;1235:33115;;;;;;;;;:::i;:::-;;;;19658:45;;;:::i;:::-;1235:33115;;-1:-1:-1;1235:33115:17;;19730:45;;;;;;1235:33115;19730:45;;1235:33115;19730:45;;;:::i;:::-;;;;;;;;;;1235:33115;-1:-1:-1;19730:45:17;;;1235:33115;;;;19793:27;;;;1235:33115;;19793:27;;1235:33115;19793:27;19730:45;;;;;1235:33115;19730:45;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;1235:33115;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;2955:10:3;1235:33115:17;;;;;;;;2984:20:3;;;1235:33115:17;;;;;2984:25:3;;;1235:33115:17;;3163:32:3;3107:46;3205:19;1235:33115:17;3034:41:3;1235:33115:17;;;;;;;;;;;3034:41:3;:::i;:::-;1235:33115:17;3114:15:3;1235:33115:17;3107:46:3;:::i;:::-;1235:33115:17;;;;;;;;;;;;;;;3163:32:3;1235:33115:17;;;;;;;3205:19:3;1235:33115:17;;;;;;;;;2955:10:3;;3239:39;;1235:33115:17;;3239:39:3;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4091:44:3;1235:33115:17;3593:20:3;3602:10;1235:33115:17;;2160:8:3;1235:33115:17;2160:8:3;1235:33115:17;;;2160:8:3;1235:33115:17;;;3593:20:3;1235:33115:17;3935:14:3;3623:26;1235:33115:17;;;;;;;;;;3623:26:3;3667:9;3659:42;3667:9;;;3659:42;:::i;:::-;3904:21;3719:17;;;3784:76;1235:33115:17;;;;;;;;;;;;;3711:63:3;3719:21;;;3711:63;:::i;:::-;3813:15;-1:-1:-1;3792:36:3;3784:76;:::i;:::-;1235:33115:17;;;;;;;3904:21:3;1235:33115:17;;;;;;;3935:14:3;1235:33115:17;;;;;;;;;;;;;;3602:10:3;;3964:50;;;-1:-1:-1;1235:33115:17;;;;;;;;4042:39:3;;;;:::i;:::-;;4091:44;:::i;1235:33115:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9870:101;1235:33115;;;;;;:::i;:::-;;;:::i;:::-;9362:2;;;:::i;:::-;9508:60;9435:34;;;;:::i;:::-;9508:60;;:::i;:::-;-1:-1:-1;9618:29:17;-1:-1:-1;;34290:52:17;;;;9618:29;:::i;:::-;34290:52;;;;9681:18;9709:25;1235:33115;;;;;9744:110;;1235:33115;9886:15;;;;;;1235:33115;9909:15;1235:33115;;;;9909:15;;1235:33115;;;;;;9926:15;;1235:33115;;;;;;;;;9870:101;;;;;;1235:33115;9870:101;;;:::i;9744:110::-;1235:33115;;;;;;;;;;;;;;;;;;;:::i;:::-;9816:27;;;;;9886:15;9816:27;;:::i;:::-;9784:59;9744:110;;;;;;;1235:33115;;;;;;;;:::i;:::-;;;:::i;:::-;15996:6;;;:::i;:::-;16073:41;;;;:::i;:::-;16171:17;;:27;;1235:33115;16171:17;;;16157:42;;1235:33115;;16157:42;:::i;16171:27::-;16157:42;:::i;:::-;16253:17;16239:39;16253:24;:17;;1235:33115;;;;;;16239:39;1235:33115;;;:::i;:::-;;16510:22;16366:15;;;;;;;;:::i;:::-;16413:69;-1:-1:-1;16432:2:17;16413:21;;16432:2;;16453:14;;16437:32;16453:14;16445:23;16453:14;;:::i;16510:22::-;16582:60;;;;:::i;:::-;1235:33115;;;;;;;;16737:1;16715:24;;16804:18;;;;1235:33115;16836:17;;;;1235:33115;16890:15;;;;;1235:33115;;;;;;;;16919:15;;1235:33115;;;16973:23;;;1235:33115;;;;:::i;:::-;;;;16890:15;16780:227;;1235:33115;;;;16780:227;;;1235:33115;;;16973:23;16780:227;;1235:33115;;;16804:18;16780:227;;1235:33115;16171:27;16780:227;;1235:33115;17022:24;;:52;;;;16413:69;17018:305;;;1235:33115;17339:68;1235:33115;;17339:68;;;;;;1235:33115;17339:68;;;:::i;17018:305::-;17166:25;;17213:99;17166:25;;;;:::i;:::-;17134:58;1235:33115;;:::i;:::-;;;;;;;;17134:58;16890:15;17134:58;;1235:33115;;17213:99;;;;;;1235:33115;17213:99;;;:::i;17022:52::-;17050:24;;;17022:52;;;16413:69;;;;16510:22;:::i;1235:33115::-;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;1235:33115:17;-1:-1:-1;1235:33115:17;;;;-1:-1:-1;1235:33115:17;;506:47:3;1235:33115:17;;506:47:3;;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;:::o;1216:65:3:-;1263:10;;1649:206;1235:33115:17;1649:206:3;1737:9;;;;:::i;:::-;1235:33115:17;;1784:8:3;1235:33115:17;1784:8:3;1235:33115:17;;1816:32:3;1235:33115:17;;;1784:8:3;1235:33115:17;;;;;;;;1816:32:3;1649:206::o;1235:33115:17:-;;;;;;;;;;:::o;:::-;;;:::i;1287:293:3:-;1235:33115:17;;1393:8:3;1235:33115:17;1393:8:3;1235:33115:17;;;1393:8:3;1235:33115:17;;;;;;;;;;;;;;1287:293:3;1479:30;;;1235:33115:17;;1540:33:3;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1235:33115:17;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;1235:33115:17;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;2722:278;1235:33115;;2815:25;;1235:33115;;2838:1;2897:35;;;;;;;;;:::i;:::-;;1235:33115;;;2722:278::o;1235:33115::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1235:33115:17;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;3228:1997;3516:52;;3228:1997;3535:15;3480:20;;;1235:33115;3535:15;3480:20;3535:15;;;;:::i;:::-;1235:33115;;;;;3516:52;;;;;1235:33115;3516:52;;;;;;:::i;:::-;;:4;1235:33115;3516:4;:52;;1235:33115;;3516:52;;;3228:1997;-1:-1:-1;3512:1707:17;;3654:1565;;:::i;:::-;3516:52;1235:33115;3733:109;;1235:33115;;4562:18;4558:52;;4625:142;;;3516:52;4625:142;;4558:52;1235:33115;;4589:21;;;1235:33115;3516:52;4589:21;;1235:33115;-1:-1:-1;1235:33115:17;;;;;;26055:54;3516:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1235:33115:17;;;;;;;;;;;;:::o;1392:927:0:-;1571:36;1658:45;1392:927;1235:33115:17;;:::i;:::-;;1571:36:0;:::i;:::-;1658:45;;:::i;:::-;1235:33115:17;;;;;;;1780:24:0;;;1776:95;;1392:927;1235:33115:17;1900:32:0;;;;1962;1900;;;;1235:33115:17;;1962:32:0;;1235:33115:17;;2026:27:0;;1962:32;2026:27;1900:32;2026:27;;1235:33115:17;;2085:27:0;;1235:33115:17;;2127:25:0;;;;2123:56;;1392:927;2193:25;;;;2189:56;;1392:927;1235:33115:17;1962:32:0;1235:33115:17;;;;;:::i;:::-;;;;;1900:32:0;2262:50;;1235:33115:17;;1962:32:0;2262:50;;1235:33115:17;1392:927:0;:::o;2189:56::-;2220:25;-1:-1:-1;2189:56:0;;;2123;2154:25;-1:-1:-1;2123:56:0;;;1776:95;1235:33115:17;;;;;-1:-1:-1;1776:95:0;;904:439;1235:33115:17;;:::i;:::-;;;;;1115:3:0;1235:33115:17;;1133:15:0;;1129:75;;904:439;1235:33115:17;;;;;;:::i;:::-;;;;;;1259:8:0;1235:33115:17;1286:50:0;;;1235:33115:17;;;1286:50:0;;1235:33115:17;904:439:0;:::o;1129:75::-;1164:29;;1129:75;;1695:4:17;;;;;;;;;;;:::i;10744:3392::-;;;;10928:9;10977:4;;10955:10;:27;1235:33115;;11050:14;;1235:33115;;12085:1745;;10744:3392;13893:9;;14069:50;13893:9;1695:4;13893:9;;1695:4;;13905:15;;;1235:33115;;1695:4;;;;:::i;:::-;14069:50;;:::i;12085:1745::-;1235:33115;12815:8;;12495:49;;1235:33115;;12534:9;;12495:49;;:::i;:::-;12815:8;;1235:33115;12815:8;12811:1009;;12085:1745;;;;12811:1009;13280:25;12865:41;;:::i;:::-;1235:33115;;13280:25;;;;;;;;;;:::i;1235:33115::-;;;;;;;;;;;;;;;;;;;;;;;230:263:11;;11050:14:17;230:263:11;;;;385:102;;;;;;;230:263;:::o;1066:436::-;1163:333;1695:4:17;1163:333:11;;;;;1066:436;1163:333;;;;;;;;;;;;;;;;;;;1066:436;:::o;1163:333::-;;;;;;14344:174:17;2762:31:10;2777:15;;;;;;:::i;:::-;2762:31;;:::i;:::-;2841:15;2826:31;2841:15;;;;;;:::i;2826:31::-;3217:23;3259:237;3202:39;3217:23;;;;;;:::i;3202:39::-;2777:15;1235:33115:17;3259:237:10;;;2717:12;3259:237;;3134:27;;;;1235:33115:17;3074:19:10;;;;1235:33115:17;3016:25:10;;;;1235:33115:17;2950:27:10;;;;1235:33115:17;2890:19:10;;;;1235:33115:17;2717:12:10;1235:33115:17;2717:12:10;;;1235:33115:17;1859:39:10;;1235:33115:17;3259:237:10;1235:33115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:237:10;;;;;;;;;;;;;:::i;:::-;1235:33115:17;3603:23:10;;2777:15;1235:33115:17;;2717:12:10;14455:55:17;;1235:33115;;;14489:4;1235:33115;;;;;;;14496:13;1235:33115;;;;;14455:55;;;;;;;;;1235:33115;14455:55;:::i;:::-;1235:33115;14445:66;;14344:174;:::o;3357:265:0:-;3439:177;;;;;;;3357:265;:::o;1235:33115:17:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;:::o;:::-;;;:::i;:::-;;;;;20800:2;1235:33115;;;;20800:2;1235:33115;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1235:33115:17:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;781:248:3;;1235:33115:17;;;:::i;:::-;;;908:8:3;1235:33115:17;908:8:3;1235:33115:17;;;995:27:3;1235:33115:17;908:8:3;1235:33115:17;;;;;;;;;995:27:3;1235:33115:17;;;972:20:3;;1235:33115:17;781:248:3:o;1235:33115:17:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;1104:226:16:-;317:27;;1235:33115:17;;1264:21:16;1235:33115:17;;1264:59:16;695:42;1104:226;:::o;1235:33115:17:-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;20031:13;1235:33115;;;;;;;;;;:::i;19833:421::-;20014:15;;;;;;:::i;:::-;20046:23;20031:13;;;:::i;:::-;20046:23;;;;;;:::i;:::-;19981:4;;;:89;;;;20031:13;1235:33115;19981:89;1235:33115;20014:15;1235:33115;19981:89;;;;;1235:33115;19981:89;;;;;;:::i;:::-;;:4;;:89;;;;;;19833:421;-1:-1:-1;19977:271:17;;;;;:::i;:::-;;;;;;;;19833:421::o;19977:271::-;;;:::i;:::-;20082:166;;:::i;:::-;;;;19977:271;;;;20082:166;1235:33115;;20031:13;;-1:-1:-1;20136:102:17;20082:166;20136:102;20198:25;1235:33115;20014:15;1235:33115;20198:25;;;;;;19981:89;20198:25;;;:::i;19981:89::-;;;;;;:::i;:::-;;;;25027:1099;;;;25287:34;25027:1099;25287:34;:::i;:::-;1235:33115;;;;;;;;;25335:32;25331:111;;25451:96;;25847:43;;;:::i;:::-;1235:33115;;25900:105;;26014:106;;25027:1099;:::o;26132:523::-;26290:19;;26286:76;;26400:36;;;:::i;:::-;494:28:16;1235:33115:17;2824:14:16;;;2841:15;1235:33115:17;2841:15:16;2824:44;1235:33115:17;26559:15;;;;;1235:33115;;26542:32;;:68;;;;;2824:44:16;26525:85:17;;1235:33115;;;26132:523;:::o;26542:68::-;26595:15;;;1235:33115;;-1:-1:-1;;;26542:68:17;;;;2824:44:16;1235:33115:17;2824:44:16;;;26286:76:17;26325:26;26308:1;26325:26;26308:1;26325:26;:::o;1235:33115::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;27012:2125;;-1:-1:-1;27239:9:17;;27288:17;;;27343:7;;;;;:::i;:::-;27384:21;;;:::i;:::-;27361:20;;;1235:33115;27745:70;1235:33115;27591:26;;;1235:33115;27620:28;;;1235:33115;27591:57;27651:20;;;1235:33115;27591:80;27708:27;;;1235:33115;27686:19;;;;1235:33115;27591:114;:144;27753:33;;27745:70;:::i;:::-;27906:28;;;:::i;:::-;28011:71;;;;;:::i;:::-;27944:138;;28097:55;28098:54;1235:33115;;;;;;;;27361:20;28138:13;;1235:33115;28098:54;;:::i;28097:55::-;28093:140;;;34290:52;;;34242:106;28093:140;1235:33115;;28468:17;27620:28;28468:17;;1235:33115;;;;;;;28464:238;;27012:2125;28762:9;;1695:4;;28468:17;28790:27;;1235:33115;28790:37;28786:134;;27591:26;28933:17;29095:25;28933:17;27651:20;28933:17;;1235:33115;27620:28;28982:23;;1235:33115;29083:9;1695:4;;29095:25;;1235:33115;;29053:18;;1235:33115;27012:2125::o;28786:134::-;27651:20;1235:33115;28854:51;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;28464:238;28552:139;;;;;;;;;;;:::i;:::-;28515:176;;28464:238;;;;28093:140;27651:20;1235:33115;28175:47;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;27012:2125;;;;1235:33115;27239:9;;27288:17;;27343:7;;;;:::i;:::-;27384:21;;;:::i;:::-;27361:20;;;1235:33115;27745:70;1235:33115;27591:26;;;1235:33115;27620:28;;;1235:33115;27591:57;27651:20;;;1235:33115;27591:80;27708:27;;;1235:33115;27686:19;;;;1235:33115;27591:114;:144;27753:33;;27745:70;:::i;:::-;27906:28;;;:::i;:::-;28011:71;;;;;;:::i;:::-;27944:138;;28097:55;28098:54;1235:33115;;;;;;;;27361:20;28138:13;;1235:33115;28098:54;;:::i;28097:55::-;28093:140;;;34290:52;;;34242:106;28093:140;1235:33115;;28468:17;27620:28;28468:17;;1235:33115;;;;;;;28464:238;;27012:2125;28762:9;;1695:4;;28468:17;28790:27;;1235:33115;28790:37;28786:134;;-1:-1:-1;27651:20:17;28933:17;;1235:33115;27620:28;28982:23;;1235:33115;27591:26;;28933:17;29095:25;;29083:9;1695:4;;29095:25;;1235:33115;;29053:18;;1235:33115;27012:2125::o;28786:134::-;27651:20;1235:33115;;28854:51;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;28464:238;28552:139;;;;;;;;;;;;:::i;:::-;28515:176;;28464:238;;;;28093:140;28175:47;1235:33115;27651:20;1235:33115;28175:47;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;1008:234:1;1235:33115:17;;-1:-1:-1;1235:33115:17;1194:19:1;1235:33115:17;;;1194:32:1;1235:33115:17;1138:2:1;1235:33115:17;1138:2:1;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;1194:32:1;1235:33115:17;;;1194:34:1;;;;:::i;:::-;1235:33115:17;;;1194:41:1;1008:234;:::o;1235:33115:17:-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;14613:831;15142:23;14613:831;14726:30;14743:13;;;:::i;:::-;1235:33115;;;;;14726:30;14782:12;;;1235:33115;14782:12;14766:13;;1235:33115;14827:19;;;1235:33115;14804:20;;;1235:33115;14887:27;;;1235:33115;14856:28;;;1235:33115;14953:25;;;1235:33115;14827:19;14924:26;;1235:33115;15011:19;;;1235:33115;14953:25;14988:20;;1235:33115;15071:27;;;1235:33115;15011:19;15040:28;;1235:33115;15142:23;;;;;:::i;:::-;15179:27;;;;;15327:39;15335:30;15343:21;15230:29;14887:27;15230:29;15222:71;15257:2;15307:59;15230:29;;;;15222:71;:::i;:::-;15343:21;:::i;15327:39::-;1235:33115;;15307:17;;1235:33115;;15175:263;15397:17;;14887:27;1235:33115;15397:17;;1235:33115;14613:831::o;17420:579::-;17754:17;;;1235:33115;;;17754:31;:39;;17962:20;17788:1;17754:39;1235:33115;17829:20;;;1235:33115;;;17852:28;;;1235:33115;;;17889:26;;;1235:33115;;17962:20;;1235:33115;;17420:579;:::o;17754:39::-;17962:20;17792:1;17754:39;;1235:33115;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;21334:1772::-;;-1:-1:-1;21565:22:17;-1:-1:-1;21640:9:17;;21693:14;22154:140;22242:17;21693:14;;1235:33115;;;;;;;;;21805:11;;;;;;;;:::i;:::-;;;;:::i;:::-;21851:17;;;1235:33115;;;21831:37;;34290:52;;;34242:106;21831:37;21910:31;;1235:33115;;;;;21959:23;21955:182;;;;21334:1772;22191:28;;1235:33115;22242:17;;;1235:33115;21805:11;1235:33115;;22154:140;;1235:33115;;;;;;;;22154:140;;;;:::i;:::-;;1235:33115;;;22154:140;;;;;;;21334:1772;-1:-1:-1;22150:480:17;;;;;;;:::i;:::-;;;;;;;;;;22643:378;;22150:480;23080:9;;;1695:4;;21334:1772;:::o;22643:378::-;22723:16;;1235:33115;;;;;;;;;;;;22723:16;22757:36;1235:33115;;;;;;;22757:36;22815:25;;;22811:123;;22951:55;1695:4;1235:33115;1695:4;;1235:33115;;;;;;;;;;;22951:55;22643:378;;;;22811:123;21805:11;1235:33115;22871:44;;;;;22154:140;22871:44;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;22150:480;21805:11;1235:33115;22572:43;;;;;22154:140;22572:43;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;22150:480;22395:145;;:::i;:::-;;;;;22150:480;;;22395:145;22460:65;22395:145;22478:46;22395:145;22478:46;;:::i;:::-;21805:11;1235:33115;22460:65;;;;;;22154:140;22460:65;;;:::i;22150:480::-;22347:32;-1:-1:-1;22150:480:17;;-1:-1:-1;22150:480:17;22154:140;;;;;22242:17;22154:140;;;;;;;;;:::i;:::-;;;;;21955:182;1178:17:3;;1171:32;1178:25;:17;;1235:33115:17;;;;;;;;;;;;1178:17:3;1235:33115:17;;;;;1171:32:3;22073:21:17;;;;;;:49;;22191:28;22073:49;;21955:182;;;;;;22073:49;22191:28;1695:4;;;;22073:49;;21334:1772;;;1235:33115;21565:22;1235:33115;21640:9;;21693:14;22154:140;22242:17;21693:14;;1235:33115;;;;;;;;;21805:11;;;;;;;;:::i;:::-;;;;;:::i;22154:140::-;;1235:33115;;;22154:140;;;;;;;21334:1772;-1:-1:-1;22150:480:17;;;;;;;:::i;:::-;;;;;;;;;;22643:378;;22150:480;23080:9;;;;1695:4;;21334:1772;:::o;22643:378::-;22723:16;;1235:33115;;;;;;;;;;;;22723:16;1235:33115;22757:36;1235:33115;;;;;;;22757:36;22815:25;;;;22811:123;;-1:-1:-1;1235:33115:17;;;;1695:4;;;1235:33115;;;;;22643:378;;;;;22811:123;21805:11;1235:33115;;22871:44;;;22154:140;22871:44;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;22150:480;22572:43;1235:33115;21805:11;1235:33115;22572:43;;;;;;22154:140;22572:43;;1235:33115;;;;;;;;;;;;;;;;;;;;;;22150:480;22395:145;;:::i;:::-;;;;;22150:480;;;22395:145;;;22478:46;22395:145;22478:46;;:::i;:::-;1235:33115;22460:65;21805:11;1235:33115;22460:65;;;;;;22154:140;22460:65;;;:::i;22150:480::-;22347:32;-1:-1:-1;22150:480:17;;-1:-1:-1;22150:480:17;22154:140;;;;;22242:17;22154:140;;;;;;;;;:::i;:::-;;;;;18052:1073;;;18174:20;18170:949;;18052:1073;;;:::o;18170:949::-;18227:14;;1235:33115;;;18266:18;;;18262:88;;-1:-1:-1;18563:87:17;:35;:22;18486:45;;:::i;18563:35::-;18604;:14;;:35;1235:33115;;;18563:87;;;;1235:33115;18563:87;;;;;;;;;;:::i;:::-;;;;;;;;;18170:949;-1:-1:-1;18563:87:17;;;18170:949;1235:33115;;;;;18669:21;;;18665:82;;1235:33115;18765:17;;;18761:83;;18862:19;:24;18858:90;;18988:23;18996:14;19031:77;18996:14;18980:32;18996:14;;:::i;18980:32::-;18563:87;19047:17;;;1235:33115;19083:14;;:24;;1235:33115;;;;;;;;;;;;;;;;;;;;;;19031:77;18052:1073::o;18858:90::-;1235:33115;;18895:53;;;;;18563:87;18895:53;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18761:83;1235:33115;;18791:53;;;;;18563:87;18791:53;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18665:82;1235:33115;;18699:48;;;;;18563:87;18699:48;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18563:87;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;18262:88;1235:33115;;18298:52;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;18052:1073;;;;18174:20;18170:949;;18052:1073;;;;;:::o;18170:949::-;18227:14;;1235:33115;;;18266:18;;;18262:88;;18193:1;18563:87;:35;:22;18486:45;;:::i;18563:35::-;18604;:14;;:35;1235:33115;;;18563:87;;;;1235:33115;18563:87;;;;;;;;;;:::i;:::-;;;;;;;;;18170:949;18193:1;18563:87;;;18170:949;1235:33115;;;;;18669:21;;;18665:82;;1235:33115;18765:17;;;18761:83;;18862:19;:24;18858:90;;18996:14;18988:23;18996:14;19031:77;18996:14;18980:32;18996:14;;:::i;18980:32::-;18563:87;19047:17;;;1235:33115;19083:14;;:24;;1235:33115;;;;;;;;;;;;;;;;;;;;;;19031:77;18170:949;;;;;;18858:90;1235:33115;;;18895:53;;;18563:87;18895:53;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;18761:83;18791:53;1235:33115;;;18791:53;;;;;;18563:87;18791:53;;1235:33115;;;;;;;;;;;;;;;;;;;;;;18665:82;18699:48;1235:33115;;;18699:48;;;;;;18563:87;18699:48;;1235:33115;;;;;;;;;;;;;;;;;;;;;;18563:87;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;18262:88;1235:33115;;;18298:52;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;1235:33115;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23364:1555::-;;;;1235:33115;23627:22;-1:-1:-1;23627:22:17;-1:-1:-1;23715:14:17;;;23774:28;1235:33115;24037:17;23774:28;;;1235:33115;23824:57;23816:101;23824:57;;;23816:101;:::i;:::-;24037:17;1235:33115;;;;;;24104:19;;;1235:33115;;;;;;;;;;;;24104:19;1235:33115;24137:39;1235:33115;;;;;;;24137:39;24194:25;;;;24190:122;;1235:33115;24461:17;1695:4;;;24325:58;1695:4;;1235:33115;1695:4;24401:95;1695:4;;1235:33115;;;;;;;;;;;24325:58;24461:17;1235:33115;;;;24401:95;;;;;;;1235:33115;24401:95;;;;;;:::i;:::-;;1235:33115;;1695:4;;24401:95;;;;-1:-1:-1;;24401:95:17;;;23364:1555;-1:-1:-1;24397:506:17;;;;;;;;:::i;:::-;;;;;;;;;23364:1555::o;24397:506::-;1235:33115;;24845:43;;;;;24401:95;24845:43;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;24397:506;24668:145;;:::i;:::-;;;;;24397:506;;;24668:145;24733:65;24668:145;24751:46;24668:145;24751:46;;:::i;24397:506::-;24584:18;-1:-1:-1;24584:18:17;-1:-1:-1;;23364:1555:17:o;24401:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;24190:122;1235:33115;;24246:51;;;;;;;;1235:33115;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;;;;;;;;;23364:1555;;;;;;;1235:33115;23627:22;1235:33115;23627:22;1235:33115;23715:14;;;23774:28;1235:33115;24037:17;23774:28;;;1235:33115;23824:57;23816:101;23824:57;;;23816:101;:::i;1235:33115::-;24104:19;;;1235:33115;;;;;;;;;;;;24104:19;24137:39;1235:33115;;;;;;;24137:39;24194:25;;;24190:122;;1695:4;1235:33115;24461:17;1695:4;;;;;24325:58;1695:4;;1235:33115;1695:4;24401:95;1695:4;;;;1235:33115;;;;;;;;;;;24401:95;;1235:33115;;1695:4;;24401:95;;;;1235:33115;;24401:95;;;23364:1555;-1:-1:-1;24397:506:17;;;;;;;;:::i;:::-;;;;;;;;;;23364:1555::o;24397:506::-;1235:33115;;;24845:43;;;24401:95;24845:43;;1235:33115;;;;;;;;;;;;;;;;;;;;26055:54;24397:506;24668:145;;:::i;:::-;;;;;24397:506;;;24668:145;24751:46;24668:145;;24751:46;;:::i;24397:506::-;24584:18;-1:-1:-1;24584:18:17;-1:-1:-1;;;23364:1555:17:o;24401:95::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;24190:122;24246:51;1235:33115;;;24246:51;;;;;;;;;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:33115:17;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29781:3124::-;;;;30029:9;30072:21;30137:14;;30184:26;;;;:::i;:::-;30245:17;;;;1235:33115;;;;;;;;;;;;;;;30280:23;1235:33115;;;;;;;;;;;;;30276:2007;;32318:9;1695:4;;1235:33115;;;;32395:14;;;;1235:33115;;;;32395:30;32391:129;;32627:6;32759:17;1235:33115;;32723:152;1235:33115;;1695:4;32627:6;;:::i;:::-;32759:17;1235:33115;;32723:152;32759:17;1235:33115;;;;;;;;;;;;;;;;32813:13;;1235:33115;;;;32395:14;1235:33115;;;;;;;32723:152;;1235:33115;;;;;;;;;;;32663:41;1235:33115;;;;;;;;;;;32723:152;;;;29781:3124::o;32391:129::-;32395:14;1235:33115;32452:53;;;;;;;;1235:33115;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;30276:2007;30392:25;;1235:33115;;30435:1834;;30276:2007;;;;;30435:1834;31020:28;;;1235:33115;30986:147;;;;;;;1235:33115;;11050:14;1235:33115;;;;30986:147;;;;;;1235:33115;30986:147;;1235:33115;;30986:147;;;;;:::i;:::-;;;;;;;;30435:1834;-1:-1:-1;30982:406:17;;31137:251;;:::i;:::-;1235:33115;;31199:18;31195:70;;31302:59;1235:33115;;;31302:59;;;;;;30986:147;31302:59;;;:::i;31195:70::-;1235:33115;;31226:39;;;;;30986:147;31226:39;;1235:33115;;11050:14;1235:33115;;;;;;;;;;;;;;;;;;;;30982:406;30435:1834;;;;30986:147;;;;;;:::i;:::-;;;;33073:546;33283:28;33218:20;;;1235:33115;33283:28;;1235:33115;33329:36;;;33325:173;;405:35:16;1235:33115:17;2492:12:16;;;2507:13;;2492:38;;1235:33115:17;33709:5;;;;;;:13;33073:546;:::o;33709:13::-;;;33073:546;:::o;2492:38:16:-;;;;33325:173:17;33464:19;;:::o", "linkReferences": {} }, "methodIdentifiers": { "SIG_VALIDATION_FAILED()": "8f41ec5a", "_validateSenderAndPaymaster(bytes,address,bytes)": "957122ab", "addStake(uint32)": "0396cb60", "balanceOf(address)": "70a08231", "depositTo(address)": "b760faf9", "deposits(address)": "fc7e286d", "getDepositInfo(address)": "5287ce12", "getNonce(address,uint192)": "35567e1a", "getSenderAddress(bytes)": "9b249f69", "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": "a6193531", "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": "4b1d7cf5", "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)": "1fad948c", "incrementNonce(uint192)": "0bd28e3b", "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)": "1d732756", "nonceSequenceNumber(address,uint192)": "1b2e01b8", "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)": "d6383f94", "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": "ee219423", "unlockStake()": "bb9fe6bf", "withdrawStake(address)": "c23a5cea", "withdrawTo(address,uint256)": "205c2878" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"CallPhaseReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"targetSuccess\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"targetResult\",\"type\":\"bytes\"}],\"name\":\"ExecutionResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"FailedOp\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"opIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"inner\",\"type\":\"bytes\"}],\"name\":\"FailedOpWithRevert\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderAddressResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureValidationFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResult\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sigFailed\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"validAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"validUntil\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"paymasterContext\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.ReturnInfo\",\"name\":\"returnInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"senderInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"factoryInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"paymasterInfo\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"stakeInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct IEntryPoint.AggregatorStakeInfo\",\"name\":\"aggregatorInfo\",\"type\":\"tuple\"}],\"name\":\"ValidationResultWithAggregation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"}],\"name\":\"AccountDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"BeforeExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDeposit\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"SignatureAggregatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalStaked\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakeDelaySec\",\"type\":\"uint256\"}],\"name\":\"StakeLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawTime\",\"type\":\"uint256\"}],\"name\":\"StakeUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualGasUsed\",\"type\":\"uint256\"}],\"name\":\"UserOperationEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"revertReason\",\"type\":\"bytes\"}],\"name\":\"UserOperationRevertReason\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SIG_VALIDATION_FAILED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"}],\"name\":\"_validateSenderAndPaymaster\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDepositInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"deposit\",\"type\":\"uint112\"},{\"internalType\":\"bool\",\"name\":\"staked\",\"type\":\"bool\"},{\"internalType\":\"uint112\",\"name\":\"stake\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"withdrawTime\",\"type\":\"uint48\"}],\"internalType\":\"struct IStakeManager.DepositInfo\",\"name\":\"info\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"}],\"name\":\"getSenderAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"userOps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAggregator\",\"name\":\"aggregator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IEntryPoint.UserOpsPerAggregator[]\",\"name\":\"opsPerAggregator\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleAggregatedOps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"handleOps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint192\",\"name\":\"key\",\"type\":\"uint192\"}],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.MemoryUserOp\",\"name\":\"mUserOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"prefund\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"contextOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preOpGas\",\"type\":\"uint256\"}],\"internalType\":\"struct EntryPointGasEstimationOverride06.UserOpInfo\",\"name\":\"opInfo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"innerHandleOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"name\":\"nonceSequenceNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"op\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetCallData\",\"type\":\"bytes\"}],\"name\":\"simulateHandleOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"simulateValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"withdrawAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"FailedOp(uint256,string)\":[{\"params\":{\"opIndex\":\"- index into the array of ops to the failed one (in simulateValidation, this is always zero)\",\"reason\":\"- revert reason The string starts with a unique code \\\"AAmn\\\", where \\\"m\\\" is \\\"1\\\" for factory, \\\"2\\\" for account and \\\"3\\\" for paymaster issues, so a failure can be attributed to the correct entity. Should be caught in off-chain handleOps simulation and not happen on-chain. Useful for mitigating DoS attempts against batchers or for troubleshooting of factory/account/paymaster reverts.\"}}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"params\":{\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"params\":{\"aggregatorInfo\":\"signature aggregation info (if the account requires signature aggregator) bundler MUST use it to verify the signature, or reject the UserOperation\",\"factoryInfo\":\"stake information about the factory (if any)\",\"paymasterInfo\":\"stake information about the paymaster (if any)\",\"returnInfo\":\"gas and time-range returned values\",\"senderInfo\":\"stake information about the sender\"}}]},\"kind\":\"dev\",\"methods\":{\"addStake(uint32)\":{\"params\":{\"unstakeDelaySec\":\"the new lock duration before the deposit can be withdrawn.\"}},\"getDepositInfo(address)\":{\"returns\":{\"info\":\"- full deposit information of given account\"}},\"getNonce(address,uint192)\":{\"params\":{\"key\":\"the high 192 bit of the nonce\",\"sender\":\"the account address\"},\"returns\":{\"nonce\":\"a full nonce to pass for next UserOp with this sender.\"}},\"getSenderAddress(bytes)\":{\"params\":{\"initCode\":\"the constructor code to be passed into the UserOperation.\"}},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"opsPerAggregator\":\"the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)\"}},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"params\":{\"beneficiary\":\"the address to receive the fees\",\"ops\":\"the operations to execute\"}},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"params\":{\"op\":\"the UserOperation to simulate\",\"target\":\"if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.\",\"targetCallData\":\"callData to pass to target address\"}},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"details\":\"this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.\",\"params\":{\"userOp\":\"the user operation to validate.\"}},\"withdrawStake(address)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\",\"withdrawAmount\":\"the amount to withdraw.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)\":[{\"notice\":\"return value of simulateHandleOp\"}],\"FailedOp(uint256,string)\":[{\"notice\":\"a custom revert error of handleOps, to identify the offending op. NOTE: if simulateValidation passes successfully, there should be no reason for handleOps to fail on it.\"}],\"SenderAddressResult(address)\":[{\"notice\":\"return value of getSenderAddress\"}],\"SignatureValidationFailed(address)\":[{\"notice\":\"error case when a signature aggregator fails to verify the aggregated signature it had created.\"}],\"ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))\":[{\"notice\":\"Successful result from simulateValidation.\"}],\"ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))\":[{\"notice\":\"Successful result from simulateValidation, if the account returns a signature aggregator\"}]},\"events\":{\"AccountDeployed(bytes32,address,address,address)\":{\"notice\":\"account \\\"sender\\\" was deployed.\"},\"BeforeExecution()\":{\"notice\":\"an event emitted by handleOps(), before starting the execution loop. any event emitted before this event, is part of the validation.\"},\"SignatureAggregatorChanged(address)\":{\"notice\":\"signature aggregator used by the following UserOperationEvents within this bundle.\"},\"StakeLocked(address,uint256,uint256)\":{\"notice\":\"Emitted when stake or unstake delay are modified\"},\"StakeUnlocked(address,uint256)\":{\"notice\":\"Emitted once a stake is scheduled for withdrawal\"},\"UserOperationRevertReason(bytes32,address,uint256,bytes)\":{\"notice\":\"An event emitted if the UserOperation \\\"callData\\\" reverted with non-zero length\"}},\"kind\":\"user\",\"methods\":{\"SIG_VALIDATION_FAILED()\":{\"notice\":\"for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert.\"},\"_validateSenderAndPaymaster(bytes,address,bytes)\":{\"notice\":\"Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution.\"},\"addStake(uint32)\":{\"notice\":\"add to the account's stake - amount and delay any pending unstake is first cancelled.\"},\"balanceOf(address)\":{\"notice\":\"return the deposit (for gas payment) of the account\"},\"depositTo(address)\":{\"notice\":\"add to the deposit of the given account\"},\"deposits(address)\":{\"notice\":\"maps paymaster to their deposits and stakes\"},\"getNonce(address,uint192)\":{\"notice\":\"Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order.\"},\"getSenderAddress(bytes)\":{\"notice\":\"Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error\"},\"getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid.\"},\"handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperation with Aggregators\"},\"handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)\":{\"notice\":\"Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead.\"},\"incrementNonce(uint192)\":{\"notice\":\"Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \\\"initialize\\\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key.\"},\"innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)\":{\"notice\":\"inner function to handle a UserOperation. Must be declared \\\"external\\\" to open a call context, but it can only be called by handleOps.\"},\"nonceSequenceNumber(address,uint192)\":{\"notice\":\"The next valid sequence number for a given nonce key.\"},\"simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)\":{\"notice\":\"simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \\\"ExecutionResult\\\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events.\"},\"simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp.\"},\"unlockStake()\":{\"notice\":\"attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay.\"},\"withdrawStake(address)\":{\"notice\":\"withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass\"},\"withdrawTo(address,uint256)\":{\"notice\":\"withdraw from the deposit.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v06/EntryPointGasEstimationOverride.sol\":\"EntryPointGasEstimationOverride06\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":@account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":@account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":@account-abstraction-v9/=lib/account-abstraction-v9/contracts/\",\":@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/\",\":@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/\",\":@test-utils/=lib/singleton-paymaster/test/utils/\",\":account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":account-abstraction-v9/=lib/account-abstraction-v9/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/\",\":openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/\",\":openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/\",\":singleton-paymaster/=lib/singleton-paymaster/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/account-abstraction-v6/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction-v6/contracts/core/NonceManager.sol\":{\"keccak256\":\"0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7\",\"dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1\"]},\"lib/account-abstraction-v6/contracts/core/SenderCreator.sol\":{\"keccak256\":\"0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612\",\"dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x\"]},\"lib/account-abstraction-v6/contracts/core/StakeManager.sol\":{\"keccak256\":\"0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a\",\"dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4\",\"dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W\"]},\"lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"]},\"lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/account-abstraction-v6/contracts/utils/Exec.sol\":{\"keccak256\":\"0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe\",\"dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/SimulationOverrideHelper.sol\":{\"keccak256\":\"0x327a9038314036c1259ce7d2422d17b10f264df6b0d9f6b87cddb6b047898774\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4288cd354dbc1344dbe6139a862abe6bbc784186705cd2fc5197ef0e26d8b66\",\"dweb:/ipfs/Qmerifmk26zWoYk2hRXptyC6ncPH4m7zyQEDJERHNo5ijf\"]},\"src/v06/EntryPointGasEstimationOverride.sol\":{\"keccak256\":\"0xd543e1dfeb6c3f74ce1964099364ce549563c11ea47c3cb97b02bc7e71e8f46d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://53d579d8654dbed980bb14d08ecafddb30b4f634ffedd4a64a2d30b39803d4f7\",\"dweb:/ipfs/QmTnT9yk1AB2LydP2QWiyuPrTHAZzqFcrLLjkB5Q1z7DpD\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.17+commit.8df45f5f" }, "language": "Solidity", "output": { "abi": [{ "inputs": [{ "internalType": "bytes", "name": "reason", "type": "bytes" }], "type": "error", "name": "CallPhaseReverted" }, { "inputs": [{ "internalType": "uint256", "name": "preOpGas", "type": "uint256" }, { "internalType": "uint256", "name": "paid", "type": "uint256" }, { "internalType": "uint48", "name": "validAfter", "type": "uint48" }, { "internalType": "uint48", "name": "validUntil", "type": "uint48" }, { "internalType": "bool", "name": "targetSuccess", "type": "bool" }, { "internalType": "bytes", "name": "targetResult", "type": "bytes" }], "type": "error", "name": "ExecutionResult" }, { "inputs": [{ "internalType": "uint256", "name": "opIndex", "type": "uint256" }, { "internalType": "string", "name": "reason", "type": "string" }], "type": "error", "name": "FailedOp" }, { "inputs": [{ "internalType": "uint256", "name": "opIndex", "type": "uint256" }, { "internalType": "string", "name": "reason", "type": "string" }, { "internalType": "bytes", "name": "inner", "type": "bytes" }], "type": "error", "name": "FailedOpWithRevert" }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }], "type": "error", "name": "SenderAddressResult" }, { "inputs": [{ "internalType": "address", "name": "aggregator", "type": "address" }], "type": "error", "name": "SignatureValidationFailed" }, { "inputs": [{ "internalType": "struct IEntryPoint.ReturnInfo", "name": "returnInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "preOpGas", "type": "uint256" }, { "internalType": "uint256", "name": "prefund", "type": "uint256" }, { "internalType": "bool", "name": "sigFailed", "type": "bool" }, { "internalType": "uint48", "name": "validAfter", "type": "uint48" }, { "internalType": "uint48", "name": "validUntil", "type": "uint48" }, { "internalType": "bytes", "name": "paymasterContext", "type": "bytes" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "senderInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "factoryInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "paymasterInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }], "type": "error", "name": "ValidationResult" }, { "inputs": [{ "internalType": "struct IEntryPoint.ReturnInfo", "name": "returnInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "preOpGas", "type": "uint256" }, { "internalType": "uint256", "name": "prefund", "type": "uint256" }, { "internalType": "bool", "name": "sigFailed", "type": "bool" }, { "internalType": "uint48", "name": "validAfter", "type": "uint48" }, { "internalType": "uint48", "name": "validUntil", "type": "uint48" }, { "internalType": "bytes", "name": "paymasterContext", "type": "bytes" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "senderInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "factoryInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IStakeManager.StakeInfo", "name": "paymasterInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }, { "internalType": "struct IEntryPoint.AggregatorStakeInfo", "name": "aggregatorInfo", "type": "tuple", "components": [{ "internalType": "address", "name": "aggregator", "type": "address" }, { "internalType": "struct IStakeManager.StakeInfo", "name": "stakeInfo", "type": "tuple", "components": [{ "internalType": "uint256", "name": "stake", "type": "uint256" }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256" }] }] }], "type": "error", "name": "ValidationResultWithAggregation" }, { "inputs": [{ "internalType": "bytes32", "name": "userOpHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "address", "name": "factory", "type": "address", "indexed": false }, { "internalType": "address", "name": "paymaster", "type": "address", "indexed": false }], "type": "event", "name": "AccountDeployed", "anonymous": false }, { "inputs": [], "type": "event", "name": "BeforeExecution", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "totalDeposit", "type": "uint256", "indexed": false }], "type": "event", "name": "Deposited", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "aggregator", "type": "address", "indexed": true }], "type": "event", "name": "SignatureAggregatorChanged", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "totalStaked", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "unstakeDelaySec", "type": "uint256", "indexed": false }], "type": "event", "name": "StakeLocked", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "withdrawTime", "type": "uint256", "indexed": false }], "type": "event", "name": "StakeUnlocked", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "address", "name": "withdrawAddress", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }], "type": "event", "name": "StakeWithdrawn", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "userOpHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "address", "name": "paymaster", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "nonce", "type": "uint256", "indexed": false }, { "internalType": "bool", "name": "success", "type": "bool", "indexed": false }, { "internalType": "uint256", "name": "actualGasCost", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "actualGasUsed", "type": "uint256", "indexed": false }], "type": "event", "name": "UserOperationEvent", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "userOpHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "nonce", "type": "uint256", "indexed": false }, { "internalType": "bytes", "name": "revertReason", "type": "bytes", "indexed": false }], "type": "event", "name": "UserOperationRevertReason", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address", "indexed": true }, { "internalType": "address", "name": "withdrawAddress", "type": "address", "indexed": false }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }], "type": "event", "name": "Withdrawn", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "SIG_VALIDATION_FAILED", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }], "stateMutability": "view", "type": "function", "name": "_validateSenderAndPaymaster" }, { "inputs": [{ "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }], "stateMutability": "payable", "type": "function", "name": "addStake" }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "view", "type": "function", "name": "balanceOf", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "payable", "type": "function", "name": "depositTo" }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function", "name": "deposits", "outputs": [{ "internalType": "uint112", "name": "deposit", "type": "uint112" }, { "internalType": "bool", "name": "staked", "type": "bool" }, { "internalType": "uint112", "name": "stake", "type": "uint112" }, { "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }, { "internalType": "uint48", "name": "withdrawTime", "type": "uint48" }] }, { "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], "stateMutability": "view", "type": "function", "name": "getDepositInfo", "outputs": [{ "internalType": "struct IStakeManager.DepositInfo", "name": "info", "type": "tuple", "components": [{ "internalType": "uint112", "name": "deposit", "type": "uint112" }, { "internalType": "bool", "name": "staked", "type": "bool" }, { "internalType": "uint112", "name": "stake", "type": "uint112" }, { "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }, { "internalType": "uint48", "name": "withdrawTime", "type": "uint48" }] }] }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint192", "name": "key", "type": "uint192" }], "stateMutability": "view", "type": "function", "name": "getNonce", "outputs": [{ "internalType": "uint256", "name": "nonce", "type": "uint256" }] }, { "inputs": [{ "internalType": "bytes", "name": "initCode", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "getSenderAddress" }, { "inputs": [{ "internalType": "struct UserOperation", "name": "userOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }], "stateMutability": "view", "type": "function", "name": "getUserOpHash", "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }] }, { "inputs": [{ "internalType": "struct IEntryPoint.UserOpsPerAggregator[]", "name": "opsPerAggregator", "type": "tuple[]", "components": [{ "internalType": "struct UserOperation[]", "name": "userOps", "type": "tuple[]", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "contract IAggregator", "name": "aggregator", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "address payable", "name": "beneficiary", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "handleAggregatedOps" }, { "inputs": [{ "internalType": "struct UserOperation[]", "name": "ops", "type": "tuple[]", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "address payable", "name": "beneficiary", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "handleOps" }, { "inputs": [{ "internalType": "uint192", "name": "key", "type": "uint192" }], "stateMutability": "nonpayable", "type": "function", "name": "incrementNonce" }, { "inputs": [{ "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "struct EntryPointGasEstimationOverride06.UserOpInfo", "name": "opInfo", "type": "tuple", "components": [{ "internalType": "struct EntryPointGasEstimationOverride06.MemoryUserOp", "name": "mUserOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "address", "name": "paymaster", "type": "address" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }] }, { "internalType": "bytes32", "name": "userOpHash", "type": "bytes32" }, { "internalType": "uint256", "name": "prefund", "type": "uint256" }, { "internalType": "uint256", "name": "contextOffset", "type": "uint256" }, { "internalType": "uint256", "name": "preOpGas", "type": "uint256" }] }, { "internalType": "bytes", "name": "context", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "innerHandleOp", "outputs": [{ "internalType": "uint256", "name": "actualGasCost", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint192", "name": "", "type": "uint192" }], "stateMutability": "view", "type": "function", "name": "nonceSequenceNumber", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "struct UserOperation", "name": "op", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "targetCallData", "type": "bytes" }], "stateMutability": "nonpayable", "type": "function", "name": "simulateHandleOp" }, { "inputs": [{ "internalType": "struct UserOperation", "name": "userOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }], "stateMutability": "nonpayable", "type": "function", "name": "simulateValidation" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "unlockStake" }, { "inputs": [{ "internalType": "address payable", "name": "withdrawAddress", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "withdrawStake" }, { "inputs": [{ "internalType": "address payable", "name": "withdrawAddress", "type": "address" }, { "internalType": "uint256", "name": "withdrawAmount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "withdrawTo" }, { "inputs": [], "stateMutability": "payable", "type": "receive" }], "devdoc": { "kind": "dev", "methods": { "addStake(uint32)": { "params": { "unstakeDelaySec": "the new lock duration before the deposit can be withdrawn." } }, "getDepositInfo(address)": { "returns": { "info": "- full deposit information of given account" } }, "getNonce(address,uint192)": { "params": { "key": "the high 192 bit of the nonce", "sender": "the account address" }, "returns": { "nonce": "a full nonce to pass for next UserOp with this sender." } }, "getSenderAddress(bytes)": { "params": { "initCode": "the constructor code to be passed into the UserOperation." } }, "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": { "params": { "beneficiary": "the address to receive the fees", "opsPerAggregator": "the operations to execute, grouped by aggregator (or address(0) for no-aggregator accounts)" } }, "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)": { "params": { "beneficiary": "the address to receive the fees", "ops": "the operations to execute" } }, "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)": { "params": { "op": "the UserOperation to simulate", "target": "if nonzero, a target address to call after userop simulation. If called, the targetSuccess and targetResult are set to the return from that call.", "targetCallData": "callData to pass to target address" } }, "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { "details": "this method always revert. Successful result is ValidationResult error. other errors are failures.The node must also verify it doesn't use banned opcodes, and that it doesn't reference storage outside the account's data.", "params": { "userOp": "the user operation to validate." } }, "withdrawStake(address)": { "params": { "withdrawAddress": "the address to send withdrawn value." } }, "withdrawTo(address,uint256)": { "params": { "withdrawAddress": "the address to send withdrawn value.", "withdrawAmount": "the amount to withdraw." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "SIG_VALIDATION_FAILED()": { "notice": "for simulation purposes, validateUserOp (and validatePaymasterUserOp) must return this value in case of signature failure, instead of revert." }, "_validateSenderAndPaymaster(bytes,address,bytes)": { "notice": "Called only during simulation. This function always reverts to prevent warm/cold storage differentiation in simulation vs execution." }, "addStake(uint32)": { "notice": "add to the account's stake - amount and delay any pending unstake is first cancelled." }, "balanceOf(address)": { "notice": "return the deposit (for gas payment) of the account" }, "depositTo(address)": { "notice": "add to the deposit of the given account" }, "deposits(address)": { "notice": "maps paymaster to their deposits and stakes" }, "getNonce(address,uint192)": { "notice": "Return the next nonce for this sender. Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop) But UserOp with different keys can come with arbitrary order." }, "getSenderAddress(bytes)": { "notice": "Get counterfactual sender address. Calculate the sender contract address that will be generated by the initCode and salt in the UserOperation. this method always revert, and returns the address in SenderAddressResult error" }, "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { "notice": "generate a request Id - unique identifier for this request. the request ID is a hash over the content of the userOp (except the signature), the entrypoint and the chainid." }, "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)": { "notice": "Execute a batch of UserOperation with Aggregators" }, "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)": { "notice": "Execute a batch of UserOperations. no signature aggregator is used. if any account requires an aggregator (that is, it returned an aggregator when performing simulateValidation), then handleAggregatedOps() must be used instead." }, "incrementNonce(uint192)": { "notice": "Manually increment the nonce of the sender. This method is exposed just for completeness.. Account does NOT need to call it, neither during validation, nor elsewhere, as the EntryPoint will update the nonce regardless. Possible use-case is call it with various keys to \"initialize\" their nonces to one, so that future UserOperations will not pay extra for the first transaction with a given key." }, "innerHandleOp(bytes,((address,uint256,uint256,uint256,uint256,address,uint256,uint256),bytes32,uint256,uint256,uint256),bytes)": { "notice": "inner function to handle a UserOperation. Must be declared \"external\" to open a call context, but it can only be called by handleOps." }, "nonceSequenceNumber(address,uint192)": { "notice": "The next valid sequence number for a given nonce key." }, "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)": { "notice": "simulate full execution of a UserOperation (including both validation and target execution) this method will always revert with \"ExecutionResult\". it performs full validation of the UserOperation, but ignores signature error. an optional target address is called after the userop succeeds, and its value is returned (before the entire call is reverted) Note that in order to collect the the success/failure of the target call, it must be executed with trace enabled to track the emitted events." }, "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { "notice": "Simulate a call to account.validateUserOp and paymaster.validatePaymasterUserOp." }, "unlockStake()": { "notice": "attempt to unlock the stake. the value can be withdrawn (using withdrawStake) after the unstake delay." }, "withdrawStake(address)": { "notice": "withdraw from the (unlocked) stake. must first call unlockStake and wait for the unstakeDelay to pass" }, "withdrawTo(address,uint256)": { "notice": "withdraw from the deposit." } }, "version": 1 } }, "settings": { "remappings": ["@account-abstraction-v6/=lib/account-abstraction-v6/contracts/", "@account-abstraction-v7/=lib/account-abstraction-v7/contracts/", "@account-abstraction-v8/=lib/account-abstraction-v8/contracts/", "@account-abstraction-v9/=lib/account-abstraction-v9/contracts/", "@openzeppelin-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/", "@openzeppelin-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/", "@openzeppelin-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/", "@openzeppelin/contracts/=lib/openzeppelin-contracts-v5.0.2/contracts/", "@test-aa-utils/=lib/singleton-paymaster/test/utils/account-abstraction/", "@test-utils/=lib/singleton-paymaster/test/utils/", "account-abstraction-v6/=lib/account-abstraction-v6/contracts/", "account-abstraction-v7/=lib/account-abstraction-v7/contracts/", "account-abstraction-v8/=lib/account-abstraction-v8/contracts/", "account-abstraction-v9/=lib/account-abstraction-v9/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-v5.0.0/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts-v5.1.0/lib/halmos-cheatcodes/src/", "openzeppelin-contracts-v4.8.3/=lib/openzeppelin-contracts-v4.8.3/", "openzeppelin-contracts-v5.0.2/=lib/openzeppelin-contracts-v5.0.2/", "openzeppelin-contracts-v5.1.0/=lib/openzeppelin-contracts-v5.1.0/", "singleton-paymaster/=lib/singleton-paymaster/src/", "solady/=lib/solady/src/"], "optimizer": { "enabled": true, "runs": 1000000 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "src/v06/EntryPointGasEstimationOverride.sol": "EntryPointGasEstimationOverride06" }, "evmVersion": "london", "libraries": {}, "viaIR": true }, "sources": { "lib/account-abstraction-v6/contracts/core/Helpers.sol": { "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", "urls": ["bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/core/NonceManager.sol": { "keccak256": "0xa17a4a6fde70088ab18ffe6df830f3efa31f1cd0e1a7160336c96e3c94984d25", "urls": ["bzz-raw://b38615df9f80c56282b72888e9ba1eb1a9413fa67a0dbf094deda7af9feb38e7", "dweb:/ipfs/QmSzcXetEJRH4UHuUmZiSgX6bFgfqHWfmyuxVnh4NosMk1"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/core/SenderCreator.sol": { "keccak256": "0x44b9449fec82d6cdfb01d52fdd5a72f90099c651316123810cf9633f00b018c2", "urls": ["bzz-raw://a9c0487390e72638681d175c45bc92425c802fffdca4bd0ae8457782ee284612", "dweb:/ipfs/QmVbzuehCUWJWqEHyMWuc6cRVbxfcMdFsmGL9o4Wz7WY2x"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/core/StakeManager.sol": { "keccak256": "0x21aa0956382bd000b1b8c3b1d19ca6ebcd6c9029eebb19c612fb38ee5dd2430a", "urls": ["bzz-raw://0a625c8795354d9f429367f9c1d14eb8af7db9c7f2c2a2033e2066ced76a573a", "dweb:/ipfs/Qmd1j6UarUg54q1G2HCNCLQz8XGVZR1qxX7eQ6cytHpQPN"], "license": "GPL-3.0-only" }, "lib/account-abstraction-v6/contracts/interfaces/IAccount.sol": { "keccak256": "0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418", "urls": ["bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4", "dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IAggregator.sol": { "keccak256": "0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a", "urls": ["bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b", "dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IEntryPoint.sol": { "keccak256": "0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8", "urls": ["bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf", "dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/INonceManager.sol": { "keccak256": "0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12", "urls": ["bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2", "dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IPaymaster.sol": { "keccak256": "0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456", "urls": ["bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8", "dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/interfaces/IStakeManager.sol": { "keccak256": "0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f", "urls": ["bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3", "dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ"], "license": "GPL-3.0-only" }, "lib/account-abstraction-v6/contracts/interfaces/UserOperation.sol": { "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", "urls": ["bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN"], "license": "GPL-3.0" }, "lib/account-abstraction-v6/contracts/utils/Exec.sol": { "keccak256": "0x5b232117afbc2939f3ffc92745614867e9e1d475a3e1e5443adae13c200174f1", "urls": ["bzz-raw://62e7365379a06ead7b47637945bcaee095d51aab1d3ac00ddec69443e6cbe9fe", "dweb:/ipfs/QmctG3aw4U3KMSMeJKoLJ1NJewjMWfppnd1m3kxNTe39Uy"], "license": "LGPL-3.0-only" }, "lib/openzeppelin-contracts-v4.8.3/contracts/security/ReentrancyGuard.sol": { "keccak256": "0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc", "urls": ["bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010", "dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u"], "license": "MIT" }, "lib/openzeppelin-contracts-v4.8.3/contracts/utils/StorageSlot.sol": { "keccak256": "0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d", "urls": ["bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4", "dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"], "license": "MIT" }, "lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/ERC165.sol": { "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", "urls": ["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"], "license": "MIT" }, "lib/openzeppelin-contracts-v4.8.3/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": ["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"], "license": "MIT" }, "src/SimulationOverrideHelper.sol": { "keccak256": "0x327a9038314036c1259ce7d2422d17b10f264df6b0d9f6b87cddb6b047898774", "urls": ["bzz-raw://f4288cd354dbc1344dbe6139a862abe6bbc784186705cd2fc5197ef0e26d8b66", "dweb:/ipfs/Qmerifmk26zWoYk2hRXptyC6ncPH4m7zyQEDJERHNo5ijf"], "license": "MIT" }, "src/v06/EntryPointGasEstimationOverride.sol": { "keccak256": "0xd543e1dfeb6c3f74ce1964099364ce549563c11ea47c3cb97b02bc7e71e8f46d", "urls": ["bzz-raw://53d579d8654dbed980bb14d08ecafddb30b4f634ffedd4a64a2d30b39803d4f7", "dweb:/ipfs/QmTnT9yk1AB2LydP2QWiyuPrTHAZzqFcrLLjkB5Q1z7DpD"], "license": "GPL-3.0" } }, "version": 1 }, "id": 17 }