@superfluid-finance/ethereum-contracts 1.7.2-dev.3e0e33e.0 → 1.7.2-dev.3e57a67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/artifacts/contracts/mocks/CFAv1NFTMock.sol/ConstantInflowNFTMock.json +2 -2
  2. package/artifacts/contracts/mocks/CFAv1NFTMock.sol/ConstantOutflowNFTMock.json +2 -2
  3. package/artifacts/contracts/mocks/CFAv1NFTMock.sol/NoNFTSuperTokenMock.json +2 -2
  4. package/artifacts/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientDrainingGas.json +2 -2
  5. package/artifacts/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientReverting.json +2 -2
  6. package/artifacts/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock.json +2 -2
  7. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock.json +2 -2
  8. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock42.json +2 -2
  9. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryStorageLayoutTester.json +2 -2
  10. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryUpdateLogicContractsTester.json +2 -2
  11. package/artifacts/contracts/mocks/SuperTokenMock.sol/SuperTokenMock.json +2 -2
  12. package/artifacts/contracts/mocks/SuperTokenMock.sol/SuperTokenStorageLayoutTester.json +2 -2
  13. package/artifacts/contracts/superfluid/SuperToken.sol/SuperToken.json +2 -2
  14. package/artifacts/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory.json +2 -2
  15. package/artifacts/contracts/utils/SuperfluidFrameworkDeployer.sol/SuperfluidFrameworkDeployer.json +2 -2
  16. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/CFAv1ForwarderDeployerLibrary.json +2 -2
  17. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/IDAv1ForwarderDeployerLibrary.json +2 -2
  18. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/ProxyDeployerLibrary.json +2 -2
  19. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperTokenDeployerLibrary.json +2 -2
  20. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidCFAv1DeployerLibrary.json +2 -2
  21. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidFrameworkDeploymentSteps.json +2 -2
  22. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidGovDeployerLibrary.json +2 -2
  23. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidHostDeployerLibrary.json +2 -2
  24. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidIDAv1DeployerLibrary.json +2 -2
  25. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidLoaderDeployerLibrary.json +2 -2
  26. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidNFTLogicDeployerLibrary.json +2 -2
  27. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidPeripheryDeployerLibrary.json +2 -2
  28. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/TokenDeployerLibrary.json +2 -2
  29. package/build/contracts/AccessControl.json +1 -1
  30. package/build/contracts/AccessControlEnumerable.json +1 -1
  31. package/build/contracts/Address.json +1 -1
  32. package/build/contracts/AgreementBase.json +1 -1
  33. package/build/contracts/AgreementLibrary.json +1 -1
  34. package/build/contracts/BaseRelayRecipient.json +1 -1
  35. package/build/contracts/BatchLiquidator.json +1 -1
  36. package/build/contracts/BatchOperation.json +1 -1
  37. package/build/contracts/CFAv1Forwarder.json +1 -1
  38. package/build/contracts/CFAv1ForwarderDeployerLibrary.json +4 -4
  39. package/build/contracts/CFAv1Library.json +1 -1
  40. package/build/contracts/CallUtils.json +1 -1
  41. package/build/contracts/ClosingOnUpdateFlowTestApp.json +1 -1
  42. package/build/contracts/ConstantFlowAgreementV1.json +1 -1
  43. package/build/contracts/ConstantInflowNFT.json +1 -1
  44. package/build/contracts/ConstantOutflowNFT.json +1 -1
  45. package/build/contracts/Context.json +1 -1
  46. package/build/contracts/ContextDefinitions.json +1 -1
  47. package/build/contracts/CustomSuperTokenBase.json +1 -1
  48. package/build/contracts/ERC165.json +1 -1
  49. package/build/contracts/ERC1820Implementer.json +1 -1
  50. package/build/contracts/ERC1820RegistryCompiled.json +1 -1
  51. package/build/contracts/ERC20.json +1 -1
  52. package/build/contracts/ERC20WithTokenInfo.json +1 -1
  53. package/build/contracts/ERC777Helper.json +1 -1
  54. package/build/contracts/ERC777RecipientDrainingGas.json +4 -4
  55. package/build/contracts/ERC777RecipientReverting.json +4 -4
  56. package/build/contracts/EnumerableSet.json +1 -1
  57. package/build/contracts/EventsEmitter.json +1 -1
  58. package/build/contracts/ExclusiveInflowTestApp.json +1 -1
  59. package/build/contracts/FixedSizeData.json +1 -1
  60. package/build/contracts/FlowExchangeTestApp.json +1 -1
  61. package/build/contracts/FlowNFTBase.json +1 -1
  62. package/build/contracts/FlowOperatorDefinitions.json +1 -1
  63. package/build/contracts/ForwarderBase.json +1 -1
  64. package/build/contracts/FullUpgradableSuperTokenProxy.json +1 -1
  65. package/build/contracts/IAccessControl.json +1 -1
  66. package/build/contracts/IAccessControlEnumerable.json +1 -1
  67. package/build/contracts/IConstantFlowAgreementV1.json +1 -1
  68. package/build/contracts/IConstantInflowNFT.json +1 -1
  69. package/build/contracts/IConstantOutflowNFT.json +1 -1
  70. package/build/contracts/IDAv1Forwarder.json +1 -1
  71. package/build/contracts/IDAv1ForwarderDeployerLibrary.json +4 -4
  72. package/build/contracts/IDAv1Library.json +1 -1
  73. package/build/contracts/IERC165.json +1 -1
  74. package/build/contracts/IERC1820Implementer.json +1 -1
  75. package/build/contracts/IERC1820Registry.json +1 -1
  76. package/build/contracts/IERC20.json +1 -1
  77. package/build/contracts/IERC20Metadata.json +1 -1
  78. package/build/contracts/IERC20Permit.json +1 -1
  79. package/build/contracts/IERC721.json +1 -1
  80. package/build/contracts/IERC721Metadata.json +1 -1
  81. package/build/contracts/IERC777.json +1 -1
  82. package/build/contracts/IERC777Recipient.json +1 -1
  83. package/build/contracts/IERC777Sender.json +1 -1
  84. package/build/contracts/IFlowNFTBase.json +1 -1
  85. package/build/contracts/IInstantDistributionAgreementV1.json +1 -1
  86. package/build/contracts/IMultiSigWallet.json +1 -1
  87. package/build/contracts/IPoolAdminNFT.json +1 -1
  88. package/build/contracts/IPoolMemberNFT.json +1 -1
  89. package/build/contracts/IPureSuperToken.json +1 -1
  90. package/build/contracts/IPureSuperTokenCustom.json +1 -1
  91. package/build/contracts/IRelayRecipient.json +1 -1
  92. package/build/contracts/IResolver.json +1 -1
  93. package/build/contracts/ISETH.json +1 -1
  94. package/build/contracts/ISETHCustom.json +1 -1
  95. package/build/contracts/ISuperAgreement.json +1 -1
  96. package/build/contracts/ISuperApp.json +1 -1
  97. package/build/contracts/ISuperToken.json +1 -1
  98. package/build/contracts/ISuperTokenFactory.json +1 -1
  99. package/build/contracts/ISuperfluid.json +1 -1
  100. package/build/contracts/ISuperfluidGovernance.json +1 -1
  101. package/build/contracts/ISuperfluidToken.json +1 -1
  102. package/build/contracts/ITOGAv1.json +1 -1
  103. package/build/contracts/ITOGAv2.json +1 -1
  104. package/build/contracts/ITOGAv3.json +1 -1
  105. package/build/contracts/Initializable.json +1 -1
  106. package/build/contracts/InstantDistributionAgreementV1.json +1 -1
  107. package/build/contracts/Math.json +1 -1
  108. package/build/contracts/NonClosableOutflowTestApp.json +1 -1
  109. package/build/contracts/Ownable.json +1 -1
  110. package/build/contracts/Proxy.json +1 -1
  111. package/build/contracts/ProxyDeployerLibrary.json +4 -4
  112. package/build/contracts/PureSuperToken.json +1 -1
  113. package/build/contracts/Resolver.json +1 -1
  114. package/build/contracts/SETHProxy.json +1 -1
  115. package/build/contracts/SafeCast.json +1 -1
  116. package/build/contracts/SafeERC20.json +1 -1
  117. package/build/contracts/SafeGasLibrary.json +1 -1
  118. package/build/contracts/SafeMath.json +1 -1
  119. package/build/contracts/SelfDeletingFlowTestApp.json +1 -1
  120. package/build/contracts/SlotsBitmapLibrary.json +1 -1
  121. package/build/contracts/StreamRedirector.json +1 -1
  122. package/build/contracts/Strings.json +1 -1
  123. package/build/contracts/SuperAppBase.json +1 -1
  124. package/build/contracts/SuperAppBaseFlow.json +1 -1
  125. package/build/contracts/SuperAppDefinitions.json +1 -1
  126. package/build/contracts/SuperToken.json +1954 -1954
  127. package/build/contracts/SuperTokenDeployerLibrary.json +4 -4
  128. package/build/contracts/SuperTokenFactory.json +4 -4
  129. package/build/contracts/SuperTokenFactoryBase.json +2 -2
  130. package/build/contracts/SuperTokenV1Library.json +1 -1
  131. package/build/contracts/SuperUpgrader.json +1 -1
  132. package/build/contracts/Superfluid.json +1 -1
  133. package/build/contracts/SuperfluidCFAv1DeployerLibrary.json +4 -4
  134. package/build/contracts/SuperfluidFrameworkDeployer.json +4 -4
  135. package/build/contracts/SuperfluidFrameworkDeploymentSteps.json +4 -4
  136. package/build/contracts/SuperfluidGovDeployerLibrary.json +4 -4
  137. package/build/contracts/SuperfluidGovernanceBase.json +1 -1
  138. package/build/contracts/SuperfluidGovernanceConfigs.json +1 -1
  139. package/build/contracts/SuperfluidGovernanceII.json +1 -1
  140. package/build/contracts/SuperfluidGovernanceIIProxy.json +1 -1
  141. package/build/contracts/SuperfluidHostDeployerLibrary.json +4 -4
  142. package/build/contracts/SuperfluidIDAv1DeployerLibrary.json +4 -4
  143. package/build/contracts/SuperfluidLoader.json +1 -1
  144. package/build/contracts/SuperfluidLoaderDeployerLibrary.json +4 -4
  145. package/build/contracts/SuperfluidLoaderLibrary.json +1 -1
  146. package/build/contracts/SuperfluidNFTLogicDeployerLibrary.json +4 -4
  147. package/build/contracts/SuperfluidPeripheryDeployerLibrary.json +4 -4
  148. package/build/contracts/SuperfluidToken.json +988 -988
  149. package/build/contracts/TOGA.json +1 -1
  150. package/build/contracts/TestGovernance.json +1 -1
  151. package/build/contracts/TestResolver.json +1 -1
  152. package/build/contracts/TestToken.json +1 -1
  153. package/build/contracts/TokenDeployerLibrary.json +4 -4
  154. package/build/contracts/TokenInfo.json +1 -1
  155. package/build/contracts/UUPSProxiable.json +1 -1
  156. package/build/contracts/UUPSProxy.json +1 -1
  157. package/build/contracts/UUPSUtils.json +1 -1
  158. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantInflowNFTMock__factory.d.ts +1 -1
  159. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantInflowNFTMock__factory.js +1 -1
  160. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantOutflowNFTMock__factory.d.ts +1 -1
  161. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantOutflowNFTMock__factory.js +1 -1
  162. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/NoNFTSuperTokenMock__factory.d.ts +1 -1
  163. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/NoNFTSuperTokenMock__factory.js +1 -1
  164. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientDrainingGas__factory.d.ts +1 -1
  165. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientDrainingGas__factory.js +1 -1
  166. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientReverting__factory.d.ts +1 -1
  167. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientReverting__factory.js +1 -1
  168. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock__factory.d.ts +1 -1
  169. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock__factory.js +1 -1
  170. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock42__factory.d.ts +1 -1
  171. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock42__factory.js +1 -1
  172. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock__factory.d.ts +1 -1
  173. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock__factory.js +1 -1
  174. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryStorageLayoutTester__factory.d.ts +1 -1
  175. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryStorageLayoutTester__factory.js +1 -1
  176. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.d.ts +1 -1
  177. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.js +1 -1
  178. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenMock__factory.d.ts +1 -1
  179. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenMock__factory.js +1 -1
  180. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenStorageLayoutTester__factory.d.ts +1 -1
  181. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenStorageLayoutTester__factory.js +1 -1
  182. package/build/typechain/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.d.ts +1 -1
  183. package/build/typechain/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.js +1 -1
  184. package/build/typechain/factories/contracts/superfluid/SuperToken__factory.d.ts +1 -1
  185. package/build/typechain/factories/contracts/superfluid/SuperToken__factory.js +1 -1
  186. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeployer__factory.d.ts +1 -1
  187. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeployer__factory.js +1 -1
  188. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps__factory.d.ts +1 -1
  189. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps__factory.js +1 -1
  190. package/contracts/superfluid/SuperToken.sol +44 -41
  191. package/contracts/superfluid/SuperfluidToken.sol +15 -15
  192. package/package.json +3 -3
@@ -530,7 +530,7 @@ const _abi = [
530
530
  type: "function",
531
531
  },
532
532
  ];
533
- const _bytecode = "0x6000608081905260a060408190526200001a9190816200002f565b503480156200002857600080fd5b50620000b0565b82805482825590600052602060002090810192821562000087579160200282015b828111156200008757825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000050565b506200009592915062000099565b5090565b5b808211156200009557600081556001016200009a565b6155c580620000c06000396000f3fe60806040523480156200001157600080fd5b5060043610620001695760003560e01c806376f30be811620000d3578063b3083cf81162000086578063b3083cf81462000225578063c8c25ad51462000310578063cbcd74491462000320578063dfa98ad51462000337578063f2fde38b146200046c578063fa0215fc146200048357600080fd5b806376f30be8146200028c5780637dc2dc121462000296578063888a37b114620002ce57806393786bf014620002d9578063acbeaa0714620002e2578063ad6eb49914620002f957600080fd5b80633df285fe116200012c5780633df285fe14620001db5780634d59c136146200021b578063520994701462000225578063547047c7146200023f57806362a32e1e14620002495780637296cb5a146200027557600080fd5b806305bfa3e0146200016e57806306e83586146200018b5780631903410d14620001975780632a49664814620001c757806338bc37a414620001d1575b600080fd5b6200017861070881565b6040519081526020015b60405180910390f35b620001956200049a565b005b620001ae620001a83660046200298d565b620004a6565b6040516001600160a01b03909116815260200162000182565b62000195620004d1565b62000195620004db565b6200020c6040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b81525081565b604051620001829190620029fb565b6200017861384081565b6200022e600081565b604051901515815260200162000182565b62000195620004fe565b6200020c6040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b81525081565b620001956200028636600462002b65565b6200051c565b6200019562000527565b620002ad620002a736600462002c92565b620005c8565b604080516001600160a01b0393841681529290911660208301520162000182565b6200017862093a8081565b620001ae604581565b62000195620002f336600462002d24565b62000918565b620001956200030a36600462002b65565b62000923565b6040516008815260200162000182565b620001ae6200033136600462002d42565b6200092e565b6200045d604080516101608101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810182905260e08101829052610100810182905261012081018290526101408101919091525060408051610160810182526001546001600160a01b03610100918290048116835260025481166020808501829052600354831685870181905286518088018852838152808301919091526060860152600554831660808601819052865180880190975291865285015260a0830193909352600c54831660c0830152600e54831660e0830152600f54831690820152601054821661012082015260115490911661014082015290565b60405162000182919062002db5565b620001956200047d36600462002ee5565b62000b3e565b620001ae6200049436600462002f05565b62000ba8565b620004a462000e25565b565b60008181548110620004b757600080fd5b6000918252602090912001546001600160a01b0316905081565b620004a462000e63565b620004e562002927565b6001815260006020820152620004fb8162000eab565b50565b6200050862002927565b62093a8060c0820152620004fb8162000eca565b620004fb8162000eca565b6040805160e08101825260008082526020808301829052815484518183028101830186528181529294840192918591908301828280156200059257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000573575b5050509183525050604560208201526138406040820152610708606082015262093a806080909101529050620004fb8162000fbf565b600c5460009081906001600160a01b0316620005f757604051635006ee6d60e11b815260040160405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad243b6200062a57604051622b682760e71b815260040160405180910390fd5b6040516302a510b960e61b815273__$e670fb80a00d783cff26adce1c19b32070$__9063a9442e40906200066d908b908b908b908b908b908b9060040162002fa9565b602060405180830381865af41580156200068b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006b1919062002fed565b915060008686604051602001620006ca9291906200300d565b60408051601f1981840301815290829052600c549092506001600160a01b03169063431f148190859060019062000708908c908c9060200162003023565b604051602081830303815290604052856040518563ffffffff1660e01b815260040162000739949392919062003045565b6020604051808303816000875af115801562000759573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077f919062002fed565b915060006040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b815250846001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008119190810190620030a2565b6040516020016200082492919062003141565b6040516020818303038152906040529050620008436001828662001043565b60006040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b815250846001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620008ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008d89190810190620030a2565b604051602001620008eb92919062003141565b60405160208183030381529060405290506200090a6001828662001043565b505050965096945050505050565b620004fb81620010e2565b620004fb8162000eab565b600c546000906001600160a01b03166200095b57604051635006ee6d60e11b815260040160405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad243b6200098e57604051622b682760e71b815260040160405180910390fd5b600073__$e670fb80a00d783cff26adce1c19b32070$__63f7c3bdc96040518163ffffffff1660e01b8152600401602060405180830381865af4158015620009da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a00919062002fed565b600c54604051633504b4d160e21b81526001600160a01b03808416600483015292945084935091169063d412d34490602401600060405180830381600087803b15801562000a4d57600080fd5b505af115801562000a62573d6000803e3d6000fd5b50506040516285fc1360e71b81526001600160a01b03851692506342fe0980915062000a9f906000906012908b908b908b908b9060040162003174565b600060405180830381600087803b15801562000aba57600080fd5b505af115801562000acf573d6000803e3d6000fd5b5050505060006040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b815250858560405160200162000b1593929190620031c6565b604051602081830303815290604052905062000b346001828562001043565b5050949350505050565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301526101009092049091169063f2fde38b90602401600060405180830381600087803b15801562000b8c57600080fd5b505af115801562000ba1573d6000803e3d6000fd5b5050505050565b600c546000906001600160a01b031662000bd557604051635006ee6d60e11b815260040160405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad243b62000c0857604051622b682760e71b815260040160405180910390fd5b600073__$e670fb80a00d783cff26adce1c19b32070$__631f2d18966040518163ffffffff1660e01b8152600401602060405180830381865af415801562000c54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7a919062002fed565b600c54604051633504b4d160e21b81526001600160a01b03808416600483015292935091169063d412d34490602401600060405180830381600087803b15801562000cc457600080fd5b505af115801562000cd9573d6000803e3d6000fd5b505060405163588ca48760e11b81526001600160a01b038416925063b119490e915062000d13908a908a908a908a908a90600401620031f0565b600060405180830381600087803b15801562000d2e57600080fd5b505af115801562000d43573d6000803e3d6000fd5b5050505080915062000da660016040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b815250878760405160200162000d9093929190620031c6565b6040516020818303038152906040528462001043565b60405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801562000df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e1a91906200322e565b505095945050505050565b6002546001600160a01b031662000e4f57604051633b8034db60e11b815260040160405180910390fd5b62000e59620012ba565b620004a46200135f565b6002546001600160a01b031662000e8d5760405163bb57a2c760e01b815260040160405180910390fd5b62000e9762001404565b62000ea16200190e565b620004a4620019ca565b62000eb63062001a91565b620004fb8160000151826020015162001b93565b6002546001600160a01b031662000ef45760405163608e9db560e01b815260040160405180910390fd5b62000eff3062001c37565b62000f0962001cd9565b600e54604051637048027560e01b81523360048201526001600160a01b0390911690637048027590602401600060405180830381600087803b15801562000f4f57600080fd5b505af115801562000f64573d6000803e3d6000fd5b5050505062000f7262001d7e565b62000f7c62001e23565b62000f8b8160c0015162001ec6565b6003546001600160a01b031662000fb5576040516302a9c2c560e61b815260040160405180910390fd5b620004fb62001f05565b62000fca8162000eab565b62000fd462001f80565b62000ff2816060015182608001518360a00151846040015162001feb565b62000ffc62000e25565b6200100662002068565b6200101062000e63565b6200101a62002348565b620010258162000eca565b6200102f62002496565b62001039620024e2565b620004fb6200252e565b600e546001600160a01b03166200106d5760405163521c4a7d60e01b815260040160405180910390fd5b8215620010dd57600e5460405163a815ff1560e01b81526001600160a01b039091169063a815ff1590620010a890859085906004016200324e565b600060405180830381600087803b158015620010c357600080fd5b505af1158015620010d8573d6000803e3d6000fd5b505050505b505050565b60015460ff828116911614620011305760405162461bcd60e51b815260206004820152600e60248201526d0496e636f727265637420737465760941b60448201526064015b60405180910390fd5b8060ff166000036200114d57620011473062001a91565b62001289565b8060ff1660010362001167576200114760016000620027c4565b8060ff166002036200117d57620011476200284d565b8060ff166003036200119d576200119362002861565b6200114762002875565b600460ff82161462001289578060ff16600503620011bf576200114762001404565b8060ff16600603620011d5576200114762002889565b8060ff166007036200125157620011ec306200289d565b600e54604051637048027560e01b81523360048201526001600160a01b0390911690637048027590602401600060405180830381600087803b1580156200123257600080fd5b505af115801562001247573d6000803e3d6000fd5b5050505062001289565b60405162461bcd60e51b815260206004820152600c60248201526b0496e76616c696420737465760a41b604482015260640162001127565b6001805460ff169060006200129e836200327a565b91906101000a81548160ff021916908360ff1602179055505050565b600254604051630dbabbff60e11b81526001600160a01b03909116600482015273__$a470d8d3eff4182c9809d6de570cdeeec8$__90631b7577fe90602401602060405180830381865af415801562001317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133d919062002fed565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051630cce0ce360e31b81526001600160a01b03909116600482015273__$0e33a7228bbdb017aebe2f2bed0910defa$__90636670671890602401602060405180830381865af4158015620013bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e2919062002fed565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600073__$587c1447ad460e9b007894b8b359c425ea$__63c465e06c6040518163ffffffff1660e01b8152600401602060405180830381865af415801562001450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001476919062002fed565b9050600073__$587c1447ad460e9b007894b8b359c425ea$__63c465e06c6040518163ffffffff1660e01b8152600401602060405180830381865af4158015620014c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ea919062002fed565b600254604051635e1673bb60e11b81526001600160a01b039182166004820152908216602482015290915073__$342a172af7bf09406042436203b53e0416$__9063bc2ce77690604401602060405180830381865af415801562001552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001578919062002fed565b600780546001600160a01b0319166001600160a01b039290921691821790556040805163132075a760e31b81529051639903ad389160048082019260009290919082900301818387803b158015620015cf57600080fd5b505af1158015620015e4573d6000803e3d6000fd5b50506002546040516326c043d360e11b81526001600160a01b039182166004820152908516602482015273__$342a172af7bf09406042436203b53e0416$__9250634d8087a69150604401602060405180830381865af41580156200164d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001673919062002fed565b600880546001600160a01b0319166001600160a01b039290921691821790556040805163132075a760e31b81529051639903ad389160048082019260009290919082900301818387803b158015620016ca57600080fd5b505af1158015620016df573d6000803e3d6000fd5b5050600754604051634a0687ef60e01b81526001600160a01b0391821660048201529085169250634a0687ef9150602401600060405180830381600087803b1580156200172b57600080fd5b505af115801562001740573d6000803e3d6000fd5b5050600854604051634a0687ef60e01b81526001600160a01b0391821660048201529084169250634a0687ef9150602401600060405180830381600087803b1580156200178c57600080fd5b505af1158015620017a1573d6000803e3d6000fd5b50506040805163266c45bb60e11b81526004810191909152601460448201527310dbdb9cdd185b9d0813dd5d199b1bddc813919560621b606482015260806024820152600360848201526221a7a360e91b60a48201526001600160a01b0385169250634cd88b76915060c401600060405180830381600087803b1580156200182857600080fd5b505af11580156200183d573d6000803e3d6000fd5b50506040805163266c45bb60e11b81526004810191909152601360448201527210dbdb9cdd185b9d08125b999b1bddc8139195606a1b606482015260806024820152600360848201526221a4a360e91b60a48201526001600160a01b0384169250634cd88b76915060c401600060405180830381600087803b158015620018c357600080fd5b505af1158015620018d8573d6000803e3d6000fd5b5050600980546001600160a01b039586166001600160a01b031991821617909155600a8054949095169316929092179092555050565b600254600954600a54604051630e07777960e31b81526001600160a01b039384166004820152918316602483015291909116604482015273__$bd96dfe50c329cee8e313709d3c94b8122$__9063703bbbc890606401602060405180830381865af415801562001982573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019a8919062002fed565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600254600b54600754600854604051630243059d60e01b81526001600160a01b0394851660048201529284166024840152908316604483015291909116606482015273__$859a28afbbc8e5bf0b546dc5c4495c32e6$__90630243059d90608401602060405180830381865af415801562001a49573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6f919062002fed565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b73__$02c95dd9d7be6f60f760f29aee4bb17ffc$__63c3acf1b36040518163ffffffff1660e01b8152600401602060405180830381865af415801562001adb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b01919062002fed565b60018054610100600160a81b0319166101006001600160a01b0393841681029190911791829055604051633f5b172b60e11b8152910482166004820152908216602482015273__$02c95dd9d7be6f60f760f29aee4bb17ffc$__90637eb62e569060440160006040518083038186803b15801562001b7e57600080fd5b505af415801562000ba1573d6000803e3d6000fd5b604051638a25422160e01b81528215156004820152811515602482015273__$ad779358bf46e2140b9444ea344feed6e1$__90638a25422190604401602060405180830381865af415801562001bed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c13919062002fed565b600280546001600160a01b0319166001600160a01b03929092169190911790555050565b604051632f0f279d60e01b81526001600160a01b038216600482015273__$859a28afbbc8e5bf0b546dc5c4495c32e6$__90632f0f279d90602401602060405180830381865af415801562001c90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb6919062002fed565b600e80546001600160a01b0319166001600160a01b039290921691909117905550565b600e54604051630b5bd8c560e01b81526001600160a01b03909116600482015273__$51a374af64471c67800fb4db73e0bb3f61$__90630b5bd8c590602401602060405180830381865af415801562001d36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d5c919062002fed565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60025460405163269c683160e11b81526001600160a01b03909116600482015273__$62fc974fc919b81fb994c71922b697bf1a$__90634d38d06290602401602060405180830381865af415801562001ddb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e01919062002fed565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051623b2bcd60e01b81526001600160a01b03909116600482015273__$a8b7c5720cdda94a7f5cdf662a74179e74$__90623b2bcd90602401602060405180830381865af415801562001e7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ea4919062002fed565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b731820a4b7618bde71dce8cdc73aab6c95905fad243b62001efa57604051630c9b12e760e01b815260040160405180910390fd5b620004fb81620028b2565b6002546003546040516001600160a01b03928316929091169062001f299062002971565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001f5d573d6000803e3d6000fd5b50601280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460015460405163189acdbd60e31b81526001600160a01b036101009092048216600482015291169063c4d66de8906024015b600060405180830381600087803b15801562001fd057600080fd5b505af115801562001fe5573d6000803e3d6000fd5b50505050565b600154600254604051630b520f0360e31b81526001600160a01b03610100909304831692635a907818926200202e929116908890889088908890600401620032ee565b600060405180830381600087803b1580156200204957600080fd5b505af11580156200205e573d6000803e3d6000fd5b5050505050505050565b6001546002546004805460405163cadf8f8560e01b81526001600160a01b039384169281019290925282166024820152610100909204169063cadf8f8590604401600060405180830381600087803b158015620020c457600080fd5b505af1158015620020d9573d6000803e3d6000fd5b50506002546004805460408051633b982ccf60e11b815290516001600160a01b03948516965063b6d200de95509390911692637730599e928281019260209291908290030181865afa15801562002134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200215a91906200332a565b6040518263ffffffff1660e01b81526004016200217991815260200190565b602060405180830381865afa15801562002197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021bd919062002fed565b600380546001600160a01b0319166001600160a01b0392831617905560015460025460065460405163cadf8f8560e01b81529184166004830152831660248201526101009091049091169063cadf8f8590604401600060405180830381600087803b1580156200222c57600080fd5b505af115801562002241573d6000803e3d6000fd5b505060025460065460408051633b982ccf60e11b815290516001600160a01b03938416955063b6d200de94509190921691637730599e9160048083019260209291908290030181865afa1580156200229d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c391906200332a565b6040518263ffffffff1660e01b8152600401620022e291815260200190565b602060405180830381865afa15801562002300573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002326919062002fed565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001546002546001600160a01b0361010090920482169163427942a4911660008060405190808252806020026020018201604052801562002393578160200160208202803683370190505b50600d546040516001600160e01b031960e087901b168152620023c6949392916001600160a01b03169060040162003344565b600060405180830381600087803b158015620023e157600080fd5b505af1158015620023f6573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663731aed6e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200244e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002474919062002fed565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001546002546010546040516355c2378d60e11b81526001600160a01b039283166004820152600060248201529082166044820152610100909204169063ab846f1a9060640162001fb5565b6001546002546011546040516355c2378d60e11b81526001600160a01b039283166004820152600060248201529082166044820152610100909204169063ab846f1a9060640162001fb5565b600e546001546040805163a815ff1560e01b81526004810191909152601360448201527215195cdd11dbdd995c9b985b98d94b9d195cdd606a1b60648201526001600160a01b036101009092048216602482015291169063a815ff1590608401600060405180830381600087803b158015620025a957600080fd5b505af1158015620025be573d6000803e3d6000fd5b5050600e546002546040805163a815ff1560e01b81526004810191909152600f60448201526e14dd5c195c999b1d5a590b9d195cdd608a1b60648201526001600160a01b0391821660248201529116925063a815ff159150608401600060405180830381600087803b1580156200263457600080fd5b505af115801562002649573d6000803e3d6000fd5b5050600e54600f546040805163a815ff1560e01b8152600481019190915260136044820152725375706572666c7569644c6f616465722d763160681b60648201526001600160a01b0391821660248201529116925063a815ff159150608401600060405180830381600087803b158015620026c357600080fd5b505af1158015620026d8573d6000803e3d6000fd5b5050600e80546010546040805163a815ff1560e01b8152600481019190915260448101939093526d21a320bb18a337b93bb0b93232b960911b60648401526001600160a01b03908116602484015216925063a815ff159150608401600060405180830381600087803b1580156200274e57600080fd5b505af115801562002763573d6000803e3d6000fd5b5050600e80546011546040805163a815ff1560e01b8152600481019190915260448101939093526d24a220bb18a337b93bb0b93232b960911b60648401526001600160a01b03908116602484015216925063a815ff15915060840162001fb5565b620027d0828262001b93565b620027da62001f80565b62002849604561384061070860008054806020026020016040519081016040528092919081815260200182805480156200283e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200281f575b505050505062001feb565b5050565b6200285762000e4f565b620004a462002068565b6200286b62001d7e565b620004a462002496565b6200287f62001e23565b620004a4620024e2565b6200289362000e97565b620004a462002348565b620028a88162001c37565b6200103962001cd9565b6002546040516001600160a01b03909116908290620028d1906200297f565b6001600160a01b0390921682526020820152604001604051809103906000f08015801562002903573d6000803e3d6000fd5b50601380546001600160a01b0319166001600160a01b039290921691909117905550565b6040518060e001604052806000151581526020016000151581526020016060815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b6109d8806200338583390190565b6118338062003d5d83390190565b600060208284031215620029a057600080fd5b5035919050565b60005b83811015620029c4578181015183820152602001620029aa565b50506000910152565b60008151808452620029e7816020860160208601620029a7565b601f01601f19169290920160200192915050565b60208152600062002a106020830184620029cd565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562002a535762002a5362002a17565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002a855762002a8562002a17565b604052919050565b8015158114620004fb57600080fd5b803562002aa98162002a8d565b919050565b6001600160a01b0381168114620004fb57600080fd5b803562002aa98162002aae565b600082601f83011262002ae357600080fd5b8135602067ffffffffffffffff82111562002b025762002b0262002a17565b8160051b62002b1382820162002a59565b928352848101820192828101908785111562002b2e57600080fd5b83870192505b8483101562002b5a57823562002b4a8162002aae565b8252918301919083019062002b34565b979650505050505050565b60006020828403121562002b7857600080fd5b813567ffffffffffffffff8082111562002b9157600080fd5b9083019060e0828603121562002ba657600080fd5b62002bb062002a2d565b62002bbb8362002a9c565b815262002bcb6020840162002a9c565b602082015260408301358281111562002be357600080fd5b62002bf18782860162002ad1565b60408301525062002c056060840162002ac4565b60608201526080830135608082015260a083013560a082015260c083013560c082015280935050505092915050565b60008083601f84011262002c4757600080fd5b50813567ffffffffffffffff81111562002c6057600080fd5b60208301915083602082850101111562002c7957600080fd5b9250929050565b803560ff8116811462002aa957600080fd5b6000806000806000806080878903121562002cac57600080fd5b863567ffffffffffffffff8082111562002cc557600080fd5b62002cd38a838b0162002c34565b9098509650602089013591508082111562002ced57600080fd5b5062002cfc89828a0162002c34565b909550935062002d1190506040880162002c80565b9150606087013590509295509295509295565b60006020828403121562002d3757600080fd5b62002a108262002c80565b6000806000806040858703121562002d5957600080fd5b843567ffffffffffffffff8082111562002d7257600080fd5b62002d808883890162002c34565b9096509450602087013591508082111562002d9a57600080fd5b5062002da98782880162002c34565b95989497509550505050565b81516001600160a01b031681526101a08101602083015162002de260208401826001600160a01b03169052565b50604083015162002dfe60408401826001600160a01b03169052565b50606083015162002e28606084018280516001600160a01b03908116835260209182015116910152565b5060808301516001600160a01b03811660a08401525060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c083015161010062002e7e818501836001600160a01b03169052565b60e0850151915061012062002e9d818601846001600160a01b03169052565b9085015191506101409062002ebc858301846001600160a01b03169052565b8501516001600160a01b0390811661016086015294015190931661018090920191909152919050565b60006020828403121562002ef857600080fd5b813562002a108162002aae565b60008060008060006060868803121562002f1e57600080fd5b853567ffffffffffffffff8082111562002f3757600080fd5b62002f4589838a0162002c34565b9097509550602088013591508082111562002f5f57600080fd5b5062002f6e8882890162002c34565b96999598509660400135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600062002fbf60808301888a62002f80565b828103602084015262002fd481878962002f80565b60ff959095166040840152505060600152949350505050565b6000602082840312156200300057600080fd5b815162002a108162002aae565b81838237600f60fb1b9101908152600101919050565b65029bab832b9160d51b81528183600683013760009101600601908152919050565b6001600160a01b03851681526000600385106200307257634e487b7160e01b600052602160045260246000fd5b846020830152608060408301526200308e6080830185620029cd565b828103606084015262002b5a8185620029cd565b600060208284031215620030b557600080fd5b815167ffffffffffffffff80821115620030ce57600080fd5b818401915084601f830112620030e357600080fd5b815181811115620030f857620030f862002a17565b6200310d601f8201601f191660200162002a59565b91508082528560208285010111156200312557600080fd5b62003138816020840160208601620029a7565b50949350505050565b6000835162003155818460208801620029a7565b8351908301906200316b818360208801620029a7565b01949350505050565b6001600160a01b038716815260ff86166020820152608060408201819052600090620031a4908301868862002f80565b8281036060840152620031b981858762002f80565b9998505050505050505050565b60008451620031da818460208901620029a7565b8201838582376000930192835250909392505050565b6060815260006200320660608301878962002f80565b82810360208401526200321b81868862002f80565b9150508260408301529695505050505050565b6000602082840312156200324157600080fd5b815162002a108162002a8d565b604081526000620032636040830185620029cd565b905060018060a01b03831660208301529392505050565b600060ff821660ff81036200329f57634e487b7160e01b600052601160045260246000fd5b60010192915050565b600081518084526020808501945080840160005b83811015620032e35781516001600160a01b031687529582019590820190600101620032bc565b509495945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009062002b5a90830184620032a8565b6000602082840312156200333d57600080fd5b5051919050565b600060018060a01b038087168352808616602084015260806040840152620033706080840186620032a8565b91508084166060840152509594505050505056fe60c060405234801561001057600080fd5b506040516109d83803806109d883398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a0516108f76100e16000396000818160560152818161012b015281816103c401526103e501526000818160c10152818160ff0152818161036b015261039501526108f76000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631054df8c146100515780638dc7d29c146100945780638f95895f146100a9578063f437bc59146100bc575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100a76100a236600461065e565b6100e3565b005b6100a76100b73660046106ed565b61033d565b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040805160008082526020820190925281906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169182916339255d5b917f00000000000000000000000000000000000000000000000000000000000000009182169063b4b333c690610167908c908c908c90604481016107be565b60408051601f19818403018152918152602080830180516001600160e01b031660e09590951b9490941790935280516000815292830190526101af93925090604481016107fc565b60408051601f198184030181529181526020820180516001600160e01b031660e09490941b9390931790925290516101e79250610832565b6000604051808303816000865af19150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b50915091508161024957805160000361024157600080fd5b805181602001fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061084e565b90508015610335576040516323b872dd60e01b8152306004820152336024820152604481018290526001600160a01b038716906323b872dd906064016020604051808303816000875af115801561030f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103339190610867565b505b505050505050565b8281811461035e5760405163277c943f60e21b815260040160405180910390fd5b60005b8181101561054d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166339255d5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b4b333c68c8c8c8981811061042557610425610890565b905060200201602081019061043a91906108a6565b8b8b8a81811061044c5761044c610890565b905060200201602081019061046191906108a6565b60408051600081526020810190915261048093929190604481016107be565b60408051601f19818403018152918152602080830180516001600160e01b031660e09590951b9490941790935280516000815292830190526104c893925090604481016107fc565b60408051601f198184030181529181526020820180516001600160e01b031660e09490941b9390931790925290516105009250610832565b6000604051808303816000865af19150503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b505050600101610361565b506040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b9919061084e565b90508015610333576040516323b872dd60e01b8152306004820152336024820152604481018290526001600160a01b038816906323b872dd906064016020604051808303816000875af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190610867565b5050505050505050565b80356001600160a01b038116811461065957600080fd5b919050565b60008060006060848603121561067357600080fd5b61067c84610642565b925061068a60208501610642565b915061069860408501610642565b90509250925092565b60008083601f8401126106b357600080fd5b50813567ffffffffffffffff8111156106cb57600080fd5b6020830191508360208260051b85010111156106e657600080fd5b9250929050565b60008060008060006060868803121561070557600080fd5b61070e86610642565b9450602086013567ffffffffffffffff8082111561072b57600080fd5b61073789838a016106a1565b9096509450604088013591508082111561075057600080fd5b5061075d888289016106a1565b969995985093965092949392505050565b60005b83811015610789578181015183820152602001610771565b50506000910152565b600081518084526107aa81602086016020860161076e565b601f01601f19169290920160200192915050565b6001600160a01b0385811682528481166020830152831660408201526080606082018190526000906107f290830184610792565b9695505050505050565b6001600160a01b038416815260606020820181905260009061082090830185610792565b82810360408401526107f28185610792565b6000825161084481846020870161076e565b9190910192915050565b60006020828403121561086057600080fd5b5051919050565b60006020828403121561087957600080fd5b8151801515811461088957600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156108b857600080fd5b6108898261064256fea2646970667358221220e1836e5c9fa13b3966ac61e25d26bee1bb330f374763e3a1d9c668b20d2ab5b464736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001833380380620018338339810160408190526200003491620002b5565b6001600160a01b038216608081905260c0829052604051635b69006f60e11b81527fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3600482015263b6d200de90602401602060405180830381865afa158015620000a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c89190620002e6565b6001600160a01b031660a0526040516329965a1d60e01b815230600482018190527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248301819052604483019190915290731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200015457600080fd5b505af115801562000169573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527fece6fc2bcfc93e4c34c28aeaa114be1a6161decb8268f79cbe7c3c7f31b1e8c660248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001e757600080fd5b505af1158015620001fc573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527fca6323f8f0faf3d4f41f2397ee46c8d85bed576d54aadeb20b6cf7b45b3a696460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b1580156200027a57600080fd5b505af11580156200028f573d6000803e3d6000fd5b505050505050506200030d565b6001600160a01b0381168114620002b257600080fd5b50565b60008060408385031215620002c957600080fd5b8251620002d6816200029c565b6020939093015192949293505050565b600060208284031215620002f957600080fd5b815162000306816200029c565b9392505050565b60805160a05160c05161148d620003a66000396000818161011d015281816102dd0152818161074201528181610792015261093501526000818161037e0152818161043f0152818161058f0152818161061e015281816107fa01528181610a5601528181610b170152610ce701526000818161041501528181610565015281816105f401528181610aed0152610cbd015261148d6000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c8063362910631161005b57806336291063146100d457806360dfa69514610118578063b8a140331461014d578063bf8903dd1461016057600080fd5b806223de291461008157806302f3c6c51461009657806316e23b9f146100a9575b600080fd5b61009461008f366004610fc0565b61019b565b005b6100946100a4366004611080565b610243565b6100bc6100b73660046110b9565b610735565b604051600b9190910b81526020015b60405180910390f35b6101006100e23660046110e5565b6001600160a01b039081166000908152602081905260409020541690565b6040516001600160a01b0390911681526020016100cb565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100cb565b6100bc61015b3660046110b9565b610785565b61017361016e3660046110e5565b6107b7565b604080516001600160a01b0390941684526020840192909252600b0b908201526060016100cb565b336000818152602081905260409020546001600160a01b038981169116146101f457600084156101d6576101d185870187611109565b6101e0565b6101e08288610735565b90506101ee828a898461089b565b50610238565b806001600160a01b03167fb9c1b85a7ee70d95c61aca7cda03ef957abc5265a191ca74cc335faf594095668760405161022f91815260200190565b60405180910390a25b505050505050505050565b6001600160a01b03808316600090815260208190526040902054163381146102ab5760405162461bcd60e51b81526020600482015260166024820152751513d1d04e881bdb9b1e48141250c8185b1b1bddd95960521b60448201526064015b60405180910390fd5b600082600b0b12156102cf5760405162461bcd60e51b81526004016102a290611126565b6102d883610e28565b6103067f0000000000000000000000000000000000000000000000000000000000000000600b85900b61117f565b111561034e5760405162461bcd60e51b81526020600482015260176024820152760a89e8e827440caf0d2e8a4c2e8ca40e8dede40d0d2ced604b1b60448201526064016102a2565b604051631cd43d1160e31b81526001600160a01b03848116600483015230602483015282811660448301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e6a1e88890606401608060405180830381865afa1580156103c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103eb9190611196565b5050915050600081600b0b1380156104065750600083600b0b135b15610540576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116906339255d5b907f00000000000000000000000000000000000000000000000000000000000000009081166350209a6288878960005b6040519080825280601f01601f191660200182016040528015610496576020820181803683370190505b506040516024016104aa949392919061123a565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b03191682526104f39392509060040161127a565b6000604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261053a91908101906112c1565b506106ed565b80600b0b60001480156105565750600083600b0b135b156105c0576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116906339255d5b907f00000000000000000000000000000000000000000000000000000000000000009081166362fc305e888789600061046c565b600081600b0b1380156105d6575082600b0b6000145b156106ed576040805160008152602081019091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916339255d5b917f0000000000000000000000000000000000000000000000000000000000000000919082169063b4b333c69061065b908a9030908a906044810161136e565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b03191682526106a49392509060040161127a565b6000604051808303816000875af11580156106c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106eb91908101906112c1565b505b604051600b84900b81526001600160a01b038516907f0988aefa675e81e1db7fca08264db5dc2a1cc2a604f2a78d902a9747146a56719060200160405180910390a250505050565b600061077c6107776107687f0000000000000000000000000000000000000000000000000000000000000000600461117f565b61077290856113a2565b610ec9565b610f37565b90505b92915050565b600061077c6107776107727f0000000000000000000000000000000000000000000000000000000000000000856113a2565b6001600160a01b03818116600081815260208190526040808220549051631cd43d1160e31b815260048101939093523060248401528316604483015291829182917f0000000000000000000000000000000000000000000000000000000000000000169063e6a1e88890606401608060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611196565b50506001600160a01b0380871660009081526020819052604090205491935016905061089085610e28565b925092509193909250565b6001600160a01b038416600090815260208190526040902054600160a01b900460ff161561090b5760405162461bcd60e51b815260206004820152601c60248201527f544f47413a207265656e7472616e6379206e6f7420616c6c6f7765640000000060448201526064016102a2565b600081600b0b121561092f5760405162461bcd60e51b81526004016102a290611126565b8161095e7f0000000000000000000000000000000000000000000000000000000000000000600b84900b61117f565b11156109a65760405162461bcd60e51b81526020600482015260176024820152760a89e8e827440caf0d2e8a4c2e8ca40e8dede40d0d2ced604b1b60448201526064016102a2565b6000826109b286610e28565b6109bc91906113c4565b9050808311610a015760405162461bcd60e51b8152602060048201526011602482015270544f47413a2062696420746f6f206c6f7760781b60448201526064016102a2565b6001600160a01b038581166000818152602081905260408082208054600160a01b60ff60a01b198216179091559051631cd43d1160e31b815260048101939093523060248401528316604483018190529290917f00000000000000000000000000000000000000000000000000000000000000009091169063e6a1e88890606401608060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611196565b5050915050600081600b0b1315610be6576040805160008152602081019091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916339255d5b917f0000000000000000000000000000000000000000000000000000000000000000919082169063b4b333c690610b54908d9030908a906044810161136e565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b0319168252610b9d9392509060040161127a565b6000604051808303816000875af1158015610bbc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be491908101906112c1565b505b6001600160a01b03821615610c6a5760405163a9059cbb60e01b81526001600160a01b0383811660048301526024820185905288169063a9059cbb906044016020604051808303816000875af1158015610c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6891906113d7565b505b6001600160a01b03878116600090815260208190526040812080546001600160a01b03191692891692909217909155600b85900b1315610db6576040805160008152602081019091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916339255d5b917f000000000000000000000000000000000000000000000000000000000000000091908216906362fc305e90610d24908d908d908c906044810161123a565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b0319168252610d6d9392509060040161127a565b6000604051808303816000875af1158015610d8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610db491908101906112c1565b505b6001600160a01b0387811660008181526020818152604091829020805460ff60a01b191690558151938a1684528301889052600b87900b90830152907f836808e57755d5535898b7203c7d68b1bfb2701b1943ecb133c675e0d00780159060600160405180910390a250505050505050565b604051632ec8eec760e01b8152306004820152600090819081906001600160a01b03851690632ec8eec790602401608060405180830381865afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9791906113f9565b50509150915060008183610eab919061142f565b13610eb7576000610ec1565b610ec1818361142f565b949350505050565b60006001600160ff1b03821115610f335760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016102a2565b5090565b60006b7fffffffffffffffffffffff8212610f33576b7fffffffffffffffffffffff92915050565b6001600160a01b0381168114610f7457600080fd5b50565b60008083601f840112610f8957600080fd5b50813567ffffffffffffffff811115610fa157600080fd5b602083019150836020828501011115610fb957600080fd5b9250929050565b60008060008060008060008060c0898b031215610fdc57600080fd5b8835610fe781610f5f565b97506020890135610ff781610f5f565b9650604089013561100781610f5f565b955060608901359450608089013567ffffffffffffffff8082111561102b57600080fd5b6110378c838d01610f77565b909650945060a08b013591508082111561105057600080fd5b5061105d8b828c01610f77565b999c989b5096995094979396929594505050565b80600b0b8114610f7457600080fd5b6000806040838503121561109357600080fd5b823561109e81610f5f565b915060208301356110ae81611071565b809150509250929050565b600080604083850312156110cc57600080fd5b82356110d781610f5f565b946020939093013593505050565b6000602082840312156110f757600080fd5b813561110281610f5f565b9392505050565b60006020828403121561111b57600080fd5b813561110281611071565b60208082526023908201527f544f47413a206e65676174697665206578697452617465206e6f7420616c6c6f6040820152621dd95960ea1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761077f5761077f611169565b600080600080608085870312156111ac57600080fd5b8451935060208501516111be81611071565b6040860151606090960151949790965092505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156112055781810151838201526020016111ed565b50506000910152565b600081518084526112268160208601602086016111ea565b601f01601f19169290920160200192915050565b6001600160a01b03858116825284166020820152600b83900b60408201526080606082018190526000906112709083018461120e565b9695505050505050565b6001600160a01b038316815260606020820181905260009061129e9083018461120e565b8281036040938401526002815261060f60f31b6020820152919091019392505050565b6000602082840312156112d357600080fd5b815167ffffffffffffffff808211156112eb57600080fd5b818401915084601f8301126112ff57600080fd5b815181811115611311576113116111d4565b604051601f8201601f19908116603f01168101908382118183101715611339576113396111d4565b8160405282815287602084870101111561135257600080fd5b6113638360208301602088016111ea565b979650505050505050565b6001600160a01b0385811682528481166020830152831660408201526080606082018190526000906112709083018461120e565b6000826113bf57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561077f5761077f611169565b6000602082840312156113e957600080fd5b8151801515811461110257600080fd5b6000806000806080858703121561140f57600080fd5b505082516020840151604085015160609095015191969095509092509050565b808201828112600083128015821682158216171561144f5761144f611169565b50509291505056fea2646970667358221220e570cb188b4158d7eef89a1a4474bdc8be27d06148c58542457eebb685ef604164736f6c63430008130033a2646970667358221220c7d10b2bc663af03a0249a8eca5f61de4cc75fc4ca9cc2dfdb90fadd2529d29864736f6c63430008130033";
533
+ const _bytecode = "0x6000608081905260a060408190526200001a9190816200002f565b503480156200002857600080fd5b50620000b0565b82805482825590600052602060002090810192821562000087579160200282015b828111156200008757825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000050565b506200009592915062000099565b5090565b5b808211156200009557600081556001016200009a565b6155c580620000c06000396000f3fe60806040523480156200001157600080fd5b5060043610620001695760003560e01c806376f30be811620000d3578063b3083cf81162000086578063b3083cf81462000225578063c8c25ad51462000310578063cbcd74491462000320578063dfa98ad51462000337578063f2fde38b146200046c578063fa0215fc146200048357600080fd5b806376f30be8146200028c5780637dc2dc121462000296578063888a37b114620002ce57806393786bf014620002d9578063acbeaa0714620002e2578063ad6eb49914620002f957600080fd5b80633df285fe116200012c5780633df285fe14620001db5780634d59c136146200021b578063520994701462000225578063547047c7146200023f57806362a32e1e14620002495780637296cb5a146200027557600080fd5b806305bfa3e0146200016e57806306e83586146200018b5780631903410d14620001975780632a49664814620001c757806338bc37a414620001d1575b600080fd5b6200017861070881565b6040519081526020015b60405180910390f35b620001956200049a565b005b620001ae620001a83660046200298d565b620004a6565b6040516001600160a01b03909116815260200162000182565b62000195620004d1565b62000195620004db565b6200020c6040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b81525081565b604051620001829190620029fb565b6200017861384081565b6200022e600081565b604051901515815260200162000182565b62000195620004fe565b6200020c6040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b81525081565b620001956200028636600462002b65565b6200051c565b6200019562000527565b620002ad620002a736600462002c92565b620005c8565b604080516001600160a01b0393841681529290911660208301520162000182565b6200017862093a8081565b620001ae604581565b62000195620002f336600462002d24565b62000918565b620001956200030a36600462002b65565b62000923565b6040516008815260200162000182565b620001ae6200033136600462002d42565b6200092e565b6200045d604080516101608101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810182905260e08101829052610100810182905261012081018290526101408101919091525060408051610160810182526001546001600160a01b03610100918290048116835260025481166020808501829052600354831685870181905286518088018852838152808301919091526060860152600554831660808601819052865180880190975291865285015260a0830193909352600c54831660c0830152600e54831660e0830152600f54831690820152601054821661012082015260115490911661014082015290565b60405162000182919062002db5565b620001956200047d36600462002ee5565b62000b3e565b620001ae6200049436600462002f05565b62000ba8565b620004a462000e25565b565b60008181548110620004b757600080fd5b6000918252602090912001546001600160a01b0316905081565b620004a462000e63565b620004e562002927565b6001815260006020820152620004fb8162000eab565b50565b6200050862002927565b62093a8060c0820152620004fb8162000eca565b620004fb8162000eca565b6040805160e08101825260008082526020808301829052815484518183028101830186528181529294840192918591908301828280156200059257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000573575b5050509183525050604560208201526138406040820152610708606082015262093a806080909101529050620004fb8162000fbf565b600c5460009081906001600160a01b0316620005f757604051635006ee6d60e11b815260040160405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad243b6200062a57604051622b682760e71b815260040160405180910390fd5b6040516302a510b960e61b815273__$e670fb80a00d783cff26adce1c19b32070$__9063a9442e40906200066d908b908b908b908b908b908b9060040162002fa9565b602060405180830381865af41580156200068b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006b1919062002fed565b915060008686604051602001620006ca9291906200300d565b60408051601f1981840301815290829052600c549092506001600160a01b03169063431f148190859060019062000708908c908c9060200162003023565b604051602081830303815290604052856040518563ffffffff1660e01b815260040162000739949392919062003045565b6020604051808303816000875af115801562000759573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077f919062002fed565b915060006040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b815250846001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008119190810190620030a2565b6040516020016200082492919062003141565b6040516020818303038152906040529050620008436001828662001043565b60006040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b815250846001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620008ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008d89190810190620030a2565b604051602001620008eb92919062003141565b60405160208183030381529060405290506200090a6001828662001043565b505050965096945050505050565b620004fb81620010e2565b620004fb8162000eab565b600c546000906001600160a01b03166200095b57604051635006ee6d60e11b815260040160405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad243b6200098e57604051622b682760e71b815260040160405180910390fd5b600073__$e670fb80a00d783cff26adce1c19b32070$__63f7c3bdc96040518163ffffffff1660e01b8152600401602060405180830381865af4158015620009da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a00919062002fed565b600c54604051633504b4d160e21b81526001600160a01b03808416600483015292945084935091169063d412d34490602401600060405180830381600087803b15801562000a4d57600080fd5b505af115801562000a62573d6000803e3d6000fd5b50506040516285fc1360e71b81526001600160a01b03851692506342fe0980915062000a9f906000906012908b908b908b908b9060040162003174565b600060405180830381600087803b15801562000aba57600080fd5b505af115801562000acf573d6000803e3d6000fd5b5050505060006040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b815250858560405160200162000b1593929190620031c6565b604051602081830303815290604052905062000b346001828562001043565b5050949350505050565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301526101009092049091169063f2fde38b90602401600060405180830381600087803b15801562000b8c57600080fd5b505af115801562000ba1573d6000803e3d6000fd5b5050505050565b600c546000906001600160a01b031662000bd557604051635006ee6d60e11b815260040160405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad243b62000c0857604051622b682760e71b815260040160405180910390fd5b600073__$e670fb80a00d783cff26adce1c19b32070$__631f2d18966040518163ffffffff1660e01b8152600401602060405180830381865af415801562000c54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7a919062002fed565b600c54604051633504b4d160e21b81526001600160a01b03808416600483015292935091169063d412d34490602401600060405180830381600087803b15801562000cc457600080fd5b505af115801562000cd9573d6000803e3d6000fd5b505060405163588ca48760e11b81526001600160a01b038416925063b119490e915062000d13908a908a908a908a908a90600401620031f0565b600060405180830381600087803b15801562000d2e57600080fd5b505af115801562000d43573d6000803e3d6000fd5b5050505080915062000da660016040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b815250878760405160200162000d9093929190620031c6565b6040516020818303038152906040528462001043565b60405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801562000df4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e1a91906200322e565b505095945050505050565b6002546001600160a01b031662000e4f57604051633b8034db60e11b815260040160405180910390fd5b62000e59620012ba565b620004a46200135f565b6002546001600160a01b031662000e8d5760405163bb57a2c760e01b815260040160405180910390fd5b62000e9762001404565b62000ea16200190e565b620004a4620019ca565b62000eb63062001a91565b620004fb8160000151826020015162001b93565b6002546001600160a01b031662000ef45760405163608e9db560e01b815260040160405180910390fd5b62000eff3062001c37565b62000f0962001cd9565b600e54604051637048027560e01b81523360048201526001600160a01b0390911690637048027590602401600060405180830381600087803b15801562000f4f57600080fd5b505af115801562000f64573d6000803e3d6000fd5b5050505062000f7262001d7e565b62000f7c62001e23565b62000f8b8160c0015162001ec6565b6003546001600160a01b031662000fb5576040516302a9c2c560e61b815260040160405180910390fd5b620004fb62001f05565b62000fca8162000eab565b62000fd462001f80565b62000ff2816060015182608001518360a00151846040015162001feb565b62000ffc62000e25565b6200100662002068565b6200101062000e63565b6200101a62002348565b620010258162000eca565b6200102f62002496565b62001039620024e2565b620004fb6200252e565b600e546001600160a01b03166200106d5760405163521c4a7d60e01b815260040160405180910390fd5b8215620010dd57600e5460405163a815ff1560e01b81526001600160a01b039091169063a815ff1590620010a890859085906004016200324e565b600060405180830381600087803b158015620010c357600080fd5b505af1158015620010d8573d6000803e3d6000fd5b505050505b505050565b60015460ff828116911614620011305760405162461bcd60e51b815260206004820152600e60248201526d0496e636f727265637420737465760941b60448201526064015b60405180910390fd5b8060ff166000036200114d57620011473062001a91565b62001289565b8060ff1660010362001167576200114760016000620027c4565b8060ff166002036200117d57620011476200284d565b8060ff166003036200119d576200119362002861565b6200114762002875565b600460ff82161462001289578060ff16600503620011bf576200114762001404565b8060ff16600603620011d5576200114762002889565b8060ff166007036200125157620011ec306200289d565b600e54604051637048027560e01b81523360048201526001600160a01b0390911690637048027590602401600060405180830381600087803b1580156200123257600080fd5b505af115801562001247573d6000803e3d6000fd5b5050505062001289565b60405162461bcd60e51b815260206004820152600c60248201526b0496e76616c696420737465760a41b604482015260640162001127565b6001805460ff169060006200129e836200327a565b91906101000a81548160ff021916908360ff1602179055505050565b600254604051630dbabbff60e11b81526001600160a01b03909116600482015273__$a470d8d3eff4182c9809d6de570cdeeec8$__90631b7577fe90602401602060405180830381865af415801562001317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133d919062002fed565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051630cce0ce360e31b81526001600160a01b03909116600482015273__$0e33a7228bbdb017aebe2f2bed0910defa$__90636670671890602401602060405180830381865af4158015620013bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e2919062002fed565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600073__$587c1447ad460e9b007894b8b359c425ea$__63c465e06c6040518163ffffffff1660e01b8152600401602060405180830381865af415801562001450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001476919062002fed565b9050600073__$587c1447ad460e9b007894b8b359c425ea$__63c465e06c6040518163ffffffff1660e01b8152600401602060405180830381865af4158015620014c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ea919062002fed565b600254604051635e1673bb60e11b81526001600160a01b039182166004820152908216602482015290915073__$342a172af7bf09406042436203b53e0416$__9063bc2ce77690604401602060405180830381865af415801562001552573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001578919062002fed565b600780546001600160a01b0319166001600160a01b039290921691821790556040805163132075a760e31b81529051639903ad389160048082019260009290919082900301818387803b158015620015cf57600080fd5b505af1158015620015e4573d6000803e3d6000fd5b50506002546040516326c043d360e11b81526001600160a01b039182166004820152908516602482015273__$342a172af7bf09406042436203b53e0416$__9250634d8087a69150604401602060405180830381865af41580156200164d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001673919062002fed565b600880546001600160a01b0319166001600160a01b039290921691821790556040805163132075a760e31b81529051639903ad389160048082019260009290919082900301818387803b158015620016ca57600080fd5b505af1158015620016df573d6000803e3d6000fd5b5050600754604051634a0687ef60e01b81526001600160a01b0391821660048201529085169250634a0687ef9150602401600060405180830381600087803b1580156200172b57600080fd5b505af115801562001740573d6000803e3d6000fd5b5050600854604051634a0687ef60e01b81526001600160a01b0391821660048201529084169250634a0687ef9150602401600060405180830381600087803b1580156200178c57600080fd5b505af1158015620017a1573d6000803e3d6000fd5b50506040805163266c45bb60e11b81526004810191909152601460448201527310dbdb9cdd185b9d0813dd5d199b1bddc813919560621b606482015260806024820152600360848201526221a7a360e91b60a48201526001600160a01b0385169250634cd88b76915060c401600060405180830381600087803b1580156200182857600080fd5b505af11580156200183d573d6000803e3d6000fd5b50506040805163266c45bb60e11b81526004810191909152601360448201527210dbdb9cdd185b9d08125b999b1bddc8139195606a1b606482015260806024820152600360848201526221a4a360e91b60a48201526001600160a01b0384169250634cd88b76915060c401600060405180830381600087803b158015620018c357600080fd5b505af1158015620018d8573d6000803e3d6000fd5b5050600980546001600160a01b039586166001600160a01b031991821617909155600a8054949095169316929092179092555050565b600254600954600a54604051630e07777960e31b81526001600160a01b039384166004820152918316602483015291909116604482015273__$bd96dfe50c329cee8e313709d3c94b8122$__9063703bbbc890606401602060405180830381865af415801562001982573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019a8919062002fed565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600254600b54600754600854604051630243059d60e01b81526001600160a01b0394851660048201529284166024840152908316604483015291909116606482015273__$859a28afbbc8e5bf0b546dc5c4495c32e6$__90630243059d90608401602060405180830381865af415801562001a49573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6f919062002fed565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b73__$02c95dd9d7be6f60f760f29aee4bb17ffc$__63c3acf1b36040518163ffffffff1660e01b8152600401602060405180830381865af415801562001adb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b01919062002fed565b60018054610100600160a81b0319166101006001600160a01b0393841681029190911791829055604051633f5b172b60e11b8152910482166004820152908216602482015273__$02c95dd9d7be6f60f760f29aee4bb17ffc$__90637eb62e569060440160006040518083038186803b15801562001b7e57600080fd5b505af415801562000ba1573d6000803e3d6000fd5b604051638a25422160e01b81528215156004820152811515602482015273__$ad779358bf46e2140b9444ea344feed6e1$__90638a25422190604401602060405180830381865af415801562001bed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c13919062002fed565b600280546001600160a01b0319166001600160a01b03929092169190911790555050565b604051632f0f279d60e01b81526001600160a01b038216600482015273__$859a28afbbc8e5bf0b546dc5c4495c32e6$__90632f0f279d90602401602060405180830381865af415801562001c90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb6919062002fed565b600e80546001600160a01b0319166001600160a01b039290921691909117905550565b600e54604051630b5bd8c560e01b81526001600160a01b03909116600482015273__$51a374af64471c67800fb4db73e0bb3f61$__90630b5bd8c590602401602060405180830381865af415801562001d36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d5c919062002fed565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60025460405163269c683160e11b81526001600160a01b03909116600482015273__$62fc974fc919b81fb994c71922b697bf1a$__90634d38d06290602401602060405180830381865af415801562001ddb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e01919062002fed565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051623b2bcd60e01b81526001600160a01b03909116600482015273__$a8b7c5720cdda94a7f5cdf662a74179e74$__90623b2bcd90602401602060405180830381865af415801562001e7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ea4919062002fed565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b731820a4b7618bde71dce8cdc73aab6c95905fad243b62001efa57604051630c9b12e760e01b815260040160405180910390fd5b620004fb81620028b2565b6002546003546040516001600160a01b03928316929091169062001f299062002971565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562001f5d573d6000803e3d6000fd5b50601280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460015460405163189acdbd60e31b81526001600160a01b036101009092048216600482015291169063c4d66de8906024015b600060405180830381600087803b15801562001fd057600080fd5b505af115801562001fe5573d6000803e3d6000fd5b50505050565b600154600254604051630b520f0360e31b81526001600160a01b03610100909304831692635a907818926200202e929116908890889088908890600401620032ee565b600060405180830381600087803b1580156200204957600080fd5b505af11580156200205e573d6000803e3d6000fd5b5050505050505050565b6001546002546004805460405163cadf8f8560e01b81526001600160a01b039384169281019290925282166024820152610100909204169063cadf8f8590604401600060405180830381600087803b158015620020c457600080fd5b505af1158015620020d9573d6000803e3d6000fd5b50506002546004805460408051633b982ccf60e11b815290516001600160a01b03948516965063b6d200de95509390911692637730599e928281019260209291908290030181865afa15801562002134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200215a91906200332a565b6040518263ffffffff1660e01b81526004016200217991815260200190565b602060405180830381865afa15801562002197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021bd919062002fed565b600380546001600160a01b0319166001600160a01b0392831617905560015460025460065460405163cadf8f8560e01b81529184166004830152831660248201526101009091049091169063cadf8f8590604401600060405180830381600087803b1580156200222c57600080fd5b505af115801562002241573d6000803e3d6000fd5b505060025460065460408051633b982ccf60e11b815290516001600160a01b03938416955063b6d200de94509190921691637730599e9160048083019260209291908290030181865afa1580156200229d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c391906200332a565b6040518263ffffffff1660e01b8152600401620022e291815260200190565b602060405180830381865afa15801562002300573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002326919062002fed565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001546002546001600160a01b0361010090920482169163427942a4911660008060405190808252806020026020018201604052801562002393578160200160208202803683370190505b50600d546040516001600160e01b031960e087901b168152620023c6949392916001600160a01b03169060040162003344565b600060405180830381600087803b158015620023e157600080fd5b505af1158015620023f6573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663731aed6e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200244e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002474919062002fed565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001546002546010546040516355c2378d60e11b81526001600160a01b039283166004820152600060248201529082166044820152610100909204169063ab846f1a9060640162001fb5565b6001546002546011546040516355c2378d60e11b81526001600160a01b039283166004820152600060248201529082166044820152610100909204169063ab846f1a9060640162001fb5565b600e546001546040805163a815ff1560e01b81526004810191909152601360448201527215195cdd11dbdd995c9b985b98d94b9d195cdd606a1b60648201526001600160a01b036101009092048216602482015291169063a815ff1590608401600060405180830381600087803b158015620025a957600080fd5b505af1158015620025be573d6000803e3d6000fd5b5050600e546002546040805163a815ff1560e01b81526004810191909152600f60448201526e14dd5c195c999b1d5a590b9d195cdd608a1b60648201526001600160a01b0391821660248201529116925063a815ff159150608401600060405180830381600087803b1580156200263457600080fd5b505af115801562002649573d6000803e3d6000fd5b5050600e54600f546040805163a815ff1560e01b8152600481019190915260136044820152725375706572666c7569644c6f616465722d763160681b60648201526001600160a01b0391821660248201529116925063a815ff159150608401600060405180830381600087803b158015620026c357600080fd5b505af1158015620026d8573d6000803e3d6000fd5b5050600e80546010546040805163a815ff1560e01b8152600481019190915260448101939093526d21a320bb18a337b93bb0b93232b960911b60648401526001600160a01b03908116602484015216925063a815ff159150608401600060405180830381600087803b1580156200274e57600080fd5b505af115801562002763573d6000803e3d6000fd5b5050600e80546011546040805163a815ff1560e01b8152600481019190915260448101939093526d24a220bb18a337b93bb0b93232b960911b60648401526001600160a01b03908116602484015216925063a815ff15915060840162001fb5565b620027d0828262001b93565b620027da62001f80565b62002849604561384061070860008054806020026020016040519081016040528092919081815260200182805480156200283e57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200281f575b505050505062001feb565b5050565b6200285762000e4f565b620004a462002068565b6200286b62001d7e565b620004a462002496565b6200287f62001e23565b620004a4620024e2565b6200289362000e97565b620004a462002348565b620028a88162001c37565b6200103962001cd9565b6002546040516001600160a01b03909116908290620028d1906200297f565b6001600160a01b0390921682526020820152604001604051809103906000f08015801562002903573d6000803e3d6000fd5b50601380546001600160a01b0319166001600160a01b039290921691909117905550565b6040518060e001604052806000151581526020016000151581526020016060815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b6109d8806200338583390190565b6118338062003d5d83390190565b600060208284031215620029a057600080fd5b5035919050565b60005b83811015620029c4578181015183820152602001620029aa565b50506000910152565b60008151808452620029e7816020860160208601620029a7565b601f01601f19169290920160200192915050565b60208152600062002a106020830184620029cd565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171562002a535762002a5362002a17565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002a855762002a8562002a17565b604052919050565b8015158114620004fb57600080fd5b803562002aa98162002a8d565b919050565b6001600160a01b0381168114620004fb57600080fd5b803562002aa98162002aae565b600082601f83011262002ae357600080fd5b8135602067ffffffffffffffff82111562002b025762002b0262002a17565b8160051b62002b1382820162002a59565b928352848101820192828101908785111562002b2e57600080fd5b83870192505b8483101562002b5a57823562002b4a8162002aae565b8252918301919083019062002b34565b979650505050505050565b60006020828403121562002b7857600080fd5b813567ffffffffffffffff8082111562002b9157600080fd5b9083019060e0828603121562002ba657600080fd5b62002bb062002a2d565b62002bbb8362002a9c565b815262002bcb6020840162002a9c565b602082015260408301358281111562002be357600080fd5b62002bf18782860162002ad1565b60408301525062002c056060840162002ac4565b60608201526080830135608082015260a083013560a082015260c083013560c082015280935050505092915050565b60008083601f84011262002c4757600080fd5b50813567ffffffffffffffff81111562002c6057600080fd5b60208301915083602082850101111562002c7957600080fd5b9250929050565b803560ff8116811462002aa957600080fd5b6000806000806000806080878903121562002cac57600080fd5b863567ffffffffffffffff8082111562002cc557600080fd5b62002cd38a838b0162002c34565b9098509650602089013591508082111562002ced57600080fd5b5062002cfc89828a0162002c34565b909550935062002d1190506040880162002c80565b9150606087013590509295509295509295565b60006020828403121562002d3757600080fd5b62002a108262002c80565b6000806000806040858703121562002d5957600080fd5b843567ffffffffffffffff8082111562002d7257600080fd5b62002d808883890162002c34565b9096509450602087013591508082111562002d9a57600080fd5b5062002da98782880162002c34565b95989497509550505050565b81516001600160a01b031681526101a08101602083015162002de260208401826001600160a01b03169052565b50604083015162002dfe60408401826001600160a01b03169052565b50606083015162002e28606084018280516001600160a01b03908116835260209182015116910152565b5060808301516001600160a01b03811660a08401525060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c083015161010062002e7e818501836001600160a01b03169052565b60e0850151915061012062002e9d818601846001600160a01b03169052565b9085015191506101409062002ebc858301846001600160a01b03169052565b8501516001600160a01b0390811661016086015294015190931661018090920191909152919050565b60006020828403121562002ef857600080fd5b813562002a108162002aae565b60008060008060006060868803121562002f1e57600080fd5b853567ffffffffffffffff8082111562002f3757600080fd5b62002f4589838a0162002c34565b9097509550602088013591508082111562002f5f57600080fd5b5062002f6e8882890162002c34565b96999598509660400135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600062002fbf60808301888a62002f80565b828103602084015262002fd481878962002f80565b60ff959095166040840152505060600152949350505050565b6000602082840312156200300057600080fd5b815162002a108162002aae565b81838237600f60fb1b9101908152600101919050565b65029bab832b9160d51b81528183600683013760009101600601908152919050565b6001600160a01b03851681526000600385106200307257634e487b7160e01b600052602160045260246000fd5b846020830152608060408301526200308e6080830185620029cd565b828103606084015262002b5a8185620029cd565b600060208284031215620030b557600080fd5b815167ffffffffffffffff80821115620030ce57600080fd5b818401915084601f830112620030e357600080fd5b815181811115620030f857620030f862002a17565b6200310d601f8201601f191660200162002a59565b91508082528560208285010111156200312557600080fd5b62003138816020840160208601620029a7565b50949350505050565b6000835162003155818460208801620029a7565b8351908301906200316b818360208801620029a7565b01949350505050565b6001600160a01b038716815260ff86166020820152608060408201819052600090620031a4908301868862002f80565b8281036060840152620031b981858762002f80565b9998505050505050505050565b60008451620031da818460208901620029a7565b8201838582376000930192835250909392505050565b6060815260006200320660608301878962002f80565b82810360208401526200321b81868862002f80565b9150508260408301529695505050505050565b6000602082840312156200324157600080fd5b815162002a108162002a8d565b604081526000620032636040830185620029cd565b905060018060a01b03831660208301529392505050565b600060ff821660ff81036200329f57634e487b7160e01b600052601160045260246000fd5b60010192915050565b600081518084526020808501945080840160005b83811015620032e35781516001600160a01b031687529582019590820190600101620032bc565b509495945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009062002b5a90830184620032a8565b6000602082840312156200333d57600080fd5b5051919050565b600060018060a01b038087168352808616602084015260806040840152620033706080840186620032a8565b91508084166060840152509594505050505056fe60c060405234801561001057600080fd5b506040516109d83803806109d883398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a0516108f76100e16000396000818160560152818161012b015281816103c401526103e501526000818160c10152818160ff0152818161036b015261039501526108f76000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631054df8c146100515780638dc7d29c146100945780638f95895f146100a9578063f437bc59146100bc575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100a76100a236600461065e565b6100e3565b005b6100a76100b73660046106ed565b61033d565b6100787f000000000000000000000000000000000000000000000000000000000000000081565b6040805160008082526020820190925281906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169182916339255d5b917f00000000000000000000000000000000000000000000000000000000000000009182169063b4b333c690610167908c908c908c90604481016107be565b60408051601f19818403018152918152602080830180516001600160e01b031660e09590951b9490941790935280516000815292830190526101af93925090604481016107fc565b60408051601f198184030181529181526020820180516001600160e01b031660e09490941b9390931790925290516101e79250610832565b6000604051808303816000865af19150503d8060008114610224576040519150601f19603f3d011682016040523d82523d6000602084013e610229565b606091505b50915091508161024957805160000361024157600080fd5b805181602001fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061084e565b90508015610335576040516323b872dd60e01b8152306004820152336024820152604481018290526001600160a01b038716906323b872dd906064016020604051808303816000875af115801561030f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103339190610867565b505b505050505050565b8281811461035e5760405163277c943f60e21b815260040160405180910390fd5b60005b8181101561054d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166339255d5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b4b333c68c8c8c8981811061042557610425610890565b905060200201602081019061043a91906108a6565b8b8b8a81811061044c5761044c610890565b905060200201602081019061046191906108a6565b60408051600081526020810190915261048093929190604481016107be565b60408051601f19818403018152918152602080830180516001600160e01b031660e09590951b9490941790935280516000815292830190526104c893925090604481016107fc565b60408051601f198184030181529181526020820180516001600160e01b031660e09490941b9390931790925290516105009250610832565b6000604051808303816000865af19150503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b505050600101610361565b506040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b9919061084e565b90508015610333576040516323b872dd60e01b8152306004820152336024820152604481018290526001600160a01b038816906323b872dd906064016020604051808303816000875af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190610867565b5050505050505050565b80356001600160a01b038116811461065957600080fd5b919050565b60008060006060848603121561067357600080fd5b61067c84610642565b925061068a60208501610642565b915061069860408501610642565b90509250925092565b60008083601f8401126106b357600080fd5b50813567ffffffffffffffff8111156106cb57600080fd5b6020830191508360208260051b85010111156106e657600080fd5b9250929050565b60008060008060006060868803121561070557600080fd5b61070e86610642565b9450602086013567ffffffffffffffff8082111561072b57600080fd5b61073789838a016106a1565b9096509450604088013591508082111561075057600080fd5b5061075d888289016106a1565b969995985093965092949392505050565b60005b83811015610789578181015183820152602001610771565b50506000910152565b600081518084526107aa81602086016020860161076e565b601f01601f19169290920160200192915050565b6001600160a01b0385811682528481166020830152831660408201526080606082018190526000906107f290830184610792565b9695505050505050565b6001600160a01b038416815260606020820181905260009061082090830185610792565b82810360408401526107f28185610792565b6000825161084481846020870161076e565b9190910192915050565b60006020828403121561086057600080fd5b5051919050565b60006020828403121561087957600080fd5b8151801515811461088957600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156108b857600080fd5b6108898261064256fea2646970667358221220e1836e5c9fa13b3966ac61e25d26bee1bb330f374763e3a1d9c668b20d2ab5b464736f6c6343000813003360e06040523480156200001157600080fd5b5060405162001833380380620018338339810160408190526200003491620002b5565b6001600160a01b038216608081905260c0829052604051635b69006f60e11b81527fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3600482015263b6d200de90602401602060405180830381865afa158015620000a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c89190620002e6565b6001600160a01b031660a0526040516329965a1d60e01b815230600482018190527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248301819052604483019190915290731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200015457600080fd5b505af115801562000169573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527fece6fc2bcfc93e4c34c28aeaa114be1a6161decb8268f79cbe7c3c7f31b1e8c660248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001e757600080fd5b505af1158015620001fc573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527fca6323f8f0faf3d4f41f2397ee46c8d85bed576d54aadeb20b6cf7b45b3a696460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b1580156200027a57600080fd5b505af11580156200028f573d6000803e3d6000fd5b505050505050506200030d565b6001600160a01b0381168114620002b257600080fd5b50565b60008060408385031215620002c957600080fd5b8251620002d6816200029c565b6020939093015192949293505050565b600060208284031215620002f957600080fd5b815162000306816200029c565b9392505050565b60805160a05160c05161148d620003a66000396000818161011d015281816102dd0152818161074201528181610792015261093501526000818161037e0152818161043f0152818161058f0152818161061e015281816107fa01528181610a5601528181610b170152610ce701526000818161041501528181610565015281816105f401528181610aed0152610cbd015261148d6000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c8063362910631161005b57806336291063146100d457806360dfa69514610118578063b8a140331461014d578063bf8903dd1461016057600080fd5b806223de291461008157806302f3c6c51461009657806316e23b9f146100a9575b600080fd5b61009461008f366004610fc0565b61019b565b005b6100946100a4366004611080565b610243565b6100bc6100b73660046110b9565b610735565b604051600b9190910b81526020015b60405180910390f35b6101006100e23660046110e5565b6001600160a01b039081166000908152602081905260409020541690565b6040516001600160a01b0390911681526020016100cb565b61013f7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100cb565b6100bc61015b3660046110b9565b610785565b61017361016e3660046110e5565b6107b7565b604080516001600160a01b0390941684526020840192909252600b0b908201526060016100cb565b336000818152602081905260409020546001600160a01b038981169116146101f457600084156101d6576101d185870187611109565b6101e0565b6101e08288610735565b90506101ee828a898461089b565b50610238565b806001600160a01b03167fb9c1b85a7ee70d95c61aca7cda03ef957abc5265a191ca74cc335faf594095668760405161022f91815260200190565b60405180910390a25b505050505050505050565b6001600160a01b03808316600090815260208190526040902054163381146102ab5760405162461bcd60e51b81526020600482015260166024820152751513d1d04e881bdb9b1e48141250c8185b1b1bddd95960521b60448201526064015b60405180910390fd5b600082600b0b12156102cf5760405162461bcd60e51b81526004016102a290611126565b6102d883610e28565b6103067f0000000000000000000000000000000000000000000000000000000000000000600b85900b61117f565b111561034e5760405162461bcd60e51b81526020600482015260176024820152760a89e8e827440caf0d2e8a4c2e8ca40e8dede40d0d2ced604b1b60448201526064016102a2565b604051631cd43d1160e31b81526001600160a01b03848116600483015230602483015282811660448301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e6a1e88890606401608060405180830381865afa1580156103c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103eb9190611196565b5050915050600081600b0b1380156104065750600083600b0b135b15610540576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116906339255d5b907f00000000000000000000000000000000000000000000000000000000000000009081166350209a6288878960005b6040519080825280601f01601f191660200182016040528015610496576020820181803683370190505b506040516024016104aa949392919061123a565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b03191682526104f39392509060040161127a565b6000604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261053a91908101906112c1565b506106ed565b80600b0b60001480156105565750600083600b0b135b156105c0576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116906339255d5b907f00000000000000000000000000000000000000000000000000000000000000009081166362fc305e888789600061046c565b600081600b0b1380156105d6575082600b0b6000145b156106ed576040805160008152602081019091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916339255d5b917f0000000000000000000000000000000000000000000000000000000000000000919082169063b4b333c69061065b908a9030908a906044810161136e565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b03191682526106a49392509060040161127a565b6000604051808303816000875af11580156106c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106eb91908101906112c1565b505b604051600b84900b81526001600160a01b038516907f0988aefa675e81e1db7fca08264db5dc2a1cc2a604f2a78d902a9747146a56719060200160405180910390a250505050565b600061077c6107776107687f0000000000000000000000000000000000000000000000000000000000000000600461117f565b61077290856113a2565b610ec9565b610f37565b90505b92915050565b600061077c6107776107727f0000000000000000000000000000000000000000000000000000000000000000856113a2565b6001600160a01b03818116600081815260208190526040808220549051631cd43d1160e31b815260048101939093523060248401528316604483015291829182917f0000000000000000000000000000000000000000000000000000000000000000169063e6a1e88890606401608060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611196565b50506001600160a01b0380871660009081526020819052604090205491935016905061089085610e28565b925092509193909250565b6001600160a01b038416600090815260208190526040902054600160a01b900460ff161561090b5760405162461bcd60e51b815260206004820152601c60248201527f544f47413a207265656e7472616e6379206e6f7420616c6c6f7765640000000060448201526064016102a2565b600081600b0b121561092f5760405162461bcd60e51b81526004016102a290611126565b8161095e7f0000000000000000000000000000000000000000000000000000000000000000600b84900b61117f565b11156109a65760405162461bcd60e51b81526020600482015260176024820152760a89e8e827440caf0d2e8a4c2e8ca40e8dede40d0d2ced604b1b60448201526064016102a2565b6000826109b286610e28565b6109bc91906113c4565b9050808311610a015760405162461bcd60e51b8152602060048201526011602482015270544f47413a2062696420746f6f206c6f7760781b60448201526064016102a2565b6001600160a01b038581166000818152602081905260408082208054600160a01b60ff60a01b198216179091559051631cd43d1160e31b815260048101939093523060248401528316604483018190529290917f00000000000000000000000000000000000000000000000000000000000000009091169063e6a1e88890606401608060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190611196565b5050915050600081600b0b1315610be6576040805160008152602081019091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916339255d5b917f0000000000000000000000000000000000000000000000000000000000000000919082169063b4b333c690610b54908d9030908a906044810161136e565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b0319168252610b9d9392509060040161127a565b6000604051808303816000875af1158015610bbc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be491908101906112c1565b505b6001600160a01b03821615610c6a5760405163a9059cbb60e01b81526001600160a01b0383811660048301526024820185905288169063a9059cbb906044016020604051808303816000875af1158015610c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6891906113d7565b505b6001600160a01b03878116600090815260208190526040812080546001600160a01b03191692891692909217909155600b85900b1315610db6576040805160008152602081019091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116916339255d5b917f000000000000000000000000000000000000000000000000000000000000000091908216906362fc305e90610d24908d908d908c906044810161123a565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b0319168252610d6d9392509060040161127a565b6000604051808303816000875af1158015610d8c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610db491908101906112c1565b505b6001600160a01b0387811660008181526020818152604091829020805460ff60a01b191690558151938a1684528301889052600b87900b90830152907f836808e57755d5535898b7203c7d68b1bfb2701b1943ecb133c675e0d00780159060600160405180910390a250505050505050565b604051632ec8eec760e01b8152306004820152600090819081906001600160a01b03851690632ec8eec790602401608060405180830381865afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9791906113f9565b50509150915060008183610eab919061142f565b13610eb7576000610ec1565b610ec1818361142f565b949350505050565b60006001600160ff1b03821115610f335760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016102a2565b5090565b60006b7fffffffffffffffffffffff8212610f33576b7fffffffffffffffffffffff92915050565b6001600160a01b0381168114610f7457600080fd5b50565b60008083601f840112610f8957600080fd5b50813567ffffffffffffffff811115610fa157600080fd5b602083019150836020828501011115610fb957600080fd5b9250929050565b60008060008060008060008060c0898b031215610fdc57600080fd5b8835610fe781610f5f565b97506020890135610ff781610f5f565b9650604089013561100781610f5f565b955060608901359450608089013567ffffffffffffffff8082111561102b57600080fd5b6110378c838d01610f77565b909650945060a08b013591508082111561105057600080fd5b5061105d8b828c01610f77565b999c989b5096995094979396929594505050565b80600b0b8114610f7457600080fd5b6000806040838503121561109357600080fd5b823561109e81610f5f565b915060208301356110ae81611071565b809150509250929050565b600080604083850312156110cc57600080fd5b82356110d781610f5f565b946020939093013593505050565b6000602082840312156110f757600080fd5b813561110281610f5f565b9392505050565b60006020828403121561111b57600080fd5b813561110281611071565b60208082526023908201527f544f47413a206e65676174697665206578697452617465206e6f7420616c6c6f6040820152621dd95960ea1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761077f5761077f611169565b600080600080608085870312156111ac57600080fd5b8451935060208501516111be81611071565b6040860151606090960151949790965092505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156112055781810151838201526020016111ed565b50506000910152565b600081518084526112268160208601602086016111ea565b601f01601f19169290920160200192915050565b6001600160a01b03858116825284166020820152600b83900b60408201526080606082018190526000906112709083018461120e565b9695505050505050565b6001600160a01b038316815260606020820181905260009061129e9083018461120e565b8281036040938401526002815261060f60f31b6020820152919091019392505050565b6000602082840312156112d357600080fd5b815167ffffffffffffffff808211156112eb57600080fd5b818401915084601f8301126112ff57600080fd5b815181811115611311576113116111d4565b604051601f8201601f19908116603f01168101908382118183101715611339576113396111d4565b8160405282815287602084870101111561135257600080fd5b6113638360208301602088016111ea565b979650505050505050565b6001600160a01b0385811682528481166020830152831660408201526080606082018190526000906112709083018461120e565b6000826113bf57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561077f5761077f611169565b6000602082840312156113e957600080fd5b8151801515811461110257600080fd5b6000806000806080858703121561140f57600080fd5b505082516020840151604085015160609095015191969095509092509050565b808201828112600083128015821682158216171561144f5761144f611169565b50509291505056fea2646970667358221220e570cb188b4158d7eef89a1a4474bdc8be27d06148c58542457eebb685ef604164736f6c63430008130033a2646970667358221220e84ad444873f1997c958e6e149535ff294dedc34faf851f75f4d645528df706464736f6c63430008130033";
534
534
  const isSuperArgs = (xs) => {
535
535
  return (typeof xs[0] === "string" ||
536
536
  Array.isArray(xs[0]) ||
@@ -13,7 +13,7 @@ export declare class SuperfluidFrameworkDeploymentSteps__factory extends Contrac
13
13
  }): TransactionRequest;
14
14
  attach(address: string): SuperfluidFrameworkDeploymentSteps;
15
15
  connect(signer: Signer): SuperfluidFrameworkDeploymentSteps__factory;
16
- static readonly bytecode = "0x6000608081905260a0604081905261001891908161002b565b5034801561002557600080fd5b506100a5565b828054828255906000526020600020908101928215610080579160200282015b8281111561008057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061004b565b5061008c929150610090565b5090565b5b8082111561008c5760008155600101610091565b610560806100b46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806362a32e1e1161007157806362a32e1e14610153578063888a37b11461017e57806393786bf014610188578063b3083cf81461013b578063dfa98ad514610190578063f2fde38b146102c257600080fd5b806305bfa3e0146100ae5780631903410d146100ca5780633df285fe146100f55780634d59c13614610132578063520994701461013b575b600080fd5b6100b761070881565b6040519081526020015b60405180910390f35b6100dd6100d8366004610369565b6102d7565b6040516001600160a01b0390911681526020016100c1565b6101256040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b81525081565b6040516100c19190610382565b6100b761384081565b610143600081565b60405190151581526020016100c1565b6101256040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b81525081565b6100b762093a8081565b6100dd604581565b6102b5604080516101608101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810182905260e08101829052610100810182905261012081018290526101408101919091525060408051610160810182526001546001600160a01b03610100918290048116835260025481166020808501829052600354831685870181905286518088018852838152808301919091526060860152600554831660808601819052865180880190975291865285015260a0830193909352600c54831660c0830152600e54831660e0830152600f54831690820152601054821661012082015260115490911661014082015290565b6040516100c191906103d0565b6102d56102d03660046104fa565b610301565b005b600081815481106102e757600080fd5b6000918252602090912001546001600160a01b0316905081565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301526101009092049091169063f2fde38b90602401600060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b5050505050565b60006020828403121561037b57600080fd5b5035919050565b600060208083528351808285015260005b818110156103af57858101830151858201604001528201610393565b506000604082860101526040601f19601f8301168501019250505092915050565b81516001600160a01b031681526101a0810160208301516103fc60208401826001600160a01b03169052565b50604083015161041760408401826001600160a01b03169052565b506060830151610440606084018280516001600160a01b03908116835260209182015116910152565b5060808301516001600160a01b03811660a08401525060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c0830151610100610495818501836001600160a01b03169052565b60e085015191506101206104b3818601846001600160a01b03169052565b908501519150610140906104d1858301846001600160a01b03169052565b8501516001600160a01b0390811661016086015294015190931661018090920191909152919050565b60006020828403121561050c57600080fd5b81356001600160a01b038116811461052357600080fd5b939250505056fea264697066735822122075dc6593c224facc725ed3dc615643c47bd8c62c3c0e8906a73e53d2de7af14264736f6c63430008130033";
16
+ static readonly bytecode = "0x6000608081905260a0604081905261001891908161002b565b5034801561002557600080fd5b506100a5565b828054828255906000526020600020908101928215610080579160200282015b8281111561008057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061004b565b5061008c929150610090565b5090565b5b8082111561008c5760008155600101610091565b610560806100b46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806362a32e1e1161007157806362a32e1e14610153578063888a37b11461017e57806393786bf014610188578063b3083cf81461013b578063dfa98ad514610190578063f2fde38b146102c257600080fd5b806305bfa3e0146100ae5780631903410d146100ca5780633df285fe146100f55780634d59c13614610132578063520994701461013b575b600080fd5b6100b761070881565b6040519081526020015b60405180910390f35b6100dd6100d8366004610369565b6102d7565b6040516001600160a01b0390911681526020016100c1565b6101256040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b81525081565b6040516100c19190610382565b6100b761384081565b610143600081565b60405190151581526020016100c1565b6101256040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b81525081565b6100b762093a8081565b6100dd604581565b6102b5604080516101608101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810182905260e08101829052610100810182905261012081018290526101408101919091525060408051610160810182526001546001600160a01b03610100918290048116835260025481166020808501829052600354831685870181905286518088018852838152808301919091526060860152600554831660808601819052865180880190975291865285015260a0830193909352600c54831660c0830152600e54831660e0830152600f54831690820152601054821661012082015260115490911661014082015290565b6040516100c191906103d0565b6102d56102d03660046104fa565b610301565b005b600081815481106102e757600080fd5b6000918252602090912001546001600160a01b0316905081565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301526101009092049091169063f2fde38b90602401600060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b5050505050565b60006020828403121561037b57600080fd5b5035919050565b600060208083528351808285015260005b818110156103af57858101830151858201604001528201610393565b506000604082860101526040601f19601f8301168501019250505092915050565b81516001600160a01b031681526101a0810160208301516103fc60208401826001600160a01b03169052565b50604083015161041760408401826001600160a01b03169052565b506060830151610440606084018280516001600160a01b03908116835260209182015116910152565b5060808301516001600160a01b03811660a08401525060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c0830151610100610495818501836001600160a01b03169052565b60e085015191506101206104b3818601846001600160a01b03169052565b908501519150610140906104d1858301846001600160a01b03169052565b8501516001600160a01b0390811661016086015294015190931661018090920191909152919050565b60006020828403121561050c57600080fd5b81356001600160a01b038116811461052357600080fd5b939250505056fea264697066735822122074efbdd3d35d2831efd240fcd4281cfe479becee10328c595a0b7483455eda0864736f6c63430008130033";
17
17
  static readonly abi: readonly [{
18
18
  readonly inputs: readonly [];
19
19
  readonly name: "DEFAULT_APP_WHITELISTING_ENABLED";
@@ -237,7 +237,7 @@ const _abi = [
237
237
  type: "function",
238
238
  },
239
239
  ];
240
- const _bytecode = "0x6000608081905260a0604081905261001891908161002b565b5034801561002557600080fd5b506100a5565b828054828255906000526020600020908101928215610080579160200282015b8281111561008057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061004b565b5061008c929150610090565b5090565b5b8082111561008c5760008155600101610091565b610560806100b46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806362a32e1e1161007157806362a32e1e14610153578063888a37b11461017e57806393786bf014610188578063b3083cf81461013b578063dfa98ad514610190578063f2fde38b146102c257600080fd5b806305bfa3e0146100ae5780631903410d146100ca5780633df285fe146100f55780634d59c13614610132578063520994701461013b575b600080fd5b6100b761070881565b6040519081526020015b60405180910390f35b6100dd6100d8366004610369565b6102d7565b6040516001600160a01b0390911681526020016100c1565b6101256040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b81525081565b6040516100c19190610382565b6100b761384081565b610143600081565b60405190151581526020016100c1565b6101256040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b81525081565b6100b762093a8081565b6100dd604581565b6102b5604080516101608101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810182905260e08101829052610100810182905261012081018290526101408101919091525060408051610160810182526001546001600160a01b03610100918290048116835260025481166020808501829052600354831685870181905286518088018852838152808301919091526060860152600554831660808601819052865180880190975291865285015260a0830193909352600c54831660c0830152600e54831660e0830152600f54831690820152601054821661012082015260115490911661014082015290565b6040516100c191906103d0565b6102d56102d03660046104fa565b610301565b005b600081815481106102e757600080fd5b6000918252602090912001546001600160a01b0316905081565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301526101009092049091169063f2fde38b90602401600060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b5050505050565b60006020828403121561037b57600080fd5b5035919050565b600060208083528351808285015260005b818110156103af57858101830151858201604001528201610393565b506000604082860101526040601f19601f8301168501019250505092915050565b81516001600160a01b031681526101a0810160208301516103fc60208401826001600160a01b03169052565b50604083015161041760408401826001600160a01b03169052565b506060830151610440606084018280516001600160a01b03908116835260209182015116910152565b5060808301516001600160a01b03811660a08401525060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c0830151610100610495818501836001600160a01b03169052565b60e085015191506101206104b3818601846001600160a01b03169052565b908501519150610140906104d1858301846001600160a01b03169052565b8501516001600160a01b0390811661016086015294015190931661018090920191909152919050565b60006020828403121561050c57600080fd5b81356001600160a01b038116811461052357600080fd5b939250505056fea264697066735822122075dc6593c224facc725ed3dc615643c47bd8c62c3c0e8906a73e53d2de7af14264736f6c63430008130033";
240
+ const _bytecode = "0x6000608081905260a0604081905261001891908161002b565b5034801561002557600080fd5b506100a5565b828054828255906000526020600020908101928215610080579160200282015b8281111561008057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061004b565b5061008c929150610090565b5090565b5b8082111561008c5760008155600101610091565b610560806100b46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806362a32e1e1161007157806362a32e1e14610153578063888a37b11461017e57806393786bf014610188578063b3083cf81461013b578063dfa98ad514610190578063f2fde38b146102c257600080fd5b806305bfa3e0146100ae5780631903410d146100ca5780633df285fe146100f55780634d59c13614610132578063520994701461013b575b600080fd5b6100b761070881565b6040519081526020015b60405180910390f35b6100dd6100d8366004610369565b6102d7565b6040516001600160a01b0390911681526020016100c1565b6101256040518060400160405280601181526020017039bab832b93a37b5b2b739973a32b9ba1760791b81525081565b6040516100c19190610382565b6100b761384081565b610143600081565b60405190151581526020016100c1565b6101256040518060400160405280600c81526020016b3a37b5b2b739973a32b9ba1760a11b81525081565b6100b762093a8081565b6100dd604581565b6102b5604080516101608101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810182905260e08101829052610100810182905261012081018290526101408101919091525060408051610160810182526001546001600160a01b03610100918290048116835260025481166020808501829052600354831685870181905286518088018852838152808301919091526060860152600554831660808601819052865180880190975291865285015260a0830193909352600c54831660c0830152600e54831660e0830152600f54831690820152601054821661012082015260115490911661014082015290565b6040516100c191906103d0565b6102d56102d03660046104fa565b610301565b005b600081815481106102e757600080fd5b6000918252602090912001546001600160a01b0316905081565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301526101009092049091169063f2fde38b90602401600060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b5050505050565b60006020828403121561037b57600080fd5b5035919050565b600060208083528351808285015260005b818110156103af57858101830151858201604001528201610393565b506000604082860101526040601f19601f8301168501019250505092915050565b81516001600160a01b031681526101a0810160208301516103fc60208401826001600160a01b03169052565b50604083015161041760408401826001600160a01b03169052565b506060830151610440606084018280516001600160a01b03908116835260209182015116910152565b5060808301516001600160a01b03811660a08401525060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c0830151610100610495818501836001600160a01b03169052565b60e085015191506101206104b3818601846001600160a01b03169052565b908501519150610140906104d1858301846001600160a01b03169052565b8501516001600160a01b0390811661016086015294015190931661018090920191909152919050565b60006020828403121561050c57600080fd5b81356001600160a01b038116811461052357600080fd5b939250505056fea264697066735822122074efbdd3d35d2831efd240fcd4281cfe479becee10328c595a0b7483455eda0864736f6c63430008130033";
241
241
  const isSuperArgs = (xs) => xs.length > 1;
242
242
  class SuperfluidFrameworkDeploymentSteps__factory extends ethers_1.ContractFactory {
243
243
  constructor(...args) {
@@ -126,6 +126,7 @@ contract SuperToken is
126
126
  string calldata s
127
127
  )
128
128
  external
129
+ virtual
129
130
  override
130
131
  initializer // OpenZeppelin Initializable
131
132
  {
@@ -142,11 +143,11 @@ contract SuperToken is
142
143
  emit Transfer(address(0), address(0), 0);
143
144
  }
144
145
 
145
- function proxiableUUID() public pure override returns (bytes32) {
146
+ function proxiableUUID() public pure virtual override returns (bytes32) {
146
147
  return keccak256("org.superfluid-finance.contracts.SuperToken.implementation");
147
148
  }
148
149
 
149
- function updateCode(address newAddress) external override {
150
+ function updateCode(address newAddress) external virtual override {
150
151
  if (msg.sender != address(_host)) revert SUPER_TOKEN_ONLY_HOST();
151
152
  UUPSProxiable._updateCodeAddress(newAddress);
152
153
 
@@ -167,15 +168,15 @@ contract SuperToken is
167
168
  * ERC20 Token Info
168
169
  *************************************************************************/
169
170
 
170
- function name() external view override returns (string memory) {
171
+ function name() external view virtual override returns (string memory) {
171
172
  return _name;
172
173
  }
173
174
 
174
- function symbol() external view override returns (string memory) {
175
+ function symbol() external view virtual override returns (string memory) {
175
176
  return _symbol;
176
177
  }
177
178
 
178
- function decimals() external pure override returns (uint8) {
179
+ function decimals() external pure virtual override returns (uint8) {
179
180
  return _STANDARD_DECIMALS;
180
181
  }
181
182
 
@@ -233,7 +234,7 @@ contract SuperToken is
233
234
  bytes memory operatorData,
234
235
  bool requireReceptionAck
235
236
  )
236
- private
237
+ internal
237
238
  {
238
239
  if (from == address(0)) {
239
240
  revert SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS();
@@ -421,7 +422,7 @@ contract SuperToken is
421
422
  *************************************************************************/
422
423
 
423
424
  function totalSupply()
424
- public view override returns (uint256)
425
+ public view virtual override returns (uint256)
425
426
  {
426
427
  return _totalSupply;
427
428
  }
@@ -431,6 +432,7 @@ contract SuperToken is
431
432
  )
432
433
  public
433
434
  view
435
+ virtual
434
436
  override
435
437
  returns(uint256 balance)
436
438
  {
@@ -440,19 +442,19 @@ contract SuperToken is
440
442
  }
441
443
 
442
444
  function transfer(address recipient, uint256 amount)
443
- public override returns (bool)
445
+ public virtual override returns (bool)
444
446
  {
445
447
  return _transferFrom(msg.sender, msg.sender, recipient, amount);
446
448
  }
447
449
 
448
450
  function allowance(address account, address spender)
449
- public view override returns (uint256)
451
+ public view virtual override returns (uint256)
450
452
  {
451
453
  return _allowances[account][spender];
452
454
  }
453
455
 
454
456
  function approve(address spender, uint256 amount)
455
- public override
457
+ public virtual override
456
458
  returns (bool)
457
459
  {
458
460
  _approve(msg.sender, spender, amount);
@@ -460,19 +462,19 @@ contract SuperToken is
460
462
  }
461
463
 
462
464
  function transferFrom(address holder, address recipient, uint256 amount)
463
- public override returns (bool)
465
+ public virtual override returns (bool)
464
466
  {
465
467
  return _transferFrom(msg.sender, holder, recipient, amount);
466
468
  }
467
469
 
468
470
  function increaseAllowance(address spender, uint256 addedValue)
469
- public override returns (bool) {
471
+ public virtual override returns (bool) {
470
472
  _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
471
473
  return true;
472
474
  }
473
475
 
474
476
  function decreaseAllowance(address spender, uint256 subtractedValue)
475
- public override returns (bool) {
477
+ public virtual override returns (bool) {
476
478
  _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue,
477
479
  "SuperToken: decreased allowance below zero"));
478
480
  return true;
@@ -482,33 +484,33 @@ contract SuperToken is
482
484
  * ERC-777 functions
483
485
  *************************************************************************/
484
486
 
485
- function granularity() external pure override returns (uint256) { return 1; }
487
+ function granularity() external pure virtual override returns (uint256) { return 1; }
486
488
 
487
- function send(address recipient, uint256 amount, bytes calldata data) external override {
489
+ function send(address recipient, uint256 amount, bytes calldata data) external virtual override {
488
490
  _send(msg.sender, msg.sender, recipient, amount, data, "", true);
489
491
  }
490
492
 
491
- function burn(uint256 amount, bytes calldata data) external override {
493
+ function burn(uint256 amount, bytes calldata data) external virtual override {
492
494
  _downgrade(msg.sender, msg.sender, msg.sender, amount, data, "");
493
495
  }
494
496
 
495
- function isOperatorFor(address operator, address tokenHolder) external override view returns (bool) {
497
+ function isOperatorFor(address operator, address tokenHolder) external virtual override view returns (bool) {
496
498
  return _operators.isOperatorFor(operator, tokenHolder);
497
499
  }
498
500
 
499
- function authorizeOperator(address operator) external override {
501
+ function authorizeOperator(address operator) external virtual override {
500
502
  address holder = msg.sender;
501
503
  _operators.authorizeOperator(holder, operator);
502
504
  emit AuthorizedOperator(operator, holder);
503
505
  }
504
506
 
505
- function revokeOperator(address operator) external override {
507
+ function revokeOperator(address operator) external virtual override {
506
508
  address holder = msg.sender;
507
509
  _operators.revokeOperator(holder, operator);
508
510
  emit RevokedOperator(operator, holder);
509
511
  }
510
512
 
511
- function defaultOperators() external override view returns (address[] memory) {
513
+ function defaultOperators() external virtual override view returns (address[] memory) {
512
514
  return ERC777Helper.defaultOperators(_operators);
513
515
  }
514
516
 
@@ -518,7 +520,7 @@ contract SuperToken is
518
520
  uint256 amount,
519
521
  bytes calldata data,
520
522
  bytes calldata operatorData
521
- ) external override {
523
+ ) external virtual override {
522
524
  address operator = msg.sender;
523
525
  if (!_operators.isOperatorFor(operator, sender)) revert SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER();
524
526
  _send(operator, sender, recipient, amount, data, operatorData, true);
@@ -529,7 +531,7 @@ contract SuperToken is
529
531
  uint256 amount,
530
532
  bytes calldata data,
531
533
  bytes calldata operatorData
532
- ) external override {
534
+ ) external virtual override {
533
535
  address operator = msg.sender;
534
536
  if (!_operators.isOperatorFor(operator, account)) revert SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER();
535
537
  _downgrade(operator, account, account, amount, data, operatorData);
@@ -548,7 +550,7 @@ contract SuperToken is
548
550
  uint256 amount,
549
551
  bytes memory userData
550
552
  )
551
- external override
553
+ external virtual override
552
554
  onlySelf
553
555
  {
554
556
  _mint(msg.sender, account, amount,
@@ -560,7 +562,7 @@ contract SuperToken is
560
562
  uint256 amount,
561
563
  bytes memory userData
562
564
  )
563
- external override
565
+ external virtual override
564
566
  onlySelf
565
567
  {
566
568
  _burn(msg.sender, account, amount, userData, new bytes(0));
@@ -571,7 +573,7 @@ contract SuperToken is
571
573
  address spender,
572
574
  uint256 amount
573
575
  )
574
- external override
576
+ external virtual override
575
577
  onlySelf
576
578
  {
577
579
  _approve(account, spender, amount);
@@ -583,7 +585,7 @@ contract SuperToken is
583
585
  address recipient,
584
586
  uint256 amount
585
587
  )
586
- external override
588
+ external virtual override
587
589
  onlySelf
588
590
  {
589
591
  _transferFrom(spender, holder, recipient, amount);
@@ -594,7 +596,7 @@ contract SuperToken is
594
596
  *************************************************************************/
595
597
 
596
598
  function transferAll(address recipient)
597
- external override
599
+ external virtual override
598
600
  {
599
601
  _transferFrom(msg.sender, msg.sender, recipient, balanceOf(msg.sender));
600
602
  }
@@ -604,27 +606,27 @@ contract SuperToken is
604
606
  *************************************************************************/
605
607
 
606
608
  /// @dev ISuperfluidGovernance.getUnderlyingToken implementation
607
- function getUnderlyingToken() external view override returns(address) {
609
+ function getUnderlyingToken() external view virtual override returns(address) {
608
610
  return address(_underlyingToken);
609
611
  }
610
612
 
611
613
  /// @dev ISuperToken.upgrade implementation
612
- function upgrade(uint256 amount) external override {
614
+ function upgrade(uint256 amount) external virtual override {
613
615
  _upgrade(msg.sender, msg.sender, msg.sender, amount, "", "");
614
616
  }
615
617
 
616
618
  /// @dev ISuperToken.upgradeTo implementation
617
- function upgradeTo(address to, uint256 amount, bytes calldata data) external override {
619
+ function upgradeTo(address to, uint256 amount, bytes calldata data) external virtual override {
618
620
  _upgrade(msg.sender, msg.sender, to, amount, data, "");
619
621
  }
620
622
 
621
623
  /// @dev ISuperToken.downgrade implementation
622
- function downgrade(uint256 amount) external override {
624
+ function downgrade(uint256 amount) external virtual override {
623
625
  _downgrade(msg.sender, msg.sender, msg.sender, amount, "", "");
624
626
  }
625
627
 
626
628
  /// @inheritdoc ISuperToken
627
- function downgradeTo(address to, uint256 amount) external override {
629
+ function downgradeTo(address to, uint256 amount) external virtual override {
628
630
  _downgrade(msg.sender, msg.sender, to, amount, "", "");
629
631
  }
630
632
 
@@ -635,7 +637,7 @@ contract SuperToken is
635
637
  uint256 amount,
636
638
  bytes memory userData,
637
639
  bytes memory operatorData
638
- ) private {
640
+ ) internal {
639
641
  if (address(_underlyingToken) == address(0)) revert SUPER_TOKEN_NO_UNDERLYING_TOKEN();
640
642
 
641
643
  (uint256 underlyingAmount, uint256 adjustedAmount) = _toUnderlyingAmount(amount);
@@ -659,7 +661,8 @@ contract SuperToken is
659
661
  address to, // the account receiving the underlying tokens
660
662
  uint256 amount,
661
663
  bytes memory data,
662
- bytes memory operatorData) private {
664
+ bytes memory operatorData
665
+ ) internal {
663
666
  if (address(_underlyingToken) == address(0)) revert SUPER_TOKEN_NO_UNDERLYING_TOKEN();
664
667
 
665
668
  (uint256 underlyingAmount, uint256 adjustedAmount) = _toUnderlyingAmount(amount);
@@ -711,7 +714,7 @@ contract SuperToken is
711
714
  address spender,
712
715
  uint256 amount
713
716
  )
714
- external override
717
+ external virtual override
715
718
  onlyHost
716
719
  {
717
720
  _approve(account, spender, amount);
@@ -722,7 +725,7 @@ contract SuperToken is
722
725
  address spender,
723
726
  uint256 addedValue
724
727
  )
725
- external override
728
+ external virtual override
726
729
  onlyHost
727
730
  {
728
731
  _approve(account, spender, _allowances[account][spender] + addedValue);
@@ -733,7 +736,7 @@ contract SuperToken is
733
736
  address spender,
734
737
  uint256 subtractedValue
735
738
  )
736
- external override
739
+ external virtual override
737
740
  onlyHost
738
741
  {
739
742
  _approve(account, spender, _allowances[account][spender].sub(subtractedValue,
@@ -746,7 +749,7 @@ contract SuperToken is
746
749
  address recipient,
747
750
  uint256 amount
748
751
  )
749
- external override
752
+ external virtual override
750
753
  onlyHost
751
754
  {
752
755
  _transferFrom(account, spender, recipient, amount);
@@ -758,21 +761,21 @@ contract SuperToken is
758
761
  uint256 amount,
759
762
  bytes memory userData
760
763
  )
761
- external override
764
+ external virtual override
762
765
  onlyHost
763
766
  {
764
767
  _send(msg.sender, spender, recipient, amount, userData, "", true);
765
768
  }
766
769
 
767
770
  function operationUpgrade(address account, uint256 amount)
768
- external override
771
+ external virtual override
769
772
  onlyHost
770
773
  {
771
774
  _upgrade(msg.sender, account, account, amount, "", "");
772
775
  }
773
776
 
774
777
  function operationDowngrade(address account, uint256 amount)
775
- external override
778
+ external virtual override
776
779
  onlyHost
777
780
  {
778
781
  _downgrade(msg.sender, account, account, amount, "", "");