@superfluid-finance/sdk-core 0.9.1-dev.49805bf.0 → 0.9.1-dev.bd84747.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 (302) hide show
  1. package/dist/index.umd.js +294 -71
  2. package/dist/main/typechain-types/contracts/agreements/gdav1/GeneralDistributionAgreementV1.d.ts +27 -1
  3. package/dist/main/typechain-types/contracts/agreements/gdav1/GeneralDistributionAgreementV1.d.ts.map +1 -1
  4. package/dist/main/typechain-types/contracts/agreements/gdav1/SuperfluidPool.d.ts +32 -8
  5. package/dist/main/typechain-types/contracts/agreements/gdav1/SuperfluidPool.d.ts.map +1 -1
  6. package/dist/main/typechain-types/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1.d.ts +27 -1
  7. package/dist/main/typechain-types/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1.d.ts.map +1 -1
  8. package/dist/main/typechain-types/contracts/interfaces/agreements/gdav1/ISuperfluidPool.d.ts +25 -1
  9. package/dist/main/typechain-types/contracts/interfaces/agreements/gdav1/ISuperfluidPool.d.ts.map +1 -1
  10. package/dist/main/typechain-types/factories/contracts/agreements/ConstantFlowAgreementV1__factory.d.ts +1 -1
  11. package/dist/main/typechain-types/factories/contracts/agreements/ConstantFlowAgreementV1__factory.js +1 -1
  12. package/dist/main/typechain-types/factories/contracts/agreements/InstantDistributionAgreementV1__factory.d.ts +1 -1
  13. package/dist/main/typechain-types/factories/contracts/agreements/InstantDistributionAgreementV1__factory.js +1 -1
  14. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.d.ts +49 -1
  15. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.d.ts.map +1 -1
  16. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.js +64 -1
  17. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.js.map +1 -1
  18. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/PoolAdminNFT__factory.d.ts +1 -1
  19. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/PoolAdminNFT__factory.js +1 -1
  20. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/PoolMemberNFT__factory.d.ts +1 -1
  21. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/PoolMemberNFT__factory.js +1 -1
  22. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.d.ts +43 -1
  23. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.d.ts.map +1 -1
  24. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.js +55 -1
  25. package/dist/main/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.js.map +1 -1
  26. package/dist/main/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy__factory.d.ts +1 -1
  27. package/dist/main/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy__factory.js +1 -1
  28. package/dist/main/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII__factory.d.ts +1 -1
  29. package/dist/main/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII__factory.js +1 -1
  30. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.d.ts +48 -0
  31. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.d.ts.map +1 -1
  32. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.js +63 -0
  33. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.js.map +1 -1
  34. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.d.ts +30 -0
  35. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.d.ts.map +1 -1
  36. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.js +39 -0
  37. package/dist/main/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.js.map +1 -1
  38. package/dist/main/typechain-types/factories/contracts/mocks/AgreementMock.t.sol/AgreementMock__factory.d.ts +1 -1
  39. package/dist/main/typechain-types/factories/contracts/mocks/AgreementMock.t.sol/AgreementMock__factory.js +1 -1
  40. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ClosingOnUpdateFlowTestApp__factory.d.ts +1 -1
  41. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ClosingOnUpdateFlowTestApp__factory.js +1 -1
  42. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ExclusiveInflowTestApp__factory.d.ts +1 -1
  43. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ExclusiveInflowTestApp__factory.js +1 -1
  44. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/FlowExchangeTestApp__factory.d.ts +1 -1
  45. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/FlowExchangeTestApp__factory.js +1 -1
  46. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/NonClosableOutflowTestApp__factory.d.ts +1 -1
  47. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/NonClosableOutflowTestApp__factory.js +1 -1
  48. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/SelfDeletingFlowTestApp__factory.d.ts +1 -1
  49. package/dist/main/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/SelfDeletingFlowTestApp__factory.js +1 -1
  50. package/dist/main/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientDrainingGas__factory.d.ts +1 -1
  51. package/dist/main/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientDrainingGas__factory.js +1 -1
  52. package/dist/main/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientReverting__factory.d.ts +1 -1
  53. package/dist/main/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientReverting__factory.js +1 -1
  54. package/dist/main/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777SenderRecipientMock__factory.d.ts +1 -1
  55. package/dist/main/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777SenderRecipientMock__factory.js +1 -1
  56. package/dist/main/typechain-types/factories/contracts/mocks/IDASuperAppTester.t.sol/IDASuperAppTester__factory.d.ts +1 -1
  57. package/dist/main/typechain-types/factories/contracts/mocks/IDASuperAppTester.t.sol/IDASuperAppTester__factory.js +1 -1
  58. package/dist/main/typechain-types/factories/contracts/mocks/MockSmartWallet.t.sol/MockSmartWallet__factory.d.ts +1 -1
  59. package/dist/main/typechain-types/factories/contracts/mocks/MockSmartWallet.t.sol/MockSmartWallet__factory.js +1 -1
  60. package/dist/main/typechain-types/factories/contracts/mocks/MultiFlowTesterApp.t.sol/MultiFlowTesterApp__factory.d.ts +1 -1
  61. package/dist/main/typechain-types/factories/contracts/mocks/MultiFlowTesterApp.t.sol/MultiFlowTesterApp__factory.js +1 -1
  62. package/dist/main/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.d.ts +1 -1
  63. package/dist/main/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.d.ts.map +1 -1
  64. package/dist/main/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.js +1 -1
  65. package/dist/main/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.js.map +1 -1
  66. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppFactoryMock__factory.d.ts +1 -1
  67. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppFactoryMock__factory.js +1 -1
  68. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock2ndLevel__factory.d.ts +1 -1
  69. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock2ndLevel__factory.js +1 -1
  70. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockAux__factory.d.ts +1 -1
  71. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockAux__factory.js +1 -1
  72. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningEmptyCtx__factory.d.ts +1 -1
  73. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningEmptyCtx__factory.js +1 -1
  74. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningInvalidCtx__factory.d.ts +1 -1
  75. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningInvalidCtx__factory.js +1 -1
  76. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockUsingRegisterApp__factory.d.ts +1 -1
  77. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockUsingRegisterApp__factory.js +1 -1
  78. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockWithRegistrationKey__factory.d.ts +1 -1
  79. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockWithRegistrationKey__factory.js +1 -1
  80. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock__factory.d.ts +1 -1
  81. package/dist/main/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock__factory.js +1 -1
  82. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock42__factory.d.ts +1 -1
  83. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock42__factory.js +1 -1
  84. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock__factory.d.ts +1 -1
  85. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock__factory.js +1 -1
  86. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryStorageLayoutTester__factory.d.ts +1 -1
  87. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryStorageLayoutTester__factory.js +1 -1
  88. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.d.ts +1 -1
  89. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.js +1 -1
  90. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.d.ts +1 -1
  91. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.d.ts.map +1 -1
  92. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.js +1 -1
  93. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.js.map +1 -1
  94. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFASuperAppMock__factory.d.ts +1 -1
  95. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFASuperAppMock__factory.js +1 -1
  96. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.d.ts +1 -1
  97. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.d.ts.map +1 -1
  98. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.js +1 -1
  99. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.js.map +1 -1
  100. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.d.ts +1 -1
  101. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.d.ts.map +1 -1
  102. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.js +1 -1
  103. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.js.map +1 -1
  104. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/NoNFTSuperTokenMock__factory.d.ts +1 -1
  105. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/NoNFTSuperTokenMock__factory.js +1 -1
  106. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenMock__factory.d.ts +1 -1
  107. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenMock__factory.js +1 -1
  108. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenStorageLayoutTester__factory.d.ts +1 -1
  109. package/dist/main/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenStorageLayoutTester__factory.js +1 -1
  110. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidGovernanceIIMock.t.sol/SuperfluidGovernanceIIUpgradabilityTester__factory.d.ts +1 -1
  111. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidGovernanceIIMock.t.sol/SuperfluidGovernanceIIUpgradabilityTester__factory.js +1 -1
  112. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.d.ts +8 -4
  113. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.d.ts.map +1 -1
  114. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.js +11 -6
  115. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.js.map +1 -1
  116. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.d.ts +1 -1
  117. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.d.ts.map +1 -1
  118. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.js +1 -1
  119. package/dist/main/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.js.map +1 -1
  120. package/dist/main/typechain-types/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.d.ts +1 -1
  121. package/dist/main/typechain-types/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.js +1 -1
  122. package/dist/main/typechain-types/factories/contracts/superfluid/SuperToken__factory.d.ts +1 -1
  123. package/dist/main/typechain-types/factories/contracts/superfluid/SuperToken__factory.js +1 -1
  124. package/dist/main/typechain-types/factories/contracts/superfluid/Superfluid__factory.d.ts +7 -3
  125. package/dist/main/typechain-types/factories/contracts/superfluid/Superfluid__factory.d.ts.map +1 -1
  126. package/dist/main/typechain-types/factories/contracts/superfluid/Superfluid__factory.js +10 -5
  127. package/dist/main/typechain-types/factories/contracts/superfluid/Superfluid__factory.js.map +1 -1
  128. package/dist/main/typechain-types/factories/contracts/utils/BatchLiquidator__factory.d.ts +1 -1
  129. package/dist/main/typechain-types/factories/contracts/utils/BatchLiquidator__factory.js +1 -1
  130. package/dist/main/typechain-types/factories/contracts/utils/CFAv1Forwarder__factory.d.ts +1 -1
  131. package/dist/main/typechain-types/factories/contracts/utils/CFAv1Forwarder__factory.js +1 -1
  132. package/dist/main/typechain-types/factories/contracts/utils/GDAv1Forwarder__factory.d.ts +1 -1
  133. package/dist/main/typechain-types/factories/contracts/utils/GDAv1Forwarder__factory.js +1 -1
  134. package/dist/main/typechain-types/factories/contracts/utils/MacroForwarder__factory.d.ts +1 -1
  135. package/dist/main/typechain-types/factories/contracts/utils/MacroForwarder__factory.js +1 -1
  136. package/dist/main/typechain-types/factories/contracts/utils/SuperUpgrader__factory.d.ts +1 -1
  137. package/dist/main/typechain-types/factories/contracts/utils/SuperUpgrader__factory.js +1 -1
  138. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.d.ts +1 -2
  139. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.d.ts.map +1 -1
  140. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.js +1 -4
  141. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.js.map +1 -1
  142. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.d.ts +1 -2
  143. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.d.ts.map +1 -1
  144. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.js +1 -4
  145. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.js.map +1 -1
  146. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidLoader__factory.d.ts +1 -1
  147. package/dist/main/typechain-types/factories/contracts/utils/SuperfluidLoader__factory.js +1 -1
  148. package/dist/main/typechain-types/factories/contracts/utils/TOGA.sol/TOGA__factory.d.ts +1 -1
  149. package/dist/main/typechain-types/factories/contracts/utils/TOGA.sol/TOGA__factory.js +1 -1
  150. package/dist/main/typechain-types/factories/contracts/utils/TestGovernance__factory.d.ts +1 -1
  151. package/dist/main/typechain-types/factories/contracts/utils/TestGovernance__factory.js +1 -1
  152. package/dist/module/typechain-types/contracts/agreements/gdav1/GeneralDistributionAgreementV1.d.ts +27 -1
  153. package/dist/module/typechain-types/contracts/agreements/gdav1/GeneralDistributionAgreementV1.d.ts.map +1 -1
  154. package/dist/module/typechain-types/contracts/agreements/gdav1/SuperfluidPool.d.ts +32 -8
  155. package/dist/module/typechain-types/contracts/agreements/gdav1/SuperfluidPool.d.ts.map +1 -1
  156. package/dist/module/typechain-types/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1.d.ts +27 -1
  157. package/dist/module/typechain-types/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1.d.ts.map +1 -1
  158. package/dist/module/typechain-types/contracts/interfaces/agreements/gdav1/ISuperfluidPool.d.ts +25 -1
  159. package/dist/module/typechain-types/contracts/interfaces/agreements/gdav1/ISuperfluidPool.d.ts.map +1 -1
  160. package/dist/module/typechain-types/factories/contracts/agreements/ConstantFlowAgreementV1__factory.d.ts +1 -1
  161. package/dist/module/typechain-types/factories/contracts/agreements/ConstantFlowAgreementV1__factory.js +1 -1
  162. package/dist/module/typechain-types/factories/contracts/agreements/InstantDistributionAgreementV1__factory.d.ts +1 -1
  163. package/dist/module/typechain-types/factories/contracts/agreements/InstantDistributionAgreementV1__factory.js +1 -1
  164. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.d.ts +49 -1
  165. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.d.ts.map +1 -1
  166. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.js +64 -1
  167. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/GeneralDistributionAgreementV1__factory.js.map +1 -1
  168. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/PoolAdminNFT__factory.d.ts +1 -1
  169. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/PoolAdminNFT__factory.js +1 -1
  170. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/PoolMemberNFT__factory.d.ts +1 -1
  171. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/PoolMemberNFT__factory.js +1 -1
  172. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.d.ts +43 -1
  173. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.d.ts.map +1 -1
  174. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.js +55 -1
  175. package/dist/module/typechain-types/factories/contracts/agreements/gdav1/SuperfluidPool__factory.js.map +1 -1
  176. package/dist/module/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy__factory.d.ts +1 -1
  177. package/dist/module/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy__factory.js +1 -1
  178. package/dist/module/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII__factory.d.ts +1 -1
  179. package/dist/module/typechain-types/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII__factory.js +1 -1
  180. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.d.ts +48 -0
  181. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.d.ts.map +1 -1
  182. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.js +63 -0
  183. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/IGeneralDistributionAgreementV1__factory.js.map +1 -1
  184. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.d.ts +30 -0
  185. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.d.ts.map +1 -1
  186. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.js +39 -0
  187. package/dist/module/typechain-types/factories/contracts/interfaces/agreements/gdav1/ISuperfluidPool__factory.js.map +1 -1
  188. package/dist/module/typechain-types/factories/contracts/mocks/AgreementMock.t.sol/AgreementMock__factory.d.ts +1 -1
  189. package/dist/module/typechain-types/factories/contracts/mocks/AgreementMock.t.sol/AgreementMock__factory.js +1 -1
  190. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ClosingOnUpdateFlowTestApp__factory.d.ts +1 -1
  191. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ClosingOnUpdateFlowTestApp__factory.js +1 -1
  192. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ExclusiveInflowTestApp__factory.d.ts +1 -1
  193. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/ExclusiveInflowTestApp__factory.js +1 -1
  194. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/FlowExchangeTestApp__factory.d.ts +1 -1
  195. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/FlowExchangeTestApp__factory.js +1 -1
  196. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/NonClosableOutflowTestApp__factory.d.ts +1 -1
  197. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/NonClosableOutflowTestApp__factory.js +1 -1
  198. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/SelfDeletingFlowTestApp__factory.d.ts +1 -1
  199. package/dist/module/typechain-types/factories/contracts/mocks/CFAAppMocks.t.sol/SelfDeletingFlowTestApp__factory.js +1 -1
  200. package/dist/module/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientDrainingGas__factory.d.ts +1 -1
  201. package/dist/module/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientDrainingGas__factory.js +1 -1
  202. package/dist/module/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientReverting__factory.d.ts +1 -1
  203. package/dist/module/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777RecipientReverting__factory.js +1 -1
  204. package/dist/module/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777SenderRecipientMock__factory.d.ts +1 -1
  205. package/dist/module/typechain-types/factories/contracts/mocks/ERC777SenderRecipientMock.t.sol/ERC777SenderRecipientMock__factory.js +1 -1
  206. package/dist/module/typechain-types/factories/contracts/mocks/IDASuperAppTester.t.sol/IDASuperAppTester__factory.d.ts +1 -1
  207. package/dist/module/typechain-types/factories/contracts/mocks/IDASuperAppTester.t.sol/IDASuperAppTester__factory.js +1 -1
  208. package/dist/module/typechain-types/factories/contracts/mocks/MockSmartWallet.t.sol/MockSmartWallet__factory.d.ts +1 -1
  209. package/dist/module/typechain-types/factories/contracts/mocks/MockSmartWallet.t.sol/MockSmartWallet__factory.js +1 -1
  210. package/dist/module/typechain-types/factories/contracts/mocks/MultiFlowTesterApp.t.sol/MultiFlowTesterApp__factory.d.ts +1 -1
  211. package/dist/module/typechain-types/factories/contracts/mocks/MultiFlowTesterApp.t.sol/MultiFlowTesterApp__factory.js +1 -1
  212. package/dist/module/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.d.ts +1 -1
  213. package/dist/module/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.d.ts.map +1 -1
  214. package/dist/module/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.js +1 -1
  215. package/dist/module/typechain-types/factories/contracts/mocks/StreamRedirector.t.sol/StreamRedirector__factory.js.map +1 -1
  216. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppFactoryMock__factory.d.ts +1 -1
  217. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppFactoryMock__factory.js +1 -1
  218. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock2ndLevel__factory.d.ts +1 -1
  219. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock2ndLevel__factory.js +1 -1
  220. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockAux__factory.d.ts +1 -1
  221. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockAux__factory.js +1 -1
  222. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningEmptyCtx__factory.d.ts +1 -1
  223. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningEmptyCtx__factory.js +1 -1
  224. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningInvalidCtx__factory.d.ts +1 -1
  225. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockReturningInvalidCtx__factory.js +1 -1
  226. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockUsingRegisterApp__factory.d.ts +1 -1
  227. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockUsingRegisterApp__factory.js +1 -1
  228. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockWithRegistrationKey__factory.d.ts +1 -1
  229. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMockWithRegistrationKey__factory.js +1 -1
  230. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock__factory.d.ts +1 -1
  231. package/dist/module/typechain-types/factories/contracts/mocks/SuperAppMocks.t.sol/SuperAppMock__factory.js +1 -1
  232. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock42__factory.d.ts +1 -1
  233. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock42__factory.js +1 -1
  234. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock__factory.d.ts +1 -1
  235. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryMock__factory.js +1 -1
  236. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryStorageLayoutTester__factory.d.ts +1 -1
  237. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryStorageLayoutTester__factory.js +1 -1
  238. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.d.ts +1 -1
  239. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenFactoryMock.t.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.js +1 -1
  240. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.d.ts +1 -1
  241. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.d.ts.map +1 -1
  242. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.js +1 -1
  243. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFAMock__factory.js.map +1 -1
  244. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFASuperAppMock__factory.d.ts +1 -1
  245. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryCFASuperAppMock__factory.js +1 -1
  246. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.d.ts +1 -1
  247. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.d.ts.map +1 -1
  248. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.js +1 -1
  249. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDAMock__factory.js.map +1 -1
  250. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.d.ts +1 -1
  251. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.d.ts.map +1 -1
  252. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.js +1 -1
  253. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenLibraryV1Mock.t.sol/SuperTokenLibraryGDASuperAppMock__factory.js.map +1 -1
  254. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/NoNFTSuperTokenMock__factory.d.ts +1 -1
  255. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/NoNFTSuperTokenMock__factory.js +1 -1
  256. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenMock__factory.d.ts +1 -1
  257. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenMock__factory.js +1 -1
  258. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenStorageLayoutTester__factory.d.ts +1 -1
  259. package/dist/module/typechain-types/factories/contracts/mocks/SuperTokenMock.t.sol/SuperTokenStorageLayoutTester__factory.js +1 -1
  260. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidGovernanceIIMock.t.sol/SuperfluidGovernanceIIUpgradabilityTester__factory.d.ts +1 -1
  261. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidGovernanceIIMock.t.sol/SuperfluidGovernanceIIUpgradabilityTester__factory.js +1 -1
  262. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.d.ts +8 -4
  263. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.d.ts.map +1 -1
  264. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.js +11 -6
  265. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.js.map +1 -1
  266. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.d.ts +1 -1
  267. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.d.ts.map +1 -1
  268. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.js +1 -1
  269. package/dist/module/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidUpgradabilityTester__factory.js.map +1 -1
  270. package/dist/module/typechain-types/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.d.ts +1 -1
  271. package/dist/module/typechain-types/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.js +1 -1
  272. package/dist/module/typechain-types/factories/contracts/superfluid/SuperToken__factory.d.ts +1 -1
  273. package/dist/module/typechain-types/factories/contracts/superfluid/SuperToken__factory.js +1 -1
  274. package/dist/module/typechain-types/factories/contracts/superfluid/Superfluid__factory.d.ts +7 -3
  275. package/dist/module/typechain-types/factories/contracts/superfluid/Superfluid__factory.d.ts.map +1 -1
  276. package/dist/module/typechain-types/factories/contracts/superfluid/Superfluid__factory.js +10 -5
  277. package/dist/module/typechain-types/factories/contracts/superfluid/Superfluid__factory.js.map +1 -1
  278. package/dist/module/typechain-types/factories/contracts/utils/BatchLiquidator__factory.d.ts +1 -1
  279. package/dist/module/typechain-types/factories/contracts/utils/BatchLiquidator__factory.js +1 -1
  280. package/dist/module/typechain-types/factories/contracts/utils/CFAv1Forwarder__factory.d.ts +1 -1
  281. package/dist/module/typechain-types/factories/contracts/utils/CFAv1Forwarder__factory.js +1 -1
  282. package/dist/module/typechain-types/factories/contracts/utils/GDAv1Forwarder__factory.d.ts +1 -1
  283. package/dist/module/typechain-types/factories/contracts/utils/GDAv1Forwarder__factory.js +1 -1
  284. package/dist/module/typechain-types/factories/contracts/utils/MacroForwarder__factory.d.ts +1 -1
  285. package/dist/module/typechain-types/factories/contracts/utils/MacroForwarder__factory.js +1 -1
  286. package/dist/module/typechain-types/factories/contracts/utils/SuperUpgrader__factory.d.ts +1 -1
  287. package/dist/module/typechain-types/factories/contracts/utils/SuperUpgrader__factory.js +1 -1
  288. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.d.ts +1 -2
  289. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.d.ts.map +1 -1
  290. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.js +1 -4
  291. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeployer.t.sol/SuperfluidFrameworkDeployer__factory.js.map +1 -1
  292. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.d.ts +1 -2
  293. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.d.ts.map +1 -1
  294. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.js +1 -4
  295. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps.t.sol/SuperfluidFrameworkDeploymentSteps__factory.js.map +1 -1
  296. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidLoader__factory.d.ts +1 -1
  297. package/dist/module/typechain-types/factories/contracts/utils/SuperfluidLoader__factory.js +1 -1
  298. package/dist/module/typechain-types/factories/contracts/utils/TOGA.sol/TOGA__factory.d.ts +1 -1
  299. package/dist/module/typechain-types/factories/contracts/utils/TOGA.sol/TOGA__factory.js +1 -1
  300. package/dist/module/typechain-types/factories/contracts/utils/TestGovernance__factory.d.ts +1 -1
  301. package/dist/module/typechain-types/factories/contracts/utils/TestGovernance__factory.js +1 -1
  302. package/package.json +3 -3
@@ -4,15 +4,15 @@ import type { SuperfluidMock, SuperfluidMockInterface } from "../../../../contra
4
4
  type SuperfluidMockConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
5
5
  export declare class SuperfluidMock__factory extends ContractFactory {
6
6
  constructor(...args: SuperfluidMockConstructorParams);
7
- deploy(nonUpgradable: boolean, appWhiteListingEnabled: boolean, callbackGasLimit: BigNumberish, erc2771Forwarder: string, overrides?: Overrides & {
7
+ deploy(nonUpgradable: boolean, appWhiteListingEnabled: boolean, callbackGasLimit: BigNumberish, simpleForwarderAddress: string, erc2771ForwarderAddress: string, overrides?: Overrides & {
8
8
  from?: string;
9
9
  }): Promise<SuperfluidMock>;
10
- getDeployTransaction(nonUpgradable: boolean, appWhiteListingEnabled: boolean, callbackGasLimit: BigNumberish, erc2771Forwarder: string, overrides?: Overrides & {
10
+ getDeployTransaction(nonUpgradable: boolean, appWhiteListingEnabled: boolean, callbackGasLimit: BigNumberish, simpleForwarderAddress: string, erc2771ForwarderAddress: string, overrides?: Overrides & {
11
11
  from?: string;
12
12
  }): TransactionRequest;
13
13
  attach(address: string): SuperfluidMock;
14
14
  connect(signer: Signer): SuperfluidMock__factory;
15
- static readonly bytecode = "0x61012060405234801561001157600080fd5b5060405161678e38038061678e833981016040819052610030916100c4565b83151560805282151560a0526001600160401b03821660c0526001600160a01b03811661010052604051849084908490849061006b906100a2565b604051809103906000f080158015610087573d6000803e3d6000fd5b506001600160a01b031660e052506101369650505050505050565b6104c2806162cc83390190565b805180151581146100bf57600080fd5b919050565b600080600080608085870312156100da57600080fd5b6100e3856100af565b93506100f1602086016100af565b60408601519093506001600160401b038116811461010e57600080fd5b60608601519092506001600160a01b038116811461012b57600080fd5b939692955090935050565b60805160a05160c05160e051610100516160f76101d56000396000818161049001526146f6015260008181610bd201526145ce015260008181610506015261317d0152600081816108a8015281816123a60152818161288201528181612b2d0152612dad015260008181610aec01528181610c8401528181610fa50152818161179c015281816118d401528181611a330152612cd501526160f76000f3fe60806040526004361061038c5760003560e01c80638ca48484116101dc578063bd3252c811610102578063e8dccb7d116100a0578063f53986611161006f578063f539866114610ba0578063f85263b914610bc0578063f9f522f414610bf4578063fa6e0cfe14610c3157600080fd5b8063e8dccb7d14610b0e578063eb5bf90114610b3d578063f2e55caf14610b6b578063f373305214610b8057600080fd5b8063c56a069d116100dc578063c56a069d14610a5b578063c60944a614610a88578063c6ae797314610aa8578063cd312ec414610ada57600080fd5b8063bd3252c814610a06578063bf42873414610a1b578063c4d66de814610a3b57600080fd5b8063ad3915c81161017a578063bb84cfa111610149578063bb84cfa11461096a578063bbe4fd50146109b3578063bced3ddc146109c6578063bd1c448b146109e657600080fd5b8063ad3915c8146108ea578063b6d200de1461090a578063b724211e1461092a578063ba48b5f81461094a57600080fd5b8063989b0c3e116101b6578063989b0c3e146108615780639903ad38146108815780639d297e3014610896578063a5dbbbcd146108ca57600080fd5b80638ca48484146107e45780638ceddd7a146108045780639378fa131461082f57600080fd5b806346951954116102c157806359a291411161025f5780637283100c1161022e5780637283100c14610766578063731aed6e1461078657806374041e02146107a4578063768fabb0146107c457600080fd5b806359a2914114610700578063670e77e3146107205780636ad3ca7d146107335780636b4f33351461074657600080fd5b806352d1902d1161029b57806352d1902d1461066357806354fbc493146106a057806357121e0c146106c0578063572b6c05146106e057600080fd5b80634695195414610603578063486ff0cd1461062357806350d75d251461064e57600080fd5b80632f89bf891161032e57806339255d5b1161030857806339255d5b146105405780633ca3ad4e146105605780633f6c923a146105a85780634329d293146105d557600080fd5b80632f89bf89146104b457806333511863146104d457806333d608f1146104f457600080fd5b80631e6d0a841161036a5780631e6d0a84146103f35780631e855cf314610429578063289b3c0d146104495780632ecfbda21461048157600080fd5b806306cecba8146103915780630c565075146103b357806315a024e1146103d3575b600080fd5b34801561039d57600080fd5b506103b16103ac366004614d5a565b610c51565b005b3480156103bf57600080fd5b506103b16103ce366004614d7e565b610e28565b3480156103df57600080fd5b506103b16103ee366004614d5a565b610eb8565b3480156103ff57600080fd5b5061041361040e366004614e0d565b611108565b6040516104209190614ef5565b60405180910390f35b34801561043557600080fd5b50610413610444366004614fcb565b611354565b34801561045557600080fd5b506000546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610420565b34801561048d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610469565b3480156104c057600080fd5b506103b16104cf366004614d5a565b61136c565b3480156104e057600080fd5b506103b16104ef366004614d5a565b61152a565b34801561050057600080fd5b506105287f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b039091168152602001610420565b34801561054c57600080fd5b5061041361055b36600461501a565b611539565b34801561056c57600080fd5b5061059861057b366004614d5a565b6001600160a01b0316600090815260046020526040902054151590565b6040519015158152602001610420565b3480156105b457600080fd5b506105c86105c3366004615093565b61154f565b60405161042091906150c7565b3480156105e157600080fd5b506105f56105f03660046151a6565b611560565b60405161042092919061525c565b34801561060f57600080fd5b506103b161061e366004614d5a565b611769565b34801561062f57600080fd5b50604080518082019091526002815261763160f01b6020820152610413565b34801561065a57600080fd5b50610469611862565b34801561066f57600080fd5b507fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b604051908152602001610420565b3480156106ac57600080fd5b506103b16106bb366004614d5a565b611891565b3480156106cc57600080fd5b506103b16106db366004614d5a565b611b14565b3480156106ec57600080fd5b506105986106fb366004614d5a565b611be2565b34801561070c57600080fd5b5061041361071b366004615281565b611c6c565b6103b161072e3660046152cc565b611d4e565b6103b16107413660046152cc565b611d64565b34801561075257600080fd5b50610598610761366004614d5a565b611d6f565b34801561077257600080fd5b506103b1610781366004614d5a565b611d93565b34801561079257600080fd5b506003546001600160a01b0316610469565b3480156107b057600080fd5b506104136107bf366004614e0d565b611e3b565b3480156107d057600080fd5b506104136107df366004615341565b611f8a565b3480156107f057600080fd5b506105986107ff366004614d5a565b612126565b34801561081057600080fd5b5061081a61010081565b60405163ffffffff9091168152602001610420565b34801561083b57600080fd5b5061084f61084a366004614d5a565b6121eb565b60405160ff9091168152602001610420565b34801561086d57600080fd5b5061041361087c366004615281565b61220c565b34801561088d57600080fd5b506103b161229f565b3480156108a257600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d657600080fd5b506106926108e53660046153bc565b61235a565b3480156108f657600080fd5b506103b16109053660046153de565b6123a4565b34801561091657600080fd5b506104696109253660046153de565b6123f8565b34801561093657600080fd5b506104136109453660046153f7565b61245f565b34801561095657600080fd5b50610413610965366004615453565b612520565b34801561097657600080fd5b50610598610985366004614d7e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109bf57600080fd5b5042610692565b3480156109d257600080fd5b506106926109e13660046153bc565b612837565b3480156109f257600080fd5b506103b1610a013660046154d9565b612880565b348015610a1257600080fd5b50610692600181565b348015610a2757600080fd5b50610598610a36366004615524565b6128f6565b348015610a4757600080fd5b506103b1610a56366004614d5a565b612937565b348015610a6757600080fd5b50610a7b610a763660046153de565b612a1b565b6040516104209190615565565b348015610a9457600080fd5b506103b1610aa33660046155b1565b612b00565b348015610ab457600080fd5b50610ac8610ac33660046155dd565b612b7f565b604051610420969594939291906156b1565b348015610ae657600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b348015610b1a57600080fd5b50610598610b293660046153de565b600090815260026020526040902054151590565b348015610b4957600080fd5b50610b5d610b583660046154d9565b612c6c565b60405161042092919061570a565b348015610b7757600080fd5b50610469612cb8565b348015610b8c57600080fd5b506103b1610b9b3660046155b1565b612d80565b348015610bac57600080fd5b50610413610bbb366004615723565b612e8b565b348015610bcc57600080fd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610c0057600080fd5b50610c14610c0f366004614d5a565b612f83565b604080519315158452911515602084015290820152606001610420565b348015610c3d57600080fd5b506103b1610c4c366004614d7e565b612fd2565b6000546201000090046001600160a01b03163314610c82576040516362e9152760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015610cc1576040516314f72c9f60e01b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d259190615792565b600081815260026020526040812054919250819003610d5757604051630e4f4df560e11b815260040160405180910390fd5b60006001610d6581846157c1565b81548110610d7557610d756157d4565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b158015610dc857600080fd5b505af1158015610ddc573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b6000546201000090046001600160a01b03163314610e59576040516362e9152760e11b815260040160405180910390fd5b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f28397090602401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505050505050565b6000546201000090046001600160a01b03163314610ee9576040516362e9152760e11b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190615792565b60008181526002602052604090205490915015610f7d57604051631b93bb7560e31b815260040160405180910390fd5b60015461010011610fa157604051630f85034f60e31b815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000061105b576000604051610fd690614cdd565b604051809103906000f080158015610ff2573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050508091505061105e565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d1906110fb90849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b606061111333612126565b6111305760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611172925083915061312d9050565b61117e5761117e6157ea565b6000806111f88a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561130d5761120b81613214565b156112a557808060200190518101906112249190615845565b935061122f8461312d565b6112a057866112595760405163a85ba64f60e01b8152601460048201526024015b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060149050613268565b611347565b866112c65760405163a85ba64f60e01b815260166004820152602401611250565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060169050613268565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061136333846000856132e9565b90505b92915050565b6000546201000090046001600160a01b0316331461139d576040516362e9152760e11b815260040160405180910390fd5b604051635b69006f60e11b81527fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a9466004820152600090309063b6d200de90602401602060405180830381865afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190615879565b90506000816001600160a01b0316635437dd976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190615879565b604051631b2ce7f360e11b81526001600160a01b03858116600483015291925090821690633659cfe690602401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50506040516001600160a01b038681168252841692507f052cea8931962dd445ef48b0b998d3056bd0705f437087d60fe3c46a3fa09e1f91506020015b60405180910390a2505050565b61153681611b1e613268565b50565b606061154733858585613526565b949350505050565b611557614cea565b61136682613637565b60608083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a5925083915061312d9050565b6115c55760405163a85ba64f60e01b815260146004820152602401611250565b896115cf81612126565b6115ec5760405163619c535960e01b815260040160405180910390fd5b600061162d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461165e5760405163066875e160e11b815260040160405180910390fd5b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a08301526116aa82613702565b955060006116f08e8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508c91506138369050565b96509050801561174f578580602001905181019061170e9190615845565b96506117198761312d565b611725576117256157ea565b61172e8761154f565b6001600160a01b0383166060820152925061174883613702565b9650611758565b611758866138f1565b505050505097509795505050505050565b6000546201000090046001600160a01b0316331461179a576040516362e9152760e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156117d9576040516314f72c9f60e01b815260040160405180910390fd5b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183b9190615896565b156118595760405163474e764160e01b815260040160405180910390fd5b611536816139fc565b600061188c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b031633146118c2576040516362e9152760e11b815260040160405180910390fd5b6003546001600160a01b0316611a31577f00000000000000000000000000000000000000000000000000000000000000006119a857600060405161190590614cdd565b604051809103906000f080158015611921573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b039490941693909317909255506119c49050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b50505050611ad0565b7f000000000000000000000000000000000000000000000000000000000000000015611a70576040516314f72c9f60e01b815260040160405180910390fd5b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b33600081815260046020526040902054611b41576040516302eb3f7160e61b815260040160405180910390fd5b6001600160a01b038216600090815260046020526040902054611b7757604051634b5518af60e11b815260040160405180910390fd5b611b80826121eb565b60ff16611b8c826121eb565b60ff1611611bad57604051630447252760e41b815260040160405180910390fd5b6001600160a01b039081166000908152600560209081526040808320949093168252929092529020805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba3083611c0586613c36565b6040518463ffffffff1660e01b8152600401611c23939291906158b3565b602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190615792565b151592915050565b6060611c7733612126565b611c945760405163619c535960e01b815260040160405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cd6925083915061312d9050565b611ce257611ce26157ea565b6000611d2386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b9050838161010001818151611d3891906158d7565b905250611d4481613702565b9695505050505050565b611d60611d59613cbe565b8383613d26565b5050565b611d60338383613d26565b6001600160a01b038116600090815260046020526040812054618000161515611366565b6000546201000090046001600160a01b03163314611dc4576040516362e9152760e11b815260040160405180910390fd5b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060611e4633612126565b611e635760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ea5925083915061312d9050565b611eb157611eb16157ea565b600080611f2b8a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561134757611f3e81613214565b15611f5e5780806020019051810190611f579190615845565b9350611347565b86611f7f5760405163a85ba64f60e01b815260166004820152602401611250565b6113478a6016613268565b6060611f9533612126565b611fb25760405163619c535960e01b815260040160405180910390fd5b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ff4925083915061312d9050565b612000576120006157ea565b600061204189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905061206881606001516001600160a01b0316600090815260046020526040902054151590565b801561207c57506001816000015160ff1610155b156120cf5760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff166120cf5760405163a85ba64f60e01b8152601e6004820152602401611250565b8051816120db826158ff565b60ff169052506003602082015260c0810186905261010081018590526001600160a01b03808816610120830152841661014082015261211981613702565b9998505050505050505050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190615792565b600081815260026020526040902054909150801580159061154757506001600160a01b03841660016121bd81846157c1565b815481106121cd576121cd6157d4565b6000918252602090912001546001600160a01b031614949350505050565b6001600160a01b03811660009081526004602052604081205460ff16611366565b606061221733612126565b6122345760405163619c535960e01b815260040160405180910390fd5b600061227585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905082816101000181815161228a91906158d7565b90525061229681613702565b95945050505050565b600054610100900460ff16158080156122bf5750600054600160ff909116105b806122d95750303b1580156122d9575060005460ff166001145b6122f55760405162461bcd60e51b81526004016112509061591e565b6000805460ff191660011790558015612318576000805461ff0019166101001790555b8015611536576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611b09565b60008181526002602052604081205480820361238957604051630e4f4df560e11b815260040160405180910390fd5b6123946001826157c1565b6001901b19841691505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156123ee576123ee604051806040016040528060028152602001616b3160f01b8152503261480f565b61153633826148b8565b60008181526002602052604081205480820361242757604051630e4f4df560e11b815260040160405180910390fd5b600161243381836157c1565b81548110612443576124436157d4565b6000918252602090912001546001600160a01b03169392505050565b606061246a33612126565b6124875760405163619c535960e01b815260040160405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124c9925083915061312d9050565b6124d5576124d56157ea565b6124df8484613268565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612564925083915061312d9050565b6125845760405163a85ba64f60e01b815260146004820152602401611250565b6001600160a01b03871660009081526004602052604081205488918190036125bf5760405163163cbe4360e01b815260040160405180910390fd5b6180008116156125e157604051628e12d960e21b815260040160405180910390fd5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506126229150839050614987565b90506001600160e01b031981166330d9c91560e01b148061265357506001600160e01b0319811663d86ed3e560e01b145b8061266e57506001600160e01b03198116630221347d60e61b145b8061268957506001600160e01b0319811663230dbd2960e01b145b806126a457506001600160e01b03198116635f9e7d7760e01b145b806126bf57506001600160e01b031981166353c11f9960e01b145b156126dd576040516377a14afb60e11b815260040160405180910390fd5b600061271e89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461274f576040516311cfdef560e21b815260040160405180910390fd5b6060810180513390915261276282613702565b97506000806127a98f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508f91506138369050565b91509150811561281c57808060200190518101906127c79190615845565b99506127d28a61312d565b6127f25760405163a85ba64f60e01b815260146004820152602401611250565b6127fb8a61154f565b6001600160a01b0384166060820152935061281584613702565b9950612825565b612825816138f1565b50505050505050505095945050505050565b60008181526002602052604081205480820361286657604051630e4f4df560e11b815260040160405180910390fd5b6128716001826157c1565b6001901b841791505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156128e7576128e782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525032925061480f915050565b6128f133846148b8565b505050565b600061136383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061312d92505050565b600054610100900460ff16158080156129575750600054600160ff909116105b806129715750303b158015612971575060005460ff166001145b61298d5760405162461bcd60e51b81526004016112509061591e565b6000805460ff1916600117905580156129b0576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015611d60576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60606000806001805490506001600160401b03811115612a3d57612a3d614f08565b604051908082528060200260200182016040528015612a66578160200160208202803683370190505b50925060009050600091505b600154821015612af8576001821b841615612aed5760018281548110612a9a57612a9a6157d4565b6000918252602090912001546001600160a01b03168382612aba8161596c565b935081518110612acc57612acc6157d4565b60200260200101906001600160a01b031690816001600160a01b0316815250505b816001019150612a72565b825250919050565b816001600160a01b03163b600003612b2b5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b7557612b75604051806040016040528060028152602001616b3160f01b8152503361480f565b611d6082826148b8565b600080600060608060608e8e8e8e8e8e8e8e8e85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815293995096975094959394509192909150859085908190840183828082843760009201919091525050604080516020601f87018190048102820181019092528581529397509495509293919250849184915081908401838280828437600092019190915250999f50979d50959b50939950919750919550505050505099509950995099509950999350505050565b6000606084848481818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250959b929a509198505050505050505050565b6003546000906001600160a01b0316612cd357612cd36157ea565b7f000000000000000000000000000000000000000000000000000000000000000015612d0957506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c9190615879565b816001600160a01b03163b600003612dab5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b75576000612ddc336149e3565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba90612e1b903090859087906004016158b3565b602060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c9190615792565b600114905080612e7f57604051630b56455f60e41b815260040160405180910390fd5b5050611d6082826148b8565b60606000612f0286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250614a5d92505050565b90506000306001600160a01b031682604051612f1e9190615985565b600060405180830381855afa9150503d8060008114612f59576040519150601f19603f3d011682016040523d82523d6000602084013e612f5e565b606091505b50935090508015612f70575050611547565b612f79836138f1565b5050949350505050565b6001600160a01b038116600090815260046020908152604080832081519283019091525480825215801592918291612fca57805161800081161515935064ff000000001691505b509193909250565b6000546201000090046001600160a01b03163314613003576040516362e9152760e11b815260040160405180910390fd5b60006001600160a01b03821661308f57600360009054906101000a90046001600160a01b03166001600160a01b0316639470a5b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308a9190615879565b613091565b815b6040516311a5465560e21b81526001600160a01b03808316600483015291925090841690634695195490602401600060405180830381600087803b1580156130d857600080fd5b505af11580156130ec573d6000803e3d6000fd5b50506040516001600160a01b038481168252861692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd3915060200161151d565b600081516000141580156113665750600654825160208401201492915050565b600060606001600160a01b038716613167576131676157ea565b6131718484614a5d565b93506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166000876131b4576131af898784614b14565b6131bf565b6131bf898784614ba5565b91955090935090508361320857806131ef57866131e4576131df836138f1565b613208565b6131df89600a613268565b604051636a7aea4b60e11b815260040160405180910390fd5b50509550959350505050565b600060408251101561322857506000919050565b602082810151906000908214613242575060009392505050565b50604083015161325181614c04565b61325c9060406159a1565b84511492505050919050565b6001600160a01b038216600090815260046020526040812054618000169003611d60576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b906132dd9084815260200190565b60405180910390a25050565b600654606090156133105760405163a85ba64f60e01b815260156004820152602401611250565b6001600160a01b038416600090815260046020526040812054859181900361334b5760405163163cbe4360e01b815260040160405180910390fd5b61800081161561336d57604051628e12d960e21b815260040160405180910390fd5b83600061337982614987565b90506001600160e01b031981166330d9c91560e01b14806133aa57506001600160e01b0319811663d86ed3e560e01b145b806133c557506001600160e01b03198116630221347d60e61b145b806133e057506001600160e01b0319811663230dbd2960e01b145b806133fb57506001600160e01b03198116635f9e7d7760e01b145b8061341657506001600160e01b031981166353c11f9960e01b145b15613434576040516377a14afb60e11b815260040160405180910390fd5b60408051610160810182526000808252600260208084019190915242838501526001600160a01b03808e16606085015260808401839052845191820190945281815260a083015260c0820181905260e082018190526101008201819052918a1661012082015261014081018290526134ab90613702565b905060006134bb8a898b85613836565b97509050801561350957868060200190518101906134d99190615845565b91506134e48261312d565b6135045760405163a85ba64f60e01b815260146004820152602401611250565b613512565b613512876138f1565b505060006006555092979650505050505050565b6006546060901561354d5760405163a85ba64f60e01b815260156004820152602401611250565b8361355781612126565b6135745760405163619c535960e01b815260040160405180910390fd5b600061357f85614987565b60408051610160810182526000808252600160208301529293506136029181014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250613702565b905060006136138888600085613836565b955090508061362557613625856138f1565b50506000600655509095945050505050565b61363f614cea565b6060808380602001905181019061365691906159b4565b815191935091506000906136739084016020908101908501615a11565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff90911685528251600092506136c4919084018101908401615a96565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b60606001826000015160ff1611156137305760405163a85ba64f60e01b815260286004820152602401611250565b815160208084015160009260ff1664ff000000009190921b161790506000608061375d8560e00151614c3d565b6001600160801b0316901b6137758560c00151614c3d565b6001600160801b0316179050818460400151856060015186608001518760a001516040516020016137aa959493929190615ae2565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052613814929160200161525c565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038616613850576138506157ea565b61385a8584614a5d565b9450856001600160a01b031684866040516138759190615985565b60006040518083038185875af1925050503d80600081146138b2576040519150601f19603f3d011682016040523d82523d6000602084013e6138b7565b606091505b50909250905081156138e85780516000036138e85760405163a85ba64f60e01b815260166004820152602401611250565b94509492505050565b6004815110156139435760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a207461726765742072657665727428290000000000006044820152606401611250565b602081015163b1b7848f60e01b6001600160e01b03198216016139f35760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161125091849101614ef5565b81518060208401fd5b6000613a267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603613a7c5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611250565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ade9190615792565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba7414613b585760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611250565b6001600160a01b0381163003613bb05760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611250565b613bd8817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b038416602083015201611b09565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b600060183610801590613cd55750613cd533611be2565b613d195760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b6044820152606401611250565b5060131936013560601c90565b60005b818110156147cd576000838383818110613d4557613d456157d4565b9050602002810190613d579190615b2e565b613d65906020810190615b44565b905060001963ffffffff821601613e5957600080858585818110613d8b57613d8b6157d4565b9050602002810190613d9d9190615b2e565b613dab906040810190615b6a565b810190613db891906155b1565b91509150858585818110613dce57613dce6157d4565b9050602002810190613de09190615b2e565b613df1906040810190602001614d5a565b6001600160a01b03166362aa52878884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b600060405180830381600087803b158015613e3a57600080fd5b505af1158015613e4e573d6000803e3d6000fd5b5050505050506147c4565b60011963ffffffff821601613f64576000806000868686818110613e7f57613e7f6157d4565b9050602002810190613e919190615b2e565b613e9f906040810190615b6a565b810190613eac9190615bb0565b925092509250868686818110613ec457613ec46157d4565b9050602002810190613ed69190615b2e565b613ee7906040810190602001614d5a565b604051630b682aeb60e11b81526001600160a01b038a81166004830152858116602483015284811660448301526064820184905291909116906316d055d6906084015b600060405180830381600087803b158015613f4457600080fd5b505af1158015613f58573d6000803e3d6000fd5b505050505050506147c4565b60021963ffffffff821601614023576000806000868686818110613f8a57613f8a6157d4565b9050602002810190613f9c9190615b2e565b613faa906040810190615b6a565b810190613fb79190615bf1565b925092509250868686818110613fcf57613fcf6157d4565b9050602002810190613fe19190615b2e565b613ff2906040810190602001614d5a565b6001600160a01b031663ca0c1e7f898585856040518563ffffffff1660e01b8152600401613f2a9493929190615c33565b60031963ffffffff8216016140dc57600080858585818110614047576140476157d4565b90506020028101906140599190615b2e565b614067906040810190615b6a565b81019061407491906155b1565b9150915085858581811061408a5761408a6157d4565b905060200281019061409c9190615b2e565b6140ad906040810190602001614d5a565b6001600160a01b0316634b2763b38884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60041963ffffffff82160161419557600080858585818110614100576141006157d4565b90506020028101906141129190615b2e565b614120906040810190615b6a565b81019061412d91906155b1565b91509150858585818110614143576141436157d4565b90506020028101906141559190615b2e565b614166906040810190602001614d5a565b6001600160a01b031663c780fd828884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60641963ffffffff82160161428a578383838181106141b6576141b66157d4565b90506020028101906141c89190615b2e565b6141d9906040810190602001614d5a565b6001600160a01b031663ca789464868686868181106141fa576141fa6157d4565b905060200281019061420c9190615b2e565b61421a906040810190615b6a565b81019061422791906153de565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561426d57600080fd5b505af1158015614281573d6000803e3d6000fd5b505050506147c4565b60651963ffffffff8216016142ef578383838181106142ab576142ab6157d4565b90506020028101906142bd9190615b2e565b6142ce906040810190602001614d5a565b6001600160a01b031663245887fc868686868181106141fa576141fa6157d4565b60661963ffffffff8216016143a857600080858585818110614313576143136157d4565b90506020028101906143259190615b2e565b614333906040810190615b6a565b81019061434091906155b1565b91509150858585818110614356576143566157d4565b90506020028101906143689190615b2e565b614379906040810190602001614d5a565b6001600160a01b0316631ae88ffc8884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60671963ffffffff821601614461576000808585858181106143cc576143cc6157d4565b90506020028101906143de9190615b2e565b6143ec906040810190615b6a565b8101906143f991906155b1565b9150915085858581811061440f5761440f6157d4565b90506020028101906144219190615b2e565b614432906040810190602001614d5a565b6001600160a01b03166347ba7ad18884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60c81963ffffffff8216016144fe57600080858585818110614485576144856157d4565b90506020028101906144979190615b2e565b6144a5906040810190615b6a565b8101906144b29190615c66565b915091506144f6878787878181106144cc576144cc6157d4565b90506020028101906144de9190615b2e565b6144ef906040810190602001614d5a565b8484613526565b5050506147c4565b60c91963ffffffff8216016145b9576145b385858585818110614523576145236157d4565b90506020028101906145359190615b2e565b614546906040810190602001614d5a565b47878787818110614559576145596157d4565b905060200281019061456b9190615b2e565b614579906040810190615b6a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132e992505050565b506147c4565b61012c1963ffffffff8216016146e1576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166322bee4944788888881811061460e5761460e6157d4565b90506020028101906146209190615b2e565b614631906040810190602001614d5a565b898989818110614643576146436157d4565b90506020028101906146559190615b2e565b614663906040810190615b6a565b6040518563ffffffff1660e01b815260040161468193929190615ce0565b60006040518083038185885af115801561469f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526146c89190810190615d05565b91509150816146da576146da816138f1565b50506147c4565b61012d1963ffffffff8216016147ab576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663177ec59447888888818110614736576147366157d4565b90506020028101906147489190615b2e565b614759906040810190602001614d5a565b8a8a8a8a81811061476c5761476c6157d4565b905060200281019061477e9190615b2e565b61478c906040810190615b6a565b6040518663ffffffff1660e01b81526004016146819493929190615d3f565b60405163b477011560e01b815260040160405180910390fd5b50600101613d29565b5047156128f1576040516001600160a01b038416904780156108fc02916000818181858888f19350505050158015614809573d6000803e3d6000fd5b50505050565b600061481b8284614caa565b6000805460405163407b865d60e11b81529293504292620100009091046001600160a01b0316916380f70cba9161485891309187906004016158b3565b602060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148999190615792565b10156128f157604051630b56455f60e41b815260040160405180910390fd5b64ff000080ff1981161515806148cf575060ff8116155b806148dd5750618000811615155b156148fb57604051633d3200a960e21b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205415614932576040516301b0a93560e01b815260040160405180910390fd5b60408051602080820183528382526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a25050565b60006004825110156149db5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c4461746100000000006044820152606401611250565b506020015190565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c001613ca1565b815180830151606091908015614a86576040516367e9985b60e01b815260040160405180910390fd5b50601f1981018452825184908481614a9d81614c04565b614aa791906157c1565b6001600160401b03811115614abe57614abe614f08565b6040519080825280601f01601f191660200182016040528015614ae8576020820181803683370190505b50604051602001614afc9493929190615d6c565b60405160208183030381529060405291505092915050565b600080606060005a9050866001600160a01b03168587604051614b379190615985565b60006040518083038160008787f1925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b606091505b50909450915083614b9b57614b90604082615dba565b5a11614b9b57600192505b5093509350939050565b600080606060005a9050866001600160a01b03168587604051614bc89190615985565b6000604051808303818686fa925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b60008082601f1611614c17576000614c1a565b60015b60ff16614c28602084615dba565b614c3291906159a1565b611366906020615ddc565b60006001600160801b03821115614ca65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611250565b5090565b60008282604051602001614cbf929190615df3565b60405160208183030381529060405280519060200120905092915050565b61024980615e7983390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461153657600080fd5b600060208284031215614d6c57600080fd5b8135614d7781614d45565b9392505050565b60008060408385031215614d9157600080fd5b8235614d9c81614d45565b91506020830135614dac81614d45565b809150509250929050565b60008083601f840112614dc957600080fd5b5081356001600160401b03811115614de057600080fd5b602083019150836020828501011115614df857600080fd5b9250929050565b801515811461153657600080fd5b60008060008060008060808789031215614e2657600080fd5b8635614e3181614d45565b955060208701356001600160401b03811115614e4c57600080fd5b614e5889828a01614db7565b9096509450506040870135614e6c81614dff565b925060608701356001600160401b03811115614e8757600080fd5b614e9389828a01614db7565b979a9699509497509295939492505050565b60005b83811015614ec0578181015183820152602001614ea8565b50506000910152565b60008151808452614ee1816020860160208601614ea5565b601f01601f19169290920160200192915050565b6020815260006113636020830184614ec9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f4657614f46614f08565b604052919050565b60006001600160401b03821115614f6757614f67614f08565b50601f01601f191660200190565b600082601f830112614f8657600080fd5b8135614f99614f9482614f4e565b614f1e565b818152846020838601011115614fae57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614fde57600080fd5b8235614fe981614d45565b915060208301356001600160401b0381111561500457600080fd5b61501085828601614f75565b9150509250929050565b60008060006060848603121561502f57600080fd5b833561503a81614d45565b925060208401356001600160401b0381111561505557600080fd5b61506186828701614f75565b92505060408401356001600160401b0381111561507d57600080fd5b61508986828701614f75565b9150509250925092565b6000602082840312156150a557600080fd5b81356001600160401b038111156150bb57600080fd5b61154784828501614f75565b602081526150db60208201835160ff169052565b600060208301516150f1604084018260ff169052565b5060408301516060830152606083015161511660808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a083015161016060c0840152615148610180840182614ec9565b905060c084015160e084015260e08401516101008401526101008401516101208401526101208401516151876101408501826001600160a01b03169052565b506101408401516001600160a01b038116610160850152509392505050565b60008060008060008060006080888a0312156151c157600080fd5b87356151cc81614d45565b965060208801356001600160401b038111156151e757600080fd5b6151f38a828b01614db7565b90975095505060408801356001600160401b0381111561521257600080fd5b61521e8a828b01614db7565b90955093505060608801356001600160401b0381111561523d57600080fd5b6152498a828b01614db7565b989b979a50959850939692959293505050565b60408152600061526f6040830185614ec9565b82810360208401526122968185614ec9565b60008060006040848603121561529657600080fd5b83356001600160401b038111156152ac57600080fd5b6152b886828701614db7565b909790965060209590950135949350505050565b600080602083850312156152df57600080fd5b82356001600160401b038111156152f557600080fd5b8301601f8101851361530657600080fd5b80356001600160401b0381111561531c57600080fd5b8560208260051b840101111561533157600080fd5b6020919091019590945092505050565b60008060008060008060a0878903121561535a57600080fd5b86356001600160401b0381111561537057600080fd5b61537c89828a01614db7565b909750955050602087013561539081614d45565b9350604087013592506060870135915060808701356153ae81614d45565b809150509295509295509295565b600080604083850312156153cf57600080fd5b50508035926020909101359150565b6000602082840312156153f057600080fd5b5035919050565b6000806000806060858703121561540d57600080fd5b84356001600160401b0381111561542357600080fd5b61542f87828801614db7565b909550935050602085013561544381614d45565b9396929550929360400135925050565b60008060008060006060868803121561546b57600080fd5b853561547681614d45565b945060208601356001600160401b0381111561549157600080fd5b61549d88828901614db7565b90955093505060408601356001600160401b038111156154bc57600080fd5b6154c888828901614db7565b969995985093965092949392505050565b6000806000604084860312156154ee57600080fd5b8335925060208401356001600160401b0381111561550b57600080fd5b61551786828701614db7565b9497909650939450505050565b6000806020838503121561553757600080fd5b82356001600160401b0381111561554d57600080fd5b61555985828601614db7565b90969095509350505050565b602080825282518282018190526000918401906040840190835b818110156155a65783516001600160a01b031683526020938401939092019160010161557f565b509095945050505050565b600080604083850312156155c457600080fd5b82356155cf81614d45565b946020939093013593505050565b600080600080600080600080600060c08a8c0312156155fb57600080fd5b893561560681614d45565b985060208a013561561681614d45565b975060408a0135965060608a01356001600160401b0381111561563857600080fd5b6156448c828d01614db7565b90975095505060808a01356001600160401b0381111561566357600080fd5b61566f8c828d01614db7565b90955093505060a08a01356001600160401b0381111561568e57600080fd5b61569a8c828d01614db7565b915080935050809150509295985092959850929598565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906156e490830186614ec9565b82810360808401526156f68186614ec9565b905082810360a08401526121198185614ec9565b8281526040602082015260006115476040830184614ec9565b6000806000806040858703121561573957600080fd5b84356001600160401b0381111561574f57600080fd5b61575b87828801614db7565b90955093505060208501356001600160401b0381111561577a57600080fd5b61578687828801614db7565b95989497509550505050565b6000602082840312156157a457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611366576113666157ab565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082601f83011261581157600080fd5b815161581f614f9482614f4e565b81815284602083860101111561583457600080fd5b611547826020830160208701614ea5565b60006020828403121561585757600080fd5b81516001600160401b0381111561586d57600080fd5b61154784828501615800565b60006020828403121561588b57600080fd5b8151614d7781614d45565b6000602082840312156158a857600080fd5b8151614d7781614dff565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820182811260008312801582168215821617156158f7576158f76157ab565b505092915050565b600060ff821660ff8103615915576159156157ab565b60010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006001820161597e5761597e6157ab565b5060010190565b60008251615997818460208701614ea5565b9190910192915050565b80820180821115611366576113666157ab565b600080604083850312156159c757600080fd5b82516001600160401b038111156159dd57600080fd5b6159e985828601615800565b92505060208301516001600160401b03811115615a0557600080fd5b61501085828601615800565b600080600080600060a08688031215615a2957600080fd5b8551602087015160408801519196509450615a4381614d45565b60608701519093506001600160e01b031981168114615a6157600080fd5b60808701519092506001600160401b03811115615a7d57600080fd5b615a8988828901615800565b9150509295509295909350565b60008060008060808587031215615aac57600080fd5b8451602086015160408701519195509350615ac681614d45565b6060860151909250615ad781614d45565b939692955090935050565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a060808201819052600090615b2390830184614ec9565b979650505050505050565b60008235605e1983360301811261599757600080fd5b600060208284031215615b5657600080fd5b813563ffffffff81168114614d7757600080fd5b6000808335601e19843603018112615b8157600080fd5b8301803591506001600160401b03821115615b9b57600080fd5b602001915036819003821315614df857600080fd5b600080600060608486031215615bc557600080fd5b8335615bd081614d45565b92506020840135615be081614d45565b929592945050506040919091013590565b600080600060608486031215615c0657600080fd5b8335615c1181614d45565b92506020840135915060408401356001600160401b0381111561507d57600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d4490830184614ec9565b60008060408385031215615c7957600080fd5b82356001600160401b03811115615c8f57600080fd5b615c9b85828601614f75565b92505060208301356001600160401b0381111561500457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906122969083018486615cb7565b60008060408385031215615d1857600080fd5b8251615d2381614dff565b60208401519092506001600160401b03811115615a0557600080fd5b6001600160a01b03858116825284166020820152606060408201819052600090611d449083018486615cb7565b60008551615d7e818460208a01614ea5565b82018581528451615d96816020808501908901614ea5565b8451910190615dac816020808501908801614ea5565b016020019695505050505050565b600082615dd757634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611366576113666157ab565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e06040820152600061154760e0830184614ec956fe6080604052348015600f57600080fd5b5061022a8061001f6000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea26469706673582212200be7dc4160bd041045497f295bc4dcbce9dd453202fd7b0b470b990a3e32293764736f6c634300081a0033a2646970667358221220887c1c40834d60b7c8efbf5f13bc3e60d92af90c44cc316d443a9b38df81fe8c64736f6c634300081a00336080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104488061007a6000396000f3fe60806040526004361061004a5760003560e01c806322bee4941461004f578063715018a6146100795780638da5cb5b14610090578063a2852784146100b8578063f2fde38b146100d8575b600080fd5b61006261005d366004610300565b6100f8565b604051610070929190610387565b60405180910390f35b34801561008557600080fd5b5061008e61016e565b005b34801561009c57600080fd5b506000546040516001600160a01b039091168152602001610070565b3480156100c457600080fd5b5061008e6100d33660046103de565b610182565b3480156100e457600080fd5b5061008e6100f33660046103de565b6101c3565b60006060610104610241565b846001600160a01b031634858560405161011f929190610402565b60006040518083038185875af1925050503d806000811461015c576040519150601f19603f3d011682016040523d82523d6000602084013e610161565b606091505b5090969095509350505050565b610176610241565b610180600061029b565b565b61018a610241565b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156101bf573d6000803e3d6000fd5b5050565b6101cb610241565b6001600160a01b0381166102355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023e8161029b565b50565b6000546001600160a01b031633146101805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023e57600080fd5b60008060006040848603121561031557600080fd5b8335610320816102eb565b9250602084013567ffffffffffffffff81111561033c57600080fd5b8401601f8101861361034d57600080fd5b803567ffffffffffffffff81111561036457600080fd5b86602082840101111561037657600080fd5b939660209190910195509293505050565b8215158152604060208201526000825180604084015260005b818110156103bd57602081860181015160608684010152016103a0565b506000606082850101526060601f19601f8301168401019150509392505050565b6000602082840312156103f057600080fd5b81356103fb816102eb565b9392505050565b818382376000910190815291905056fea264697066735822122019b2ba226200e0e93d86ecd4f0d20893a71c4429a898fc967cb0c11b1cc1c4c464736f6c634300081a0033";
15
+ static readonly bytecode = "0x61012060405234801561001157600080fd5b506040516162963803806162968339810160408190526100309161008c565b93151560805291151560a0526001600160401b031660c0526001600160a01b0390811660e0521661010052610100565b8051801515811461007057600080fd5b919050565b80516001600160a01b038116811461007057600080fd5b600080600080600060a086880312156100a457600080fd5b6100ad86610060565b94506100bb60208701610060565b60408701519094506001600160401b03811681146100d857600080fd5b92506100e660608701610075565b91506100f460808701610075565b90509295509295909350565b60805160a05160c05160e051610100516160f761019f6000396000818161049001526146f6015260008181610bd201526145ce015260008181610506015261317d0152600081816108a8015281816123a60152818161288201528181612b2d0152612dad015260008181610aec01528181610c8401528181610fa50152818161179c015281816118d401528181611a330152612cd501526160f76000f3fe60806040526004361061038c5760003560e01c80638ca48484116101dc578063bd3252c811610102578063e8dccb7d116100a0578063f53986611161006f578063f539866114610ba0578063f85263b914610bc0578063f9f522f414610bf4578063fa6e0cfe14610c3157600080fd5b8063e8dccb7d14610b0e578063eb5bf90114610b3d578063f2e55caf14610b6b578063f373305214610b8057600080fd5b8063c56a069d116100dc578063c56a069d14610a5b578063c60944a614610a88578063c6ae797314610aa8578063cd312ec414610ada57600080fd5b8063bd3252c814610a06578063bf42873414610a1b578063c4d66de814610a3b57600080fd5b8063ad3915c81161017a578063bb84cfa111610149578063bb84cfa11461096a578063bbe4fd50146109b3578063bced3ddc146109c6578063bd1c448b146109e657600080fd5b8063ad3915c8146108ea578063b6d200de1461090a578063b724211e1461092a578063ba48b5f81461094a57600080fd5b8063989b0c3e116101b6578063989b0c3e146108615780639903ad38146108815780639d297e3014610896578063a5dbbbcd146108ca57600080fd5b80638ca48484146107e45780638ceddd7a146108045780639378fa131461082f57600080fd5b806346951954116102c157806359a291411161025f5780637283100c1161022e5780637283100c14610766578063731aed6e1461078657806374041e02146107a4578063768fabb0146107c457600080fd5b806359a2914114610700578063670e77e3146107205780636ad3ca7d146107335780636b4f33351461074657600080fd5b806352d1902d1161029b57806352d1902d1461066357806354fbc493146106a057806357121e0c146106c0578063572b6c05146106e057600080fd5b80634695195414610603578063486ff0cd1461062357806350d75d251461064e57600080fd5b80632f89bf891161032e57806339255d5b1161030857806339255d5b146105405780633ca3ad4e146105605780633f6c923a146105a85780634329d293146105d557600080fd5b80632f89bf89146104b457806333511863146104d457806333d608f1146104f457600080fd5b80631e6d0a841161036a5780631e6d0a84146103f35780631e855cf314610429578063289b3c0d146104495780632ecfbda21461048157600080fd5b806306cecba8146103915780630c565075146103b357806315a024e1146103d3575b600080fd5b34801561039d57600080fd5b506103b16103ac366004614d5a565b610c51565b005b3480156103bf57600080fd5b506103b16103ce366004614d7e565b610e28565b3480156103df57600080fd5b506103b16103ee366004614d5a565b610eb8565b3480156103ff57600080fd5b5061041361040e366004614e0d565b611108565b6040516104209190614ef5565b60405180910390f35b34801561043557600080fd5b50610413610444366004614fcb565b611354565b34801561045557600080fd5b506000546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610420565b34801561048d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610469565b3480156104c057600080fd5b506103b16104cf366004614d5a565b61136c565b3480156104e057600080fd5b506103b16104ef366004614d5a565b61152a565b34801561050057600080fd5b506105287f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b039091168152602001610420565b34801561054c57600080fd5b5061041361055b36600461501a565b611539565b34801561056c57600080fd5b5061059861057b366004614d5a565b6001600160a01b0316600090815260046020526040902054151590565b6040519015158152602001610420565b3480156105b457600080fd5b506105c86105c3366004615093565b61154f565b60405161042091906150c7565b3480156105e157600080fd5b506105f56105f03660046151a6565b611560565b60405161042092919061525c565b34801561060f57600080fd5b506103b161061e366004614d5a565b611769565b34801561062f57600080fd5b50604080518082019091526002815261763160f01b6020820152610413565b34801561065a57600080fd5b50610469611862565b34801561066f57600080fd5b507fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b604051908152602001610420565b3480156106ac57600080fd5b506103b16106bb366004614d5a565b611891565b3480156106cc57600080fd5b506103b16106db366004614d5a565b611b14565b3480156106ec57600080fd5b506105986106fb366004614d5a565b611be2565b34801561070c57600080fd5b5061041361071b366004615281565b611c6c565b6103b161072e3660046152cc565b611d4e565b6103b16107413660046152cc565b611d64565b34801561075257600080fd5b50610598610761366004614d5a565b611d6f565b34801561077257600080fd5b506103b1610781366004614d5a565b611d93565b34801561079257600080fd5b506003546001600160a01b0316610469565b3480156107b057600080fd5b506104136107bf366004614e0d565b611e3b565b3480156107d057600080fd5b506104136107df366004615341565b611f8a565b3480156107f057600080fd5b506105986107ff366004614d5a565b612126565b34801561081057600080fd5b5061081a61010081565b60405163ffffffff9091168152602001610420565b34801561083b57600080fd5b5061084f61084a366004614d5a565b6121eb565b60405160ff9091168152602001610420565b34801561086d57600080fd5b5061041361087c366004615281565b61220c565b34801561088d57600080fd5b506103b161229f565b3480156108a257600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d657600080fd5b506106926108e53660046153bc565b61235a565b3480156108f657600080fd5b506103b16109053660046153de565b6123a4565b34801561091657600080fd5b506104696109253660046153de565b6123f8565b34801561093657600080fd5b506104136109453660046153f7565b61245f565b34801561095657600080fd5b50610413610965366004615453565b612520565b34801561097657600080fd5b50610598610985366004614d7e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109bf57600080fd5b5042610692565b3480156109d257600080fd5b506106926109e13660046153bc565b612837565b3480156109f257600080fd5b506103b1610a013660046154d9565b612880565b348015610a1257600080fd5b50610692600181565b348015610a2757600080fd5b50610598610a36366004615524565b6128f6565b348015610a4757600080fd5b506103b1610a56366004614d5a565b612937565b348015610a6757600080fd5b50610a7b610a763660046153de565b612a1b565b6040516104209190615565565b348015610a9457600080fd5b506103b1610aa33660046155b1565b612b00565b348015610ab457600080fd5b50610ac8610ac33660046155dd565b612b7f565b604051610420969594939291906156b1565b348015610ae657600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b348015610b1a57600080fd5b50610598610b293660046153de565b600090815260026020526040902054151590565b348015610b4957600080fd5b50610b5d610b583660046154d9565b612c6c565b60405161042092919061570a565b348015610b7757600080fd5b50610469612cb8565b348015610b8c57600080fd5b506103b1610b9b3660046155b1565b612d80565b348015610bac57600080fd5b50610413610bbb366004615723565b612e8b565b348015610bcc57600080fd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610c0057600080fd5b50610c14610c0f366004614d5a565b612f83565b604080519315158452911515602084015290820152606001610420565b348015610c3d57600080fd5b506103b1610c4c366004614d7e565b612fd2565b6000546201000090046001600160a01b03163314610c82576040516362e9152760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015610cc1576040516314f72c9f60e01b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d259190615792565b600081815260026020526040812054919250819003610d5757604051630e4f4df560e11b815260040160405180910390fd5b60006001610d6581846157c1565b81548110610d7557610d756157d4565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b158015610dc857600080fd5b505af1158015610ddc573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b6000546201000090046001600160a01b03163314610e59576040516362e9152760e11b815260040160405180910390fd5b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f28397090602401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505050505050565b6000546201000090046001600160a01b03163314610ee9576040516362e9152760e11b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190615792565b60008181526002602052604090205490915015610f7d57604051631b93bb7560e31b815260040160405180910390fd5b60015461010011610fa157604051630f85034f60e31b815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000061105b576000604051610fd690614cdd565b604051809103906000f080158015610ff2573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050508091505061105e565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d1906110fb90849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b606061111333612126565b6111305760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611172925083915061312d9050565b61117e5761117e6157ea565b6000806111f88a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561130d5761120b81613214565b156112a557808060200190518101906112249190615845565b935061122f8461312d565b6112a057866112595760405163a85ba64f60e01b8152601460048201526024015b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060149050613268565b611347565b866112c65760405163a85ba64f60e01b815260166004820152602401611250565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060169050613268565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061136333846000856132e9565b90505b92915050565b6000546201000090046001600160a01b0316331461139d576040516362e9152760e11b815260040160405180910390fd5b604051635b69006f60e11b81527fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a9466004820152600090309063b6d200de90602401602060405180830381865afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190615879565b90506000816001600160a01b0316635437dd976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190615879565b604051631b2ce7f360e11b81526001600160a01b03858116600483015291925090821690633659cfe690602401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50506040516001600160a01b038681168252841692507f052cea8931962dd445ef48b0b998d3056bd0705f437087d60fe3c46a3fa09e1f91506020015b60405180910390a2505050565b61153681611b1e613268565b50565b606061154733858585613526565b949350505050565b611557614cea565b61136682613637565b60608083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a5925083915061312d9050565b6115c55760405163a85ba64f60e01b815260146004820152602401611250565b896115cf81612126565b6115ec5760405163619c535960e01b815260040160405180910390fd5b600061162d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461165e5760405163066875e160e11b815260040160405180910390fd5b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a08301526116aa82613702565b955060006116f08e8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508c91506138369050565b96509050801561174f578580602001905181019061170e9190615845565b96506117198761312d565b611725576117256157ea565b61172e8761154f565b6001600160a01b0383166060820152925061174883613702565b9650611758565b611758866138f1565b505050505097509795505050505050565b6000546201000090046001600160a01b0316331461179a576040516362e9152760e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156117d9576040516314f72c9f60e01b815260040160405180910390fd5b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183b9190615896565b156118595760405163474e764160e01b815260040160405180910390fd5b611536816139fc565b600061188c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b031633146118c2576040516362e9152760e11b815260040160405180910390fd5b6003546001600160a01b0316611a31577f00000000000000000000000000000000000000000000000000000000000000006119a857600060405161190590614cdd565b604051809103906000f080158015611921573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b039490941693909317909255506119c49050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b50505050611ad0565b7f000000000000000000000000000000000000000000000000000000000000000015611a70576040516314f72c9f60e01b815260040160405180910390fd5b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b33600081815260046020526040902054611b41576040516302eb3f7160e61b815260040160405180910390fd5b6001600160a01b038216600090815260046020526040902054611b7757604051634b5518af60e11b815260040160405180910390fd5b611b80826121eb565b60ff16611b8c826121eb565b60ff1611611bad57604051630447252760e41b815260040160405180910390fd5b6001600160a01b039081166000908152600560209081526040808320949093168252929092529020805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba3083611c0586613c36565b6040518463ffffffff1660e01b8152600401611c23939291906158b3565b602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190615792565b151592915050565b6060611c7733612126565b611c945760405163619c535960e01b815260040160405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cd6925083915061312d9050565b611ce257611ce26157ea565b6000611d2386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b9050838161010001818151611d3891906158d7565b905250611d4481613702565b9695505050505050565b611d60611d59613cbe565b8383613d26565b5050565b611d60338383613d26565b6001600160a01b038116600090815260046020526040812054618000161515611366565b6000546201000090046001600160a01b03163314611dc4576040516362e9152760e11b815260040160405180910390fd5b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060611e4633612126565b611e635760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ea5925083915061312d9050565b611eb157611eb16157ea565b600080611f2b8a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561134757611f3e81613214565b15611f5e5780806020019051810190611f579190615845565b9350611347565b86611f7f5760405163a85ba64f60e01b815260166004820152602401611250565b6113478a6016613268565b6060611f9533612126565b611fb25760405163619c535960e01b815260040160405180910390fd5b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ff4925083915061312d9050565b612000576120006157ea565b600061204189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905061206881606001516001600160a01b0316600090815260046020526040902054151590565b801561207c57506001816000015160ff1610155b156120cf5760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff166120cf5760405163a85ba64f60e01b8152601e6004820152602401611250565b8051816120db826158ff565b60ff169052506003602082015260c0810186905261010081018590526001600160a01b03808816610120830152841661014082015261211981613702565b9998505050505050505050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190615792565b600081815260026020526040902054909150801580159061154757506001600160a01b03841660016121bd81846157c1565b815481106121cd576121cd6157d4565b6000918252602090912001546001600160a01b031614949350505050565b6001600160a01b03811660009081526004602052604081205460ff16611366565b606061221733612126565b6122345760405163619c535960e01b815260040160405180910390fd5b600061227585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905082816101000181815161228a91906158d7565b90525061229681613702565b95945050505050565b600054610100900460ff16158080156122bf5750600054600160ff909116105b806122d95750303b1580156122d9575060005460ff166001145b6122f55760405162461bcd60e51b81526004016112509061591e565b6000805460ff191660011790558015612318576000805461ff0019166101001790555b8015611536576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611b09565b60008181526002602052604081205480820361238957604051630e4f4df560e11b815260040160405180910390fd5b6123946001826157c1565b6001901b19841691505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156123ee576123ee604051806040016040528060028152602001616b3160f01b8152503261480f565b61153633826148b8565b60008181526002602052604081205480820361242757604051630e4f4df560e11b815260040160405180910390fd5b600161243381836157c1565b81548110612443576124436157d4565b6000918252602090912001546001600160a01b03169392505050565b606061246a33612126565b6124875760405163619c535960e01b815260040160405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124c9925083915061312d9050565b6124d5576124d56157ea565b6124df8484613268565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612564925083915061312d9050565b6125845760405163a85ba64f60e01b815260146004820152602401611250565b6001600160a01b03871660009081526004602052604081205488918190036125bf5760405163163cbe4360e01b815260040160405180910390fd5b6180008116156125e157604051628e12d960e21b815260040160405180910390fd5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506126229150839050614987565b90506001600160e01b031981166330d9c91560e01b148061265357506001600160e01b0319811663d86ed3e560e01b145b8061266e57506001600160e01b03198116630221347d60e61b145b8061268957506001600160e01b0319811663230dbd2960e01b145b806126a457506001600160e01b03198116635f9e7d7760e01b145b806126bf57506001600160e01b031981166353c11f9960e01b145b156126dd576040516377a14afb60e11b815260040160405180910390fd5b600061271e89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461274f576040516311cfdef560e21b815260040160405180910390fd5b6060810180513390915261276282613702565b97506000806127a98f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508f91506138369050565b91509150811561281c57808060200190518101906127c79190615845565b99506127d28a61312d565b6127f25760405163a85ba64f60e01b815260146004820152602401611250565b6127fb8a61154f565b6001600160a01b0384166060820152935061281584613702565b9950612825565b612825816138f1565b50505050505050505095945050505050565b60008181526002602052604081205480820361286657604051630e4f4df560e11b815260040160405180910390fd5b6128716001826157c1565b6001901b841791505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156128e7576128e782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525032925061480f915050565b6128f133846148b8565b505050565b600061136383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061312d92505050565b600054610100900460ff16158080156129575750600054600160ff909116105b806129715750303b158015612971575060005460ff166001145b61298d5760405162461bcd60e51b81526004016112509061591e565b6000805460ff1916600117905580156129b0576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015611d60576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60606000806001805490506001600160401b03811115612a3d57612a3d614f08565b604051908082528060200260200182016040528015612a66578160200160208202803683370190505b50925060009050600091505b600154821015612af8576001821b841615612aed5760018281548110612a9a57612a9a6157d4565b6000918252602090912001546001600160a01b03168382612aba8161596c565b935081518110612acc57612acc6157d4565b60200260200101906001600160a01b031690816001600160a01b0316815250505b816001019150612a72565b825250919050565b816001600160a01b03163b600003612b2b5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b7557612b75604051806040016040528060028152602001616b3160f01b8152503361480f565b611d6082826148b8565b600080600060608060608e8e8e8e8e8e8e8e8e85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815293995096975094959394509192909150859085908190840183828082843760009201919091525050604080516020601f87018190048102820181019092528581529397509495509293919250849184915081908401838280828437600092019190915250999f50979d50959b50939950919750919550505050505099509950995099509950999350505050565b6000606084848481818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250959b929a509198505050505050505050565b6003546000906001600160a01b0316612cd357612cd36157ea565b7f000000000000000000000000000000000000000000000000000000000000000015612d0957506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c9190615879565b816001600160a01b03163b600003612dab5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b75576000612ddc336149e3565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba90612e1b903090859087906004016158b3565b602060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c9190615792565b600114905080612e7f57604051630b56455f60e41b815260040160405180910390fd5b5050611d6082826148b8565b60606000612f0286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250614a5d92505050565b90506000306001600160a01b031682604051612f1e9190615985565b600060405180830381855afa9150503d8060008114612f59576040519150601f19603f3d011682016040523d82523d6000602084013e612f5e565b606091505b50935090508015612f70575050611547565b612f79836138f1565b5050949350505050565b6001600160a01b038116600090815260046020908152604080832081519283019091525480825215801592918291612fca57805161800081161515935064ff000000001691505b509193909250565b6000546201000090046001600160a01b03163314613003576040516362e9152760e11b815260040160405180910390fd5b60006001600160a01b03821661308f57600360009054906101000a90046001600160a01b03166001600160a01b0316639470a5b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308a9190615879565b613091565b815b6040516311a5465560e21b81526001600160a01b03808316600483015291925090841690634695195490602401600060405180830381600087803b1580156130d857600080fd5b505af11580156130ec573d6000803e3d6000fd5b50506040516001600160a01b038481168252861692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd3915060200161151d565b600081516000141580156113665750600654825160208401201492915050565b600060606001600160a01b038716613167576131676157ea565b6131718484614a5d565b93506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166000876131b4576131af898784614b14565b6131bf565b6131bf898784614ba5565b91955090935090508361320857806131ef57866131e4576131df836138f1565b613208565b6131df89600a613268565b604051636a7aea4b60e11b815260040160405180910390fd5b50509550959350505050565b600060408251101561322857506000919050565b602082810151906000908214613242575060009392505050565b50604083015161325181614c04565b61325c9060406159a1565b84511492505050919050565b6001600160a01b038216600090815260046020526040812054618000169003611d60576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b906132dd9084815260200190565b60405180910390a25050565b600654606090156133105760405163a85ba64f60e01b815260156004820152602401611250565b6001600160a01b038416600090815260046020526040812054859181900361334b5760405163163cbe4360e01b815260040160405180910390fd5b61800081161561336d57604051628e12d960e21b815260040160405180910390fd5b83600061337982614987565b90506001600160e01b031981166330d9c91560e01b14806133aa57506001600160e01b0319811663d86ed3e560e01b145b806133c557506001600160e01b03198116630221347d60e61b145b806133e057506001600160e01b0319811663230dbd2960e01b145b806133fb57506001600160e01b03198116635f9e7d7760e01b145b8061341657506001600160e01b031981166353c11f9960e01b145b15613434576040516377a14afb60e11b815260040160405180910390fd5b60408051610160810182526000808252600260208084019190915242838501526001600160a01b03808e16606085015260808401839052845191820190945281815260a083015260c0820181905260e082018190526101008201819052918a1661012082015261014081018290526134ab90613702565b905060006134bb8a898b85613836565b97509050801561350957868060200190518101906134d99190615845565b91506134e48261312d565b6135045760405163a85ba64f60e01b815260146004820152602401611250565b613512565b613512876138f1565b505060006006555092979650505050505050565b6006546060901561354d5760405163a85ba64f60e01b815260156004820152602401611250565b8361355781612126565b6135745760405163619c535960e01b815260040160405180910390fd5b600061357f85614987565b60408051610160810182526000808252600160208301529293506136029181014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250613702565b905060006136138888600085613836565b955090508061362557613625856138f1565b50506000600655509095945050505050565b61363f614cea565b6060808380602001905181019061365691906159b4565b815191935091506000906136739084016020908101908501615a11565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff90911685528251600092506136c4919084018101908401615a96565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b60606001826000015160ff1611156137305760405163a85ba64f60e01b815260286004820152602401611250565b815160208084015160009260ff1664ff000000009190921b161790506000608061375d8560e00151614c3d565b6001600160801b0316901b6137758560c00151614c3d565b6001600160801b0316179050818460400151856060015186608001518760a001516040516020016137aa959493929190615ae2565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052613814929160200161525c565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038616613850576138506157ea565b61385a8584614a5d565b9450856001600160a01b031684866040516138759190615985565b60006040518083038185875af1925050503d80600081146138b2576040519150601f19603f3d011682016040523d82523d6000602084013e6138b7565b606091505b50909250905081156138e85780516000036138e85760405163a85ba64f60e01b815260166004820152602401611250565b94509492505050565b6004815110156139435760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a207461726765742072657665727428290000000000006044820152606401611250565b602081015163b1b7848f60e01b6001600160e01b03198216016139f35760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161125091849101614ef5565b81518060208401fd5b6000613a267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603613a7c5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611250565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ade9190615792565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba7414613b585760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611250565b6001600160a01b0381163003613bb05760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611250565b613bd8817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b038416602083015201611b09565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b600060183610801590613cd55750613cd533611be2565b613d195760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b6044820152606401611250565b5060131936013560601c90565b60005b818110156147cd576000838383818110613d4557613d456157d4565b9050602002810190613d579190615b2e565b613d65906020810190615b44565b905060001963ffffffff821601613e5957600080858585818110613d8b57613d8b6157d4565b9050602002810190613d9d9190615b2e565b613dab906040810190615b6a565b810190613db891906155b1565b91509150858585818110613dce57613dce6157d4565b9050602002810190613de09190615b2e565b613df1906040810190602001614d5a565b6001600160a01b03166362aa52878884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b600060405180830381600087803b158015613e3a57600080fd5b505af1158015613e4e573d6000803e3d6000fd5b5050505050506147c4565b60011963ffffffff821601613f64576000806000868686818110613e7f57613e7f6157d4565b9050602002810190613e919190615b2e565b613e9f906040810190615b6a565b810190613eac9190615bb0565b925092509250868686818110613ec457613ec46157d4565b9050602002810190613ed69190615b2e565b613ee7906040810190602001614d5a565b604051630b682aeb60e11b81526001600160a01b038a81166004830152858116602483015284811660448301526064820184905291909116906316d055d6906084015b600060405180830381600087803b158015613f4457600080fd5b505af1158015613f58573d6000803e3d6000fd5b505050505050506147c4565b60021963ffffffff821601614023576000806000868686818110613f8a57613f8a6157d4565b9050602002810190613f9c9190615b2e565b613faa906040810190615b6a565b810190613fb79190615bf1565b925092509250868686818110613fcf57613fcf6157d4565b9050602002810190613fe19190615b2e565b613ff2906040810190602001614d5a565b6001600160a01b031663ca0c1e7f898585856040518563ffffffff1660e01b8152600401613f2a9493929190615c33565b60031963ffffffff8216016140dc57600080858585818110614047576140476157d4565b90506020028101906140599190615b2e565b614067906040810190615b6a565b81019061407491906155b1565b9150915085858581811061408a5761408a6157d4565b905060200281019061409c9190615b2e565b6140ad906040810190602001614d5a565b6001600160a01b0316634b2763b38884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60041963ffffffff82160161419557600080858585818110614100576141006157d4565b90506020028101906141129190615b2e565b614120906040810190615b6a565b81019061412d91906155b1565b91509150858585818110614143576141436157d4565b90506020028101906141559190615b2e565b614166906040810190602001614d5a565b6001600160a01b031663c780fd828884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60641963ffffffff82160161428a578383838181106141b6576141b66157d4565b90506020028101906141c89190615b2e565b6141d9906040810190602001614d5a565b6001600160a01b031663ca789464868686868181106141fa576141fa6157d4565b905060200281019061420c9190615b2e565b61421a906040810190615b6a565b81019061422791906153de565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561426d57600080fd5b505af1158015614281573d6000803e3d6000fd5b505050506147c4565b60651963ffffffff8216016142ef578383838181106142ab576142ab6157d4565b90506020028101906142bd9190615b2e565b6142ce906040810190602001614d5a565b6001600160a01b031663245887fc868686868181106141fa576141fa6157d4565b60661963ffffffff8216016143a857600080858585818110614313576143136157d4565b90506020028101906143259190615b2e565b614333906040810190615b6a565b81019061434091906155b1565b91509150858585818110614356576143566157d4565b90506020028101906143689190615b2e565b614379906040810190602001614d5a565b6001600160a01b0316631ae88ffc8884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60671963ffffffff821601614461576000808585858181106143cc576143cc6157d4565b90506020028101906143de9190615b2e565b6143ec906040810190615b6a565b8101906143f991906155b1565b9150915085858581811061440f5761440f6157d4565b90506020028101906144219190615b2e565b614432906040810190602001614d5a565b6001600160a01b03166347ba7ad18884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60c81963ffffffff8216016144fe57600080858585818110614485576144856157d4565b90506020028101906144979190615b2e565b6144a5906040810190615b6a565b8101906144b29190615c66565b915091506144f6878787878181106144cc576144cc6157d4565b90506020028101906144de9190615b2e565b6144ef906040810190602001614d5a565b8484613526565b5050506147c4565b60c91963ffffffff8216016145b9576145b385858585818110614523576145236157d4565b90506020028101906145359190615b2e565b614546906040810190602001614d5a565b47878787818110614559576145596157d4565b905060200281019061456b9190615b2e565b614579906040810190615b6a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132e992505050565b506147c4565b61012c1963ffffffff8216016146e1576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166322bee4944788888881811061460e5761460e6157d4565b90506020028101906146209190615b2e565b614631906040810190602001614d5a565b898989818110614643576146436157d4565b90506020028101906146559190615b2e565b614663906040810190615b6a565b6040518563ffffffff1660e01b815260040161468193929190615ce0565b60006040518083038185885af115801561469f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526146c89190810190615d05565b91509150816146da576146da816138f1565b50506147c4565b61012d1963ffffffff8216016147ab576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663177ec59447888888818110614736576147366157d4565b90506020028101906147489190615b2e565b614759906040810190602001614d5a565b8a8a8a8a81811061476c5761476c6157d4565b905060200281019061477e9190615b2e565b61478c906040810190615b6a565b6040518663ffffffff1660e01b81526004016146819493929190615d3f565b60405163b477011560e01b815260040160405180910390fd5b50600101613d29565b5047156128f1576040516001600160a01b038416904780156108fc02916000818181858888f19350505050158015614809573d6000803e3d6000fd5b50505050565b600061481b8284614caa565b6000805460405163407b865d60e11b81529293504292620100009091046001600160a01b0316916380f70cba9161485891309187906004016158b3565b602060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148999190615792565b10156128f157604051630b56455f60e41b815260040160405180910390fd5b64ff000080ff1981161515806148cf575060ff8116155b806148dd5750618000811615155b156148fb57604051633d3200a960e21b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205415614932576040516301b0a93560e01b815260040160405180910390fd5b60408051602080820183528382526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a25050565b60006004825110156149db5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c4461746100000000006044820152606401611250565b506020015190565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c001613ca1565b815180830151606091908015614a86576040516367e9985b60e01b815260040160405180910390fd5b50601f1981018452825184908481614a9d81614c04565b614aa791906157c1565b6001600160401b03811115614abe57614abe614f08565b6040519080825280601f01601f191660200182016040528015614ae8576020820181803683370190505b50604051602001614afc9493929190615d6c565b60405160208183030381529060405291505092915050565b600080606060005a9050866001600160a01b03168587604051614b379190615985565b60006040518083038160008787f1925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b606091505b50909450915083614b9b57614b90604082615dba565b5a11614b9b57600192505b5093509350939050565b600080606060005a9050866001600160a01b03168587604051614bc89190615985565b6000604051808303818686fa925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b60008082601f1611614c17576000614c1a565b60015b60ff16614c28602084615dba565b614c3291906159a1565b611366906020615ddc565b60006001600160801b03821115614ca65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611250565b5090565b60008282604051602001614cbf929190615df3565b60405160208183030381529060405280519060200120905092915050565b61024980615e7983390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461153657600080fd5b600060208284031215614d6c57600080fd5b8135614d7781614d45565b9392505050565b60008060408385031215614d9157600080fd5b8235614d9c81614d45565b91506020830135614dac81614d45565b809150509250929050565b60008083601f840112614dc957600080fd5b5081356001600160401b03811115614de057600080fd5b602083019150836020828501011115614df857600080fd5b9250929050565b801515811461153657600080fd5b60008060008060008060808789031215614e2657600080fd5b8635614e3181614d45565b955060208701356001600160401b03811115614e4c57600080fd5b614e5889828a01614db7565b9096509450506040870135614e6c81614dff565b925060608701356001600160401b03811115614e8757600080fd5b614e9389828a01614db7565b979a9699509497509295939492505050565b60005b83811015614ec0578181015183820152602001614ea8565b50506000910152565b60008151808452614ee1816020860160208601614ea5565b601f01601f19169290920160200192915050565b6020815260006113636020830184614ec9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f4657614f46614f08565b604052919050565b60006001600160401b03821115614f6757614f67614f08565b50601f01601f191660200190565b600082601f830112614f8657600080fd5b8135614f99614f9482614f4e565b614f1e565b818152846020838601011115614fae57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614fde57600080fd5b8235614fe981614d45565b915060208301356001600160401b0381111561500457600080fd5b61501085828601614f75565b9150509250929050565b60008060006060848603121561502f57600080fd5b833561503a81614d45565b925060208401356001600160401b0381111561505557600080fd5b61506186828701614f75565b92505060408401356001600160401b0381111561507d57600080fd5b61508986828701614f75565b9150509250925092565b6000602082840312156150a557600080fd5b81356001600160401b038111156150bb57600080fd5b61154784828501614f75565b602081526150db60208201835160ff169052565b600060208301516150f1604084018260ff169052565b5060408301516060830152606083015161511660808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a083015161016060c0840152615148610180840182614ec9565b905060c084015160e084015260e08401516101008401526101008401516101208401526101208401516151876101408501826001600160a01b03169052565b506101408401516001600160a01b038116610160850152509392505050565b60008060008060008060006080888a0312156151c157600080fd5b87356151cc81614d45565b965060208801356001600160401b038111156151e757600080fd5b6151f38a828b01614db7565b90975095505060408801356001600160401b0381111561521257600080fd5b61521e8a828b01614db7565b90955093505060608801356001600160401b0381111561523d57600080fd5b6152498a828b01614db7565b989b979a50959850939692959293505050565b60408152600061526f6040830185614ec9565b82810360208401526122968185614ec9565b60008060006040848603121561529657600080fd5b83356001600160401b038111156152ac57600080fd5b6152b886828701614db7565b909790965060209590950135949350505050565b600080602083850312156152df57600080fd5b82356001600160401b038111156152f557600080fd5b8301601f8101851361530657600080fd5b80356001600160401b0381111561531c57600080fd5b8560208260051b840101111561533157600080fd5b6020919091019590945092505050565b60008060008060008060a0878903121561535a57600080fd5b86356001600160401b0381111561537057600080fd5b61537c89828a01614db7565b909750955050602087013561539081614d45565b9350604087013592506060870135915060808701356153ae81614d45565b809150509295509295509295565b600080604083850312156153cf57600080fd5b50508035926020909101359150565b6000602082840312156153f057600080fd5b5035919050565b6000806000806060858703121561540d57600080fd5b84356001600160401b0381111561542357600080fd5b61542f87828801614db7565b909550935050602085013561544381614d45565b9396929550929360400135925050565b60008060008060006060868803121561546b57600080fd5b853561547681614d45565b945060208601356001600160401b0381111561549157600080fd5b61549d88828901614db7565b90955093505060408601356001600160401b038111156154bc57600080fd5b6154c888828901614db7565b969995985093965092949392505050565b6000806000604084860312156154ee57600080fd5b8335925060208401356001600160401b0381111561550b57600080fd5b61551786828701614db7565b9497909650939450505050565b6000806020838503121561553757600080fd5b82356001600160401b0381111561554d57600080fd5b61555985828601614db7565b90969095509350505050565b602080825282518282018190526000918401906040840190835b818110156155a65783516001600160a01b031683526020938401939092019160010161557f565b509095945050505050565b600080604083850312156155c457600080fd5b82356155cf81614d45565b946020939093013593505050565b600080600080600080600080600060c08a8c0312156155fb57600080fd5b893561560681614d45565b985060208a013561561681614d45565b975060408a0135965060608a01356001600160401b0381111561563857600080fd5b6156448c828d01614db7565b90975095505060808a01356001600160401b0381111561566357600080fd5b61566f8c828d01614db7565b90955093505060a08a01356001600160401b0381111561568e57600080fd5b61569a8c828d01614db7565b915080935050809150509295985092959850929598565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906156e490830186614ec9565b82810360808401526156f68186614ec9565b905082810360a08401526121198185614ec9565b8281526040602082015260006115476040830184614ec9565b6000806000806040858703121561573957600080fd5b84356001600160401b0381111561574f57600080fd5b61575b87828801614db7565b90955093505060208501356001600160401b0381111561577a57600080fd5b61578687828801614db7565b95989497509550505050565b6000602082840312156157a457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611366576113666157ab565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082601f83011261581157600080fd5b815161581f614f9482614f4e565b81815284602083860101111561583457600080fd5b611547826020830160208701614ea5565b60006020828403121561585757600080fd5b81516001600160401b0381111561586d57600080fd5b61154784828501615800565b60006020828403121561588b57600080fd5b8151614d7781614d45565b6000602082840312156158a857600080fd5b8151614d7781614dff565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820182811260008312801582168215821617156158f7576158f76157ab565b505092915050565b600060ff821660ff8103615915576159156157ab565b60010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006001820161597e5761597e6157ab565b5060010190565b60008251615997818460208701614ea5565b9190910192915050565b80820180821115611366576113666157ab565b600080604083850312156159c757600080fd5b82516001600160401b038111156159dd57600080fd5b6159e985828601615800565b92505060208301516001600160401b03811115615a0557600080fd5b61501085828601615800565b600080600080600060a08688031215615a2957600080fd5b8551602087015160408801519196509450615a4381614d45565b60608701519093506001600160e01b031981168114615a6157600080fd5b60808701519092506001600160401b03811115615a7d57600080fd5b615a8988828901615800565b9150509295509295909350565b60008060008060808587031215615aac57600080fd5b8451602086015160408701519195509350615ac681614d45565b6060860151909250615ad781614d45565b939692955090935050565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a060808201819052600090615b2390830184614ec9565b979650505050505050565b60008235605e1983360301811261599757600080fd5b600060208284031215615b5657600080fd5b813563ffffffff81168114614d7757600080fd5b6000808335601e19843603018112615b8157600080fd5b8301803591506001600160401b03821115615b9b57600080fd5b602001915036819003821315614df857600080fd5b600080600060608486031215615bc557600080fd5b8335615bd081614d45565b92506020840135615be081614d45565b929592945050506040919091013590565b600080600060608486031215615c0657600080fd5b8335615c1181614d45565b92506020840135915060408401356001600160401b0381111561507d57600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d4490830184614ec9565b60008060408385031215615c7957600080fd5b82356001600160401b03811115615c8f57600080fd5b615c9b85828601614f75565b92505060208301356001600160401b0381111561500457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906122969083018486615cb7565b60008060408385031215615d1857600080fd5b8251615d2381614dff565b60208401519092506001600160401b03811115615a0557600080fd5b6001600160a01b03858116825284166020820152606060408201819052600090611d449083018486615cb7565b60008551615d7e818460208a01614ea5565b82018581528451615d96816020808501908901614ea5565b8451910190615dac816020808501908801614ea5565b016020019695505050505050565b600082615dd757634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611366576113666157ab565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e06040820152600061154760e0830184614ec956fe6080604052348015600f57600080fd5b5061022a8061001f6000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea26469706673582212200be7dc4160bd041045497f295bc4dcbce9dd453202fd7b0b470b990a3e32293764736f6c634300081a0033a2646970667358221220a495ca2acb479680e696b26c5e86c123504c6c4bec8ca92e82baf92f0b79ee8d64736f6c634300081a0033";
16
16
  static readonly abi: readonly [{
17
17
  readonly inputs: readonly [{
18
18
  readonly internalType: "bool";
@@ -28,7 +28,11 @@ export declare class SuperfluidMock__factory extends ContractFactory {
28
28
  readonly type: "uint64";
29
29
  }, {
30
30
  readonly internalType: "address";
31
- readonly name: "erc2771Forwarder";
31
+ readonly name: "simpleForwarderAddress";
32
+ readonly type: "address";
33
+ }, {
34
+ readonly internalType: "address";
35
+ readonly name: "erc2771ForwarderAddress";
32
36
  readonly type: "address";
33
37
  }];
34
38
  readonly stateMutability: "nonpayable";
@@ -1 +1 @@
1
- {"version":3,"file":"SuperfluidMock__factory.d.ts","sourceRoot":"","sources":["../../../../../../../src/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EAGN,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACxB,MAAM,iEAAiE,CAAC;AAmiDzE,KAAK,+BAA+B,GAChC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,uBAAwB,SAAQ,eAAe;gBAC9C,GAAG,IAAI,EAAE,+BAA+B;IAQ3C,MAAM,CACb,aAAa,EAAE,OAAO,EACtB,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,EAAE,YAAY,EAC9B,gBAAgB,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,cAAc,CAAC;IASjB,oBAAoB,CAC3B,aAAa,EAAE,OAAO,EACtB,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,EAAE,YAAY,EAC9B,gBAAgB,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,kBAAkB;IASZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAGvC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB;IAIzD,MAAM,CAAC,QAAQ,CAAC,QAAQ,oynDAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,uBAAuB;IAGjD,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,cAAc;CAGlB"}
1
+ {"version":3,"file":"SuperfluidMock__factory.d.ts","sourceRoot":"","sources":["../../../../../../../src/typechain-types/factories/contracts/mocks/SuperfluidMock.t.sol/SuperfluidMock__factory.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EAGN,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EACV,cAAc,EACd,uBAAuB,EACxB,MAAM,iEAAiE,CAAC;AAwiDzE,KAAK,+BAA+B,GAChC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,uBAAwB,SAAQ,eAAe;gBAC9C,GAAG,IAAI,EAAE,+BAA+B;IAQ3C,MAAM,CACb,aAAa,EAAE,OAAO,EACtB,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,EAAE,YAAY,EAC9B,sBAAsB,EAAE,MAAM,EAC9B,uBAAuB,EAAE,MAAM,EAC/B,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,cAAc,CAAC;IAUjB,oBAAoB,CAC3B,aAAa,EAAE,OAAO,EACtB,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,EAAE,YAAY,EAC9B,sBAAsB,EAAE,MAAM,EAC9B,uBAAuB,EAAE,MAAM,EAC/B,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,kBAAkB;IAUZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAGvC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB;IAIzD,MAAM,CAAC,QAAQ,CAAC,QAAQ,oziDAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,uBAAuB;IAGjD,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,cAAc;CAGlB"}
@@ -25,7 +25,12 @@ const _abi = [
25
25
  },
26
26
  {
27
27
  internalType: "address",
28
- name: "erc2771Forwarder",
28
+ name: "simpleForwarderAddress",
29
+ type: "address",
30
+ },
31
+ {
32
+ internalType: "address",
33
+ name: "erc2771ForwarderAddress",
29
34
  type: "address",
30
35
  },
31
36
  ],
@@ -1570,7 +1575,7 @@ const _abi = [
1570
1575
  type: "function",
1571
1576
  },
1572
1577
  ];
1573
- const _bytecode = "0x61012060405234801561001157600080fd5b5060405161678e38038061678e833981016040819052610030916100c4565b83151560805282151560a0526001600160401b03821660c0526001600160a01b03811661010052604051849084908490849061006b906100a2565b604051809103906000f080158015610087573d6000803e3d6000fd5b506001600160a01b031660e052506101369650505050505050565b6104c2806162cc83390190565b805180151581146100bf57600080fd5b919050565b600080600080608085870312156100da57600080fd5b6100e3856100af565b93506100f1602086016100af565b60408601519093506001600160401b038116811461010e57600080fd5b60608601519092506001600160a01b038116811461012b57600080fd5b939692955090935050565b60805160a05160c05160e051610100516160f76101d56000396000818161049001526146f6015260008181610bd201526145ce015260008181610506015261317d0152600081816108a8015281816123a60152818161288201528181612b2d0152612dad015260008181610aec01528181610c8401528181610fa50152818161179c015281816118d401528181611a330152612cd501526160f76000f3fe60806040526004361061038c5760003560e01c80638ca48484116101dc578063bd3252c811610102578063e8dccb7d116100a0578063f53986611161006f578063f539866114610ba0578063f85263b914610bc0578063f9f522f414610bf4578063fa6e0cfe14610c3157600080fd5b8063e8dccb7d14610b0e578063eb5bf90114610b3d578063f2e55caf14610b6b578063f373305214610b8057600080fd5b8063c56a069d116100dc578063c56a069d14610a5b578063c60944a614610a88578063c6ae797314610aa8578063cd312ec414610ada57600080fd5b8063bd3252c814610a06578063bf42873414610a1b578063c4d66de814610a3b57600080fd5b8063ad3915c81161017a578063bb84cfa111610149578063bb84cfa11461096a578063bbe4fd50146109b3578063bced3ddc146109c6578063bd1c448b146109e657600080fd5b8063ad3915c8146108ea578063b6d200de1461090a578063b724211e1461092a578063ba48b5f81461094a57600080fd5b8063989b0c3e116101b6578063989b0c3e146108615780639903ad38146108815780639d297e3014610896578063a5dbbbcd146108ca57600080fd5b80638ca48484146107e45780638ceddd7a146108045780639378fa131461082f57600080fd5b806346951954116102c157806359a291411161025f5780637283100c1161022e5780637283100c14610766578063731aed6e1461078657806374041e02146107a4578063768fabb0146107c457600080fd5b806359a2914114610700578063670e77e3146107205780636ad3ca7d146107335780636b4f33351461074657600080fd5b806352d1902d1161029b57806352d1902d1461066357806354fbc493146106a057806357121e0c146106c0578063572b6c05146106e057600080fd5b80634695195414610603578063486ff0cd1461062357806350d75d251461064e57600080fd5b80632f89bf891161032e57806339255d5b1161030857806339255d5b146105405780633ca3ad4e146105605780633f6c923a146105a85780634329d293146105d557600080fd5b80632f89bf89146104b457806333511863146104d457806333d608f1146104f457600080fd5b80631e6d0a841161036a5780631e6d0a84146103f35780631e855cf314610429578063289b3c0d146104495780632ecfbda21461048157600080fd5b806306cecba8146103915780630c565075146103b357806315a024e1146103d3575b600080fd5b34801561039d57600080fd5b506103b16103ac366004614d5a565b610c51565b005b3480156103bf57600080fd5b506103b16103ce366004614d7e565b610e28565b3480156103df57600080fd5b506103b16103ee366004614d5a565b610eb8565b3480156103ff57600080fd5b5061041361040e366004614e0d565b611108565b6040516104209190614ef5565b60405180910390f35b34801561043557600080fd5b50610413610444366004614fcb565b611354565b34801561045557600080fd5b506000546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610420565b34801561048d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610469565b3480156104c057600080fd5b506103b16104cf366004614d5a565b61136c565b3480156104e057600080fd5b506103b16104ef366004614d5a565b61152a565b34801561050057600080fd5b506105287f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b039091168152602001610420565b34801561054c57600080fd5b5061041361055b36600461501a565b611539565b34801561056c57600080fd5b5061059861057b366004614d5a565b6001600160a01b0316600090815260046020526040902054151590565b6040519015158152602001610420565b3480156105b457600080fd5b506105c86105c3366004615093565b61154f565b60405161042091906150c7565b3480156105e157600080fd5b506105f56105f03660046151a6565b611560565b60405161042092919061525c565b34801561060f57600080fd5b506103b161061e366004614d5a565b611769565b34801561062f57600080fd5b50604080518082019091526002815261763160f01b6020820152610413565b34801561065a57600080fd5b50610469611862565b34801561066f57600080fd5b507fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b604051908152602001610420565b3480156106ac57600080fd5b506103b16106bb366004614d5a565b611891565b3480156106cc57600080fd5b506103b16106db366004614d5a565b611b14565b3480156106ec57600080fd5b506105986106fb366004614d5a565b611be2565b34801561070c57600080fd5b5061041361071b366004615281565b611c6c565b6103b161072e3660046152cc565b611d4e565b6103b16107413660046152cc565b611d64565b34801561075257600080fd5b50610598610761366004614d5a565b611d6f565b34801561077257600080fd5b506103b1610781366004614d5a565b611d93565b34801561079257600080fd5b506003546001600160a01b0316610469565b3480156107b057600080fd5b506104136107bf366004614e0d565b611e3b565b3480156107d057600080fd5b506104136107df366004615341565b611f8a565b3480156107f057600080fd5b506105986107ff366004614d5a565b612126565b34801561081057600080fd5b5061081a61010081565b60405163ffffffff9091168152602001610420565b34801561083b57600080fd5b5061084f61084a366004614d5a565b6121eb565b60405160ff9091168152602001610420565b34801561086d57600080fd5b5061041361087c366004615281565b61220c565b34801561088d57600080fd5b506103b161229f565b3480156108a257600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d657600080fd5b506106926108e53660046153bc565b61235a565b3480156108f657600080fd5b506103b16109053660046153de565b6123a4565b34801561091657600080fd5b506104696109253660046153de565b6123f8565b34801561093657600080fd5b506104136109453660046153f7565b61245f565b34801561095657600080fd5b50610413610965366004615453565b612520565b34801561097657600080fd5b50610598610985366004614d7e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109bf57600080fd5b5042610692565b3480156109d257600080fd5b506106926109e13660046153bc565b612837565b3480156109f257600080fd5b506103b1610a013660046154d9565b612880565b348015610a1257600080fd5b50610692600181565b348015610a2757600080fd5b50610598610a36366004615524565b6128f6565b348015610a4757600080fd5b506103b1610a56366004614d5a565b612937565b348015610a6757600080fd5b50610a7b610a763660046153de565b612a1b565b6040516104209190615565565b348015610a9457600080fd5b506103b1610aa33660046155b1565b612b00565b348015610ab457600080fd5b50610ac8610ac33660046155dd565b612b7f565b604051610420969594939291906156b1565b348015610ae657600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b348015610b1a57600080fd5b50610598610b293660046153de565b600090815260026020526040902054151590565b348015610b4957600080fd5b50610b5d610b583660046154d9565b612c6c565b60405161042092919061570a565b348015610b7757600080fd5b50610469612cb8565b348015610b8c57600080fd5b506103b1610b9b3660046155b1565b612d80565b348015610bac57600080fd5b50610413610bbb366004615723565b612e8b565b348015610bcc57600080fd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610c0057600080fd5b50610c14610c0f366004614d5a565b612f83565b604080519315158452911515602084015290820152606001610420565b348015610c3d57600080fd5b506103b1610c4c366004614d7e565b612fd2565b6000546201000090046001600160a01b03163314610c82576040516362e9152760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015610cc1576040516314f72c9f60e01b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d259190615792565b600081815260026020526040812054919250819003610d5757604051630e4f4df560e11b815260040160405180910390fd5b60006001610d6581846157c1565b81548110610d7557610d756157d4565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b158015610dc857600080fd5b505af1158015610ddc573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b6000546201000090046001600160a01b03163314610e59576040516362e9152760e11b815260040160405180910390fd5b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f28397090602401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505050505050565b6000546201000090046001600160a01b03163314610ee9576040516362e9152760e11b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190615792565b60008181526002602052604090205490915015610f7d57604051631b93bb7560e31b815260040160405180910390fd5b60015461010011610fa157604051630f85034f60e31b815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000061105b576000604051610fd690614cdd565b604051809103906000f080158015610ff2573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050508091505061105e565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d1906110fb90849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b606061111333612126565b6111305760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611172925083915061312d9050565b61117e5761117e6157ea565b6000806111f88a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561130d5761120b81613214565b156112a557808060200190518101906112249190615845565b935061122f8461312d565b6112a057866112595760405163a85ba64f60e01b8152601460048201526024015b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060149050613268565b611347565b866112c65760405163a85ba64f60e01b815260166004820152602401611250565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060169050613268565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061136333846000856132e9565b90505b92915050565b6000546201000090046001600160a01b0316331461139d576040516362e9152760e11b815260040160405180910390fd5b604051635b69006f60e11b81527fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a9466004820152600090309063b6d200de90602401602060405180830381865afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190615879565b90506000816001600160a01b0316635437dd976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190615879565b604051631b2ce7f360e11b81526001600160a01b03858116600483015291925090821690633659cfe690602401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50506040516001600160a01b038681168252841692507f052cea8931962dd445ef48b0b998d3056bd0705f437087d60fe3c46a3fa09e1f91506020015b60405180910390a2505050565b61153681611b1e613268565b50565b606061154733858585613526565b949350505050565b611557614cea565b61136682613637565b60608083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a5925083915061312d9050565b6115c55760405163a85ba64f60e01b815260146004820152602401611250565b896115cf81612126565b6115ec5760405163619c535960e01b815260040160405180910390fd5b600061162d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461165e5760405163066875e160e11b815260040160405180910390fd5b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a08301526116aa82613702565b955060006116f08e8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508c91506138369050565b96509050801561174f578580602001905181019061170e9190615845565b96506117198761312d565b611725576117256157ea565b61172e8761154f565b6001600160a01b0383166060820152925061174883613702565b9650611758565b611758866138f1565b505050505097509795505050505050565b6000546201000090046001600160a01b0316331461179a576040516362e9152760e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156117d9576040516314f72c9f60e01b815260040160405180910390fd5b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183b9190615896565b156118595760405163474e764160e01b815260040160405180910390fd5b611536816139fc565b600061188c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b031633146118c2576040516362e9152760e11b815260040160405180910390fd5b6003546001600160a01b0316611a31577f00000000000000000000000000000000000000000000000000000000000000006119a857600060405161190590614cdd565b604051809103906000f080158015611921573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b039490941693909317909255506119c49050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b50505050611ad0565b7f000000000000000000000000000000000000000000000000000000000000000015611a70576040516314f72c9f60e01b815260040160405180910390fd5b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b33600081815260046020526040902054611b41576040516302eb3f7160e61b815260040160405180910390fd5b6001600160a01b038216600090815260046020526040902054611b7757604051634b5518af60e11b815260040160405180910390fd5b611b80826121eb565b60ff16611b8c826121eb565b60ff1611611bad57604051630447252760e41b815260040160405180910390fd5b6001600160a01b039081166000908152600560209081526040808320949093168252929092529020805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba3083611c0586613c36565b6040518463ffffffff1660e01b8152600401611c23939291906158b3565b602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190615792565b151592915050565b6060611c7733612126565b611c945760405163619c535960e01b815260040160405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cd6925083915061312d9050565b611ce257611ce26157ea565b6000611d2386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b9050838161010001818151611d3891906158d7565b905250611d4481613702565b9695505050505050565b611d60611d59613cbe565b8383613d26565b5050565b611d60338383613d26565b6001600160a01b038116600090815260046020526040812054618000161515611366565b6000546201000090046001600160a01b03163314611dc4576040516362e9152760e11b815260040160405180910390fd5b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060611e4633612126565b611e635760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ea5925083915061312d9050565b611eb157611eb16157ea565b600080611f2b8a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561134757611f3e81613214565b15611f5e5780806020019051810190611f579190615845565b9350611347565b86611f7f5760405163a85ba64f60e01b815260166004820152602401611250565b6113478a6016613268565b6060611f9533612126565b611fb25760405163619c535960e01b815260040160405180910390fd5b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ff4925083915061312d9050565b612000576120006157ea565b600061204189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905061206881606001516001600160a01b0316600090815260046020526040902054151590565b801561207c57506001816000015160ff1610155b156120cf5760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff166120cf5760405163a85ba64f60e01b8152601e6004820152602401611250565b8051816120db826158ff565b60ff169052506003602082015260c0810186905261010081018590526001600160a01b03808816610120830152841661014082015261211981613702565b9998505050505050505050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190615792565b600081815260026020526040902054909150801580159061154757506001600160a01b03841660016121bd81846157c1565b815481106121cd576121cd6157d4565b6000918252602090912001546001600160a01b031614949350505050565b6001600160a01b03811660009081526004602052604081205460ff16611366565b606061221733612126565b6122345760405163619c535960e01b815260040160405180910390fd5b600061227585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905082816101000181815161228a91906158d7565b90525061229681613702565b95945050505050565b600054610100900460ff16158080156122bf5750600054600160ff909116105b806122d95750303b1580156122d9575060005460ff166001145b6122f55760405162461bcd60e51b81526004016112509061591e565b6000805460ff191660011790558015612318576000805461ff0019166101001790555b8015611536576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611b09565b60008181526002602052604081205480820361238957604051630e4f4df560e11b815260040160405180910390fd5b6123946001826157c1565b6001901b19841691505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156123ee576123ee604051806040016040528060028152602001616b3160f01b8152503261480f565b61153633826148b8565b60008181526002602052604081205480820361242757604051630e4f4df560e11b815260040160405180910390fd5b600161243381836157c1565b81548110612443576124436157d4565b6000918252602090912001546001600160a01b03169392505050565b606061246a33612126565b6124875760405163619c535960e01b815260040160405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124c9925083915061312d9050565b6124d5576124d56157ea565b6124df8484613268565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612564925083915061312d9050565b6125845760405163a85ba64f60e01b815260146004820152602401611250565b6001600160a01b03871660009081526004602052604081205488918190036125bf5760405163163cbe4360e01b815260040160405180910390fd5b6180008116156125e157604051628e12d960e21b815260040160405180910390fd5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506126229150839050614987565b90506001600160e01b031981166330d9c91560e01b148061265357506001600160e01b0319811663d86ed3e560e01b145b8061266e57506001600160e01b03198116630221347d60e61b145b8061268957506001600160e01b0319811663230dbd2960e01b145b806126a457506001600160e01b03198116635f9e7d7760e01b145b806126bf57506001600160e01b031981166353c11f9960e01b145b156126dd576040516377a14afb60e11b815260040160405180910390fd5b600061271e89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461274f576040516311cfdef560e21b815260040160405180910390fd5b6060810180513390915261276282613702565b97506000806127a98f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508f91506138369050565b91509150811561281c57808060200190518101906127c79190615845565b99506127d28a61312d565b6127f25760405163a85ba64f60e01b815260146004820152602401611250565b6127fb8a61154f565b6001600160a01b0384166060820152935061281584613702565b9950612825565b612825816138f1565b50505050505050505095945050505050565b60008181526002602052604081205480820361286657604051630e4f4df560e11b815260040160405180910390fd5b6128716001826157c1565b6001901b841791505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156128e7576128e782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525032925061480f915050565b6128f133846148b8565b505050565b600061136383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061312d92505050565b600054610100900460ff16158080156129575750600054600160ff909116105b806129715750303b158015612971575060005460ff166001145b61298d5760405162461bcd60e51b81526004016112509061591e565b6000805460ff1916600117905580156129b0576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015611d60576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60606000806001805490506001600160401b03811115612a3d57612a3d614f08565b604051908082528060200260200182016040528015612a66578160200160208202803683370190505b50925060009050600091505b600154821015612af8576001821b841615612aed5760018281548110612a9a57612a9a6157d4565b6000918252602090912001546001600160a01b03168382612aba8161596c565b935081518110612acc57612acc6157d4565b60200260200101906001600160a01b031690816001600160a01b0316815250505b816001019150612a72565b825250919050565b816001600160a01b03163b600003612b2b5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b7557612b75604051806040016040528060028152602001616b3160f01b8152503361480f565b611d6082826148b8565b600080600060608060608e8e8e8e8e8e8e8e8e85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815293995096975094959394509192909150859085908190840183828082843760009201919091525050604080516020601f87018190048102820181019092528581529397509495509293919250849184915081908401838280828437600092019190915250999f50979d50959b50939950919750919550505050505099509950995099509950999350505050565b6000606084848481818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250959b929a509198505050505050505050565b6003546000906001600160a01b0316612cd357612cd36157ea565b7f000000000000000000000000000000000000000000000000000000000000000015612d0957506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c9190615879565b816001600160a01b03163b600003612dab5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b75576000612ddc336149e3565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba90612e1b903090859087906004016158b3565b602060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c9190615792565b600114905080612e7f57604051630b56455f60e41b815260040160405180910390fd5b5050611d6082826148b8565b60606000612f0286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250614a5d92505050565b90506000306001600160a01b031682604051612f1e9190615985565b600060405180830381855afa9150503d8060008114612f59576040519150601f19603f3d011682016040523d82523d6000602084013e612f5e565b606091505b50935090508015612f70575050611547565b612f79836138f1565b5050949350505050565b6001600160a01b038116600090815260046020908152604080832081519283019091525480825215801592918291612fca57805161800081161515935064ff000000001691505b509193909250565b6000546201000090046001600160a01b03163314613003576040516362e9152760e11b815260040160405180910390fd5b60006001600160a01b03821661308f57600360009054906101000a90046001600160a01b03166001600160a01b0316639470a5b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308a9190615879565b613091565b815b6040516311a5465560e21b81526001600160a01b03808316600483015291925090841690634695195490602401600060405180830381600087803b1580156130d857600080fd5b505af11580156130ec573d6000803e3d6000fd5b50506040516001600160a01b038481168252861692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd3915060200161151d565b600081516000141580156113665750600654825160208401201492915050565b600060606001600160a01b038716613167576131676157ea565b6131718484614a5d565b93506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166000876131b4576131af898784614b14565b6131bf565b6131bf898784614ba5565b91955090935090508361320857806131ef57866131e4576131df836138f1565b613208565b6131df89600a613268565b604051636a7aea4b60e11b815260040160405180910390fd5b50509550959350505050565b600060408251101561322857506000919050565b602082810151906000908214613242575060009392505050565b50604083015161325181614c04565b61325c9060406159a1565b84511492505050919050565b6001600160a01b038216600090815260046020526040812054618000169003611d60576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b906132dd9084815260200190565b60405180910390a25050565b600654606090156133105760405163a85ba64f60e01b815260156004820152602401611250565b6001600160a01b038416600090815260046020526040812054859181900361334b5760405163163cbe4360e01b815260040160405180910390fd5b61800081161561336d57604051628e12d960e21b815260040160405180910390fd5b83600061337982614987565b90506001600160e01b031981166330d9c91560e01b14806133aa57506001600160e01b0319811663d86ed3e560e01b145b806133c557506001600160e01b03198116630221347d60e61b145b806133e057506001600160e01b0319811663230dbd2960e01b145b806133fb57506001600160e01b03198116635f9e7d7760e01b145b8061341657506001600160e01b031981166353c11f9960e01b145b15613434576040516377a14afb60e11b815260040160405180910390fd5b60408051610160810182526000808252600260208084019190915242838501526001600160a01b03808e16606085015260808401839052845191820190945281815260a083015260c0820181905260e082018190526101008201819052918a1661012082015261014081018290526134ab90613702565b905060006134bb8a898b85613836565b97509050801561350957868060200190518101906134d99190615845565b91506134e48261312d565b6135045760405163a85ba64f60e01b815260146004820152602401611250565b613512565b613512876138f1565b505060006006555092979650505050505050565b6006546060901561354d5760405163a85ba64f60e01b815260156004820152602401611250565b8361355781612126565b6135745760405163619c535960e01b815260040160405180910390fd5b600061357f85614987565b60408051610160810182526000808252600160208301529293506136029181014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250613702565b905060006136138888600085613836565b955090508061362557613625856138f1565b50506000600655509095945050505050565b61363f614cea565b6060808380602001905181019061365691906159b4565b815191935091506000906136739084016020908101908501615a11565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff90911685528251600092506136c4919084018101908401615a96565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b60606001826000015160ff1611156137305760405163a85ba64f60e01b815260286004820152602401611250565b815160208084015160009260ff1664ff000000009190921b161790506000608061375d8560e00151614c3d565b6001600160801b0316901b6137758560c00151614c3d565b6001600160801b0316179050818460400151856060015186608001518760a001516040516020016137aa959493929190615ae2565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052613814929160200161525c565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038616613850576138506157ea565b61385a8584614a5d565b9450856001600160a01b031684866040516138759190615985565b60006040518083038185875af1925050503d80600081146138b2576040519150601f19603f3d011682016040523d82523d6000602084013e6138b7565b606091505b50909250905081156138e85780516000036138e85760405163a85ba64f60e01b815260166004820152602401611250565b94509492505050565b6004815110156139435760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a207461726765742072657665727428290000000000006044820152606401611250565b602081015163b1b7848f60e01b6001600160e01b03198216016139f35760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161125091849101614ef5565b81518060208401fd5b6000613a267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603613a7c5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611250565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ade9190615792565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba7414613b585760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611250565b6001600160a01b0381163003613bb05760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611250565b613bd8817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b038416602083015201611b09565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b600060183610801590613cd55750613cd533611be2565b613d195760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b6044820152606401611250565b5060131936013560601c90565b60005b818110156147cd576000838383818110613d4557613d456157d4565b9050602002810190613d579190615b2e565b613d65906020810190615b44565b905060001963ffffffff821601613e5957600080858585818110613d8b57613d8b6157d4565b9050602002810190613d9d9190615b2e565b613dab906040810190615b6a565b810190613db891906155b1565b91509150858585818110613dce57613dce6157d4565b9050602002810190613de09190615b2e565b613df1906040810190602001614d5a565b6001600160a01b03166362aa52878884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b600060405180830381600087803b158015613e3a57600080fd5b505af1158015613e4e573d6000803e3d6000fd5b5050505050506147c4565b60011963ffffffff821601613f64576000806000868686818110613e7f57613e7f6157d4565b9050602002810190613e919190615b2e565b613e9f906040810190615b6a565b810190613eac9190615bb0565b925092509250868686818110613ec457613ec46157d4565b9050602002810190613ed69190615b2e565b613ee7906040810190602001614d5a565b604051630b682aeb60e11b81526001600160a01b038a81166004830152858116602483015284811660448301526064820184905291909116906316d055d6906084015b600060405180830381600087803b158015613f4457600080fd5b505af1158015613f58573d6000803e3d6000fd5b505050505050506147c4565b60021963ffffffff821601614023576000806000868686818110613f8a57613f8a6157d4565b9050602002810190613f9c9190615b2e565b613faa906040810190615b6a565b810190613fb79190615bf1565b925092509250868686818110613fcf57613fcf6157d4565b9050602002810190613fe19190615b2e565b613ff2906040810190602001614d5a565b6001600160a01b031663ca0c1e7f898585856040518563ffffffff1660e01b8152600401613f2a9493929190615c33565b60031963ffffffff8216016140dc57600080858585818110614047576140476157d4565b90506020028101906140599190615b2e565b614067906040810190615b6a565b81019061407491906155b1565b9150915085858581811061408a5761408a6157d4565b905060200281019061409c9190615b2e565b6140ad906040810190602001614d5a565b6001600160a01b0316634b2763b38884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60041963ffffffff82160161419557600080858585818110614100576141006157d4565b90506020028101906141129190615b2e565b614120906040810190615b6a565b81019061412d91906155b1565b91509150858585818110614143576141436157d4565b90506020028101906141559190615b2e565b614166906040810190602001614d5a565b6001600160a01b031663c780fd828884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60641963ffffffff82160161428a578383838181106141b6576141b66157d4565b90506020028101906141c89190615b2e565b6141d9906040810190602001614d5a565b6001600160a01b031663ca789464868686868181106141fa576141fa6157d4565b905060200281019061420c9190615b2e565b61421a906040810190615b6a565b81019061422791906153de565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561426d57600080fd5b505af1158015614281573d6000803e3d6000fd5b505050506147c4565b60651963ffffffff8216016142ef578383838181106142ab576142ab6157d4565b90506020028101906142bd9190615b2e565b6142ce906040810190602001614d5a565b6001600160a01b031663245887fc868686868181106141fa576141fa6157d4565b60661963ffffffff8216016143a857600080858585818110614313576143136157d4565b90506020028101906143259190615b2e565b614333906040810190615b6a565b81019061434091906155b1565b91509150858585818110614356576143566157d4565b90506020028101906143689190615b2e565b614379906040810190602001614d5a565b6001600160a01b0316631ae88ffc8884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60671963ffffffff821601614461576000808585858181106143cc576143cc6157d4565b90506020028101906143de9190615b2e565b6143ec906040810190615b6a565b8101906143f991906155b1565b9150915085858581811061440f5761440f6157d4565b90506020028101906144219190615b2e565b614432906040810190602001614d5a565b6001600160a01b03166347ba7ad18884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60c81963ffffffff8216016144fe57600080858585818110614485576144856157d4565b90506020028101906144979190615b2e565b6144a5906040810190615b6a565b8101906144b29190615c66565b915091506144f6878787878181106144cc576144cc6157d4565b90506020028101906144de9190615b2e565b6144ef906040810190602001614d5a565b8484613526565b5050506147c4565b60c91963ffffffff8216016145b9576145b385858585818110614523576145236157d4565b90506020028101906145359190615b2e565b614546906040810190602001614d5a565b47878787818110614559576145596157d4565b905060200281019061456b9190615b2e565b614579906040810190615b6a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132e992505050565b506147c4565b61012c1963ffffffff8216016146e1576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166322bee4944788888881811061460e5761460e6157d4565b90506020028101906146209190615b2e565b614631906040810190602001614d5a565b898989818110614643576146436157d4565b90506020028101906146559190615b2e565b614663906040810190615b6a565b6040518563ffffffff1660e01b815260040161468193929190615ce0565b60006040518083038185885af115801561469f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526146c89190810190615d05565b91509150816146da576146da816138f1565b50506147c4565b61012d1963ffffffff8216016147ab576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663177ec59447888888818110614736576147366157d4565b90506020028101906147489190615b2e565b614759906040810190602001614d5a565b8a8a8a8a81811061476c5761476c6157d4565b905060200281019061477e9190615b2e565b61478c906040810190615b6a565b6040518663ffffffff1660e01b81526004016146819493929190615d3f565b60405163b477011560e01b815260040160405180910390fd5b50600101613d29565b5047156128f1576040516001600160a01b038416904780156108fc02916000818181858888f19350505050158015614809573d6000803e3d6000fd5b50505050565b600061481b8284614caa565b6000805460405163407b865d60e11b81529293504292620100009091046001600160a01b0316916380f70cba9161485891309187906004016158b3565b602060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148999190615792565b10156128f157604051630b56455f60e41b815260040160405180910390fd5b64ff000080ff1981161515806148cf575060ff8116155b806148dd5750618000811615155b156148fb57604051633d3200a960e21b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205415614932576040516301b0a93560e01b815260040160405180910390fd5b60408051602080820183528382526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a25050565b60006004825110156149db5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c4461746100000000006044820152606401611250565b506020015190565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c001613ca1565b815180830151606091908015614a86576040516367e9985b60e01b815260040160405180910390fd5b50601f1981018452825184908481614a9d81614c04565b614aa791906157c1565b6001600160401b03811115614abe57614abe614f08565b6040519080825280601f01601f191660200182016040528015614ae8576020820181803683370190505b50604051602001614afc9493929190615d6c565b60405160208183030381529060405291505092915050565b600080606060005a9050866001600160a01b03168587604051614b379190615985565b60006040518083038160008787f1925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b606091505b50909450915083614b9b57614b90604082615dba565b5a11614b9b57600192505b5093509350939050565b600080606060005a9050866001600160a01b03168587604051614bc89190615985565b6000604051808303818686fa925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b60008082601f1611614c17576000614c1a565b60015b60ff16614c28602084615dba565b614c3291906159a1565b611366906020615ddc565b60006001600160801b03821115614ca65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611250565b5090565b60008282604051602001614cbf929190615df3565b60405160208183030381529060405280519060200120905092915050565b61024980615e7983390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461153657600080fd5b600060208284031215614d6c57600080fd5b8135614d7781614d45565b9392505050565b60008060408385031215614d9157600080fd5b8235614d9c81614d45565b91506020830135614dac81614d45565b809150509250929050565b60008083601f840112614dc957600080fd5b5081356001600160401b03811115614de057600080fd5b602083019150836020828501011115614df857600080fd5b9250929050565b801515811461153657600080fd5b60008060008060008060808789031215614e2657600080fd5b8635614e3181614d45565b955060208701356001600160401b03811115614e4c57600080fd5b614e5889828a01614db7565b9096509450506040870135614e6c81614dff565b925060608701356001600160401b03811115614e8757600080fd5b614e9389828a01614db7565b979a9699509497509295939492505050565b60005b83811015614ec0578181015183820152602001614ea8565b50506000910152565b60008151808452614ee1816020860160208601614ea5565b601f01601f19169290920160200192915050565b6020815260006113636020830184614ec9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f4657614f46614f08565b604052919050565b60006001600160401b03821115614f6757614f67614f08565b50601f01601f191660200190565b600082601f830112614f8657600080fd5b8135614f99614f9482614f4e565b614f1e565b818152846020838601011115614fae57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614fde57600080fd5b8235614fe981614d45565b915060208301356001600160401b0381111561500457600080fd5b61501085828601614f75565b9150509250929050565b60008060006060848603121561502f57600080fd5b833561503a81614d45565b925060208401356001600160401b0381111561505557600080fd5b61506186828701614f75565b92505060408401356001600160401b0381111561507d57600080fd5b61508986828701614f75565b9150509250925092565b6000602082840312156150a557600080fd5b81356001600160401b038111156150bb57600080fd5b61154784828501614f75565b602081526150db60208201835160ff169052565b600060208301516150f1604084018260ff169052565b5060408301516060830152606083015161511660808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a083015161016060c0840152615148610180840182614ec9565b905060c084015160e084015260e08401516101008401526101008401516101208401526101208401516151876101408501826001600160a01b03169052565b506101408401516001600160a01b038116610160850152509392505050565b60008060008060008060006080888a0312156151c157600080fd5b87356151cc81614d45565b965060208801356001600160401b038111156151e757600080fd5b6151f38a828b01614db7565b90975095505060408801356001600160401b0381111561521257600080fd5b61521e8a828b01614db7565b90955093505060608801356001600160401b0381111561523d57600080fd5b6152498a828b01614db7565b989b979a50959850939692959293505050565b60408152600061526f6040830185614ec9565b82810360208401526122968185614ec9565b60008060006040848603121561529657600080fd5b83356001600160401b038111156152ac57600080fd5b6152b886828701614db7565b909790965060209590950135949350505050565b600080602083850312156152df57600080fd5b82356001600160401b038111156152f557600080fd5b8301601f8101851361530657600080fd5b80356001600160401b0381111561531c57600080fd5b8560208260051b840101111561533157600080fd5b6020919091019590945092505050565b60008060008060008060a0878903121561535a57600080fd5b86356001600160401b0381111561537057600080fd5b61537c89828a01614db7565b909750955050602087013561539081614d45565b9350604087013592506060870135915060808701356153ae81614d45565b809150509295509295509295565b600080604083850312156153cf57600080fd5b50508035926020909101359150565b6000602082840312156153f057600080fd5b5035919050565b6000806000806060858703121561540d57600080fd5b84356001600160401b0381111561542357600080fd5b61542f87828801614db7565b909550935050602085013561544381614d45565b9396929550929360400135925050565b60008060008060006060868803121561546b57600080fd5b853561547681614d45565b945060208601356001600160401b0381111561549157600080fd5b61549d88828901614db7565b90955093505060408601356001600160401b038111156154bc57600080fd5b6154c888828901614db7565b969995985093965092949392505050565b6000806000604084860312156154ee57600080fd5b8335925060208401356001600160401b0381111561550b57600080fd5b61551786828701614db7565b9497909650939450505050565b6000806020838503121561553757600080fd5b82356001600160401b0381111561554d57600080fd5b61555985828601614db7565b90969095509350505050565b602080825282518282018190526000918401906040840190835b818110156155a65783516001600160a01b031683526020938401939092019160010161557f565b509095945050505050565b600080604083850312156155c457600080fd5b82356155cf81614d45565b946020939093013593505050565b600080600080600080600080600060c08a8c0312156155fb57600080fd5b893561560681614d45565b985060208a013561561681614d45565b975060408a0135965060608a01356001600160401b0381111561563857600080fd5b6156448c828d01614db7565b90975095505060808a01356001600160401b0381111561566357600080fd5b61566f8c828d01614db7565b90955093505060a08a01356001600160401b0381111561568e57600080fd5b61569a8c828d01614db7565b915080935050809150509295985092959850929598565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906156e490830186614ec9565b82810360808401526156f68186614ec9565b905082810360a08401526121198185614ec9565b8281526040602082015260006115476040830184614ec9565b6000806000806040858703121561573957600080fd5b84356001600160401b0381111561574f57600080fd5b61575b87828801614db7565b90955093505060208501356001600160401b0381111561577a57600080fd5b61578687828801614db7565b95989497509550505050565b6000602082840312156157a457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611366576113666157ab565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082601f83011261581157600080fd5b815161581f614f9482614f4e565b81815284602083860101111561583457600080fd5b611547826020830160208701614ea5565b60006020828403121561585757600080fd5b81516001600160401b0381111561586d57600080fd5b61154784828501615800565b60006020828403121561588b57600080fd5b8151614d7781614d45565b6000602082840312156158a857600080fd5b8151614d7781614dff565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820182811260008312801582168215821617156158f7576158f76157ab565b505092915050565b600060ff821660ff8103615915576159156157ab565b60010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006001820161597e5761597e6157ab565b5060010190565b60008251615997818460208701614ea5565b9190910192915050565b80820180821115611366576113666157ab565b600080604083850312156159c757600080fd5b82516001600160401b038111156159dd57600080fd5b6159e985828601615800565b92505060208301516001600160401b03811115615a0557600080fd5b61501085828601615800565b600080600080600060a08688031215615a2957600080fd5b8551602087015160408801519196509450615a4381614d45565b60608701519093506001600160e01b031981168114615a6157600080fd5b60808701519092506001600160401b03811115615a7d57600080fd5b615a8988828901615800565b9150509295509295909350565b60008060008060808587031215615aac57600080fd5b8451602086015160408701519195509350615ac681614d45565b6060860151909250615ad781614d45565b939692955090935050565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a060808201819052600090615b2390830184614ec9565b979650505050505050565b60008235605e1983360301811261599757600080fd5b600060208284031215615b5657600080fd5b813563ffffffff81168114614d7757600080fd5b6000808335601e19843603018112615b8157600080fd5b8301803591506001600160401b03821115615b9b57600080fd5b602001915036819003821315614df857600080fd5b600080600060608486031215615bc557600080fd5b8335615bd081614d45565b92506020840135615be081614d45565b929592945050506040919091013590565b600080600060608486031215615c0657600080fd5b8335615c1181614d45565b92506020840135915060408401356001600160401b0381111561507d57600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d4490830184614ec9565b60008060408385031215615c7957600080fd5b82356001600160401b03811115615c8f57600080fd5b615c9b85828601614f75565b92505060208301356001600160401b0381111561500457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906122969083018486615cb7565b60008060408385031215615d1857600080fd5b8251615d2381614dff565b60208401519092506001600160401b03811115615a0557600080fd5b6001600160a01b03858116825284166020820152606060408201819052600090611d449083018486615cb7565b60008551615d7e818460208a01614ea5565b82018581528451615d96816020808501908901614ea5565b8451910190615dac816020808501908801614ea5565b016020019695505050505050565b600082615dd757634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611366576113666157ab565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e06040820152600061154760e0830184614ec956fe6080604052348015600f57600080fd5b5061022a8061001f6000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea26469706673582212200be7dc4160bd041045497f295bc4dcbce9dd453202fd7b0b470b990a3e32293764736f6c634300081a0033a2646970667358221220887c1c40834d60b7c8efbf5f13bc3e60d92af90c44cc316d443a9b38df81fe8c64736f6c634300081a00336080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104488061007a6000396000f3fe60806040526004361061004a5760003560e01c806322bee4941461004f578063715018a6146100795780638da5cb5b14610090578063a2852784146100b8578063f2fde38b146100d8575b600080fd5b61006261005d366004610300565b6100f8565b604051610070929190610387565b60405180910390f35b34801561008557600080fd5b5061008e61016e565b005b34801561009c57600080fd5b506000546040516001600160a01b039091168152602001610070565b3480156100c457600080fd5b5061008e6100d33660046103de565b610182565b3480156100e457600080fd5b5061008e6100f33660046103de565b6101c3565b60006060610104610241565b846001600160a01b031634858560405161011f929190610402565b60006040518083038185875af1925050503d806000811461015c576040519150601f19603f3d011682016040523d82523d6000602084013e610161565b606091505b5090969095509350505050565b610176610241565b610180600061029b565b565b61018a610241565b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156101bf573d6000803e3d6000fd5b5050565b6101cb610241565b6001600160a01b0381166102355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023e8161029b565b50565b6000546001600160a01b031633146101805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023e57600080fd5b60008060006040848603121561031557600080fd5b8335610320816102eb565b9250602084013567ffffffffffffffff81111561033c57600080fd5b8401601f8101861361034d57600080fd5b803567ffffffffffffffff81111561036457600080fd5b86602082840101111561037657600080fd5b939660209190910195509293505050565b8215158152604060208201526000825180604084015260005b818110156103bd57602081860181015160608684010152016103a0565b506000606082850101526060601f19601f8301168401019150509392505050565b6000602082840312156103f057600080fd5b81356103fb816102eb565b9392505050565b818382376000910190815291905056fea264697066735822122019b2ba226200e0e93d86ecd4f0d20893a71c4429a898fc967cb0c11b1cc1c4c464736f6c634300081a0033";
1578
+ const _bytecode = "0x61012060405234801561001157600080fd5b506040516162963803806162968339810160408190526100309161008c565b93151560805291151560a0526001600160401b031660c0526001600160a01b0390811660e0521661010052610100565b8051801515811461007057600080fd5b919050565b80516001600160a01b038116811461007057600080fd5b600080600080600060a086880312156100a457600080fd5b6100ad86610060565b94506100bb60208701610060565b60408701519094506001600160401b03811681146100d857600080fd5b92506100e660608701610075565b91506100f460808701610075565b90509295509295909350565b60805160a05160c05160e051610100516160f761019f6000396000818161049001526146f6015260008181610bd201526145ce015260008181610506015261317d0152600081816108a8015281816123a60152818161288201528181612b2d0152612dad015260008181610aec01528181610c8401528181610fa50152818161179c015281816118d401528181611a330152612cd501526160f76000f3fe60806040526004361061038c5760003560e01c80638ca48484116101dc578063bd3252c811610102578063e8dccb7d116100a0578063f53986611161006f578063f539866114610ba0578063f85263b914610bc0578063f9f522f414610bf4578063fa6e0cfe14610c3157600080fd5b8063e8dccb7d14610b0e578063eb5bf90114610b3d578063f2e55caf14610b6b578063f373305214610b8057600080fd5b8063c56a069d116100dc578063c56a069d14610a5b578063c60944a614610a88578063c6ae797314610aa8578063cd312ec414610ada57600080fd5b8063bd3252c814610a06578063bf42873414610a1b578063c4d66de814610a3b57600080fd5b8063ad3915c81161017a578063bb84cfa111610149578063bb84cfa11461096a578063bbe4fd50146109b3578063bced3ddc146109c6578063bd1c448b146109e657600080fd5b8063ad3915c8146108ea578063b6d200de1461090a578063b724211e1461092a578063ba48b5f81461094a57600080fd5b8063989b0c3e116101b6578063989b0c3e146108615780639903ad38146108815780639d297e3014610896578063a5dbbbcd146108ca57600080fd5b80638ca48484146107e45780638ceddd7a146108045780639378fa131461082f57600080fd5b806346951954116102c157806359a291411161025f5780637283100c1161022e5780637283100c14610766578063731aed6e1461078657806374041e02146107a4578063768fabb0146107c457600080fd5b806359a2914114610700578063670e77e3146107205780636ad3ca7d146107335780636b4f33351461074657600080fd5b806352d1902d1161029b57806352d1902d1461066357806354fbc493146106a057806357121e0c146106c0578063572b6c05146106e057600080fd5b80634695195414610603578063486ff0cd1461062357806350d75d251461064e57600080fd5b80632f89bf891161032e57806339255d5b1161030857806339255d5b146105405780633ca3ad4e146105605780633f6c923a146105a85780634329d293146105d557600080fd5b80632f89bf89146104b457806333511863146104d457806333d608f1146104f457600080fd5b80631e6d0a841161036a5780631e6d0a84146103f35780631e855cf314610429578063289b3c0d146104495780632ecfbda21461048157600080fd5b806306cecba8146103915780630c565075146103b357806315a024e1146103d3575b600080fd5b34801561039d57600080fd5b506103b16103ac366004614d5a565b610c51565b005b3480156103bf57600080fd5b506103b16103ce366004614d7e565b610e28565b3480156103df57600080fd5b506103b16103ee366004614d5a565b610eb8565b3480156103ff57600080fd5b5061041361040e366004614e0d565b611108565b6040516104209190614ef5565b60405180910390f35b34801561043557600080fd5b50610413610444366004614fcb565b611354565b34801561045557600080fd5b506000546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610420565b34801561048d57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610469565b3480156104c057600080fd5b506103b16104cf366004614d5a565b61136c565b3480156104e057600080fd5b506103b16104ef366004614d5a565b61152a565b34801561050057600080fd5b506105287f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b039091168152602001610420565b34801561054c57600080fd5b5061041361055b36600461501a565b611539565b34801561056c57600080fd5b5061059861057b366004614d5a565b6001600160a01b0316600090815260046020526040902054151590565b6040519015158152602001610420565b3480156105b457600080fd5b506105c86105c3366004615093565b61154f565b60405161042091906150c7565b3480156105e157600080fd5b506105f56105f03660046151a6565b611560565b60405161042092919061525c565b34801561060f57600080fd5b506103b161061e366004614d5a565b611769565b34801561062f57600080fd5b50604080518082019091526002815261763160f01b6020820152610413565b34801561065a57600080fd5b50610469611862565b34801561066f57600080fd5b507fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b604051908152602001610420565b3480156106ac57600080fd5b506103b16106bb366004614d5a565b611891565b3480156106cc57600080fd5b506103b16106db366004614d5a565b611b14565b3480156106ec57600080fd5b506105986106fb366004614d5a565b611be2565b34801561070c57600080fd5b5061041361071b366004615281565b611c6c565b6103b161072e3660046152cc565b611d4e565b6103b16107413660046152cc565b611d64565b34801561075257600080fd5b50610598610761366004614d5a565b611d6f565b34801561077257600080fd5b506103b1610781366004614d5a565b611d93565b34801561079257600080fd5b506003546001600160a01b0316610469565b3480156107b057600080fd5b506104136107bf366004614e0d565b611e3b565b3480156107d057600080fd5b506104136107df366004615341565b611f8a565b3480156107f057600080fd5b506105986107ff366004614d5a565b612126565b34801561081057600080fd5b5061081a61010081565b60405163ffffffff9091168152602001610420565b34801561083b57600080fd5b5061084f61084a366004614d5a565b6121eb565b60405160ff9091168152602001610420565b34801561086d57600080fd5b5061041361087c366004615281565b61220c565b34801561088d57600080fd5b506103b161229f565b3480156108a257600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d657600080fd5b506106926108e53660046153bc565b61235a565b3480156108f657600080fd5b506103b16109053660046153de565b6123a4565b34801561091657600080fd5b506104696109253660046153de565b6123f8565b34801561093657600080fd5b506104136109453660046153f7565b61245f565b34801561095657600080fd5b50610413610965366004615453565b612520565b34801561097657600080fd5b50610598610985366004614d7e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109bf57600080fd5b5042610692565b3480156109d257600080fd5b506106926109e13660046153bc565b612837565b3480156109f257600080fd5b506103b1610a013660046154d9565b612880565b348015610a1257600080fd5b50610692600181565b348015610a2757600080fd5b50610598610a36366004615524565b6128f6565b348015610a4757600080fd5b506103b1610a56366004614d5a565b612937565b348015610a6757600080fd5b50610a7b610a763660046153de565b612a1b565b6040516104209190615565565b348015610a9457600080fd5b506103b1610aa33660046155b1565b612b00565b348015610ab457600080fd5b50610ac8610ac33660046155dd565b612b7f565b604051610420969594939291906156b1565b348015610ae657600080fd5b506105987f000000000000000000000000000000000000000000000000000000000000000081565b348015610b1a57600080fd5b50610598610b293660046153de565b600090815260026020526040902054151590565b348015610b4957600080fd5b50610b5d610b583660046154d9565b612c6c565b60405161042092919061570a565b348015610b7757600080fd5b50610469612cb8565b348015610b8c57600080fd5b506103b1610b9b3660046155b1565b612d80565b348015610bac57600080fd5b50610413610bbb366004615723565b612e8b565b348015610bcc57600080fd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610c0057600080fd5b50610c14610c0f366004614d5a565b612f83565b604080519315158452911515602084015290820152606001610420565b348015610c3d57600080fd5b506103b1610c4c366004614d7e565b612fd2565b6000546201000090046001600160a01b03163314610c82576040516362e9152760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015610cc1576040516314f72c9f60e01b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d259190615792565b600081815260026020526040812054919250819003610d5757604051630e4f4df560e11b815260040160405180910390fd5b60006001610d6581846157c1565b81548110610d7557610d756157d4565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b158015610dc857600080fd5b505af1158015610ddc573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b6000546201000090046001600160a01b03163314610e59576040516362e9152760e11b815260040160405180910390fd5b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f28397090602401600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505050505050565b6000546201000090046001600160a01b03163314610ee9576040516362e9152760e11b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190615792565b60008181526002602052604090205490915015610f7d57604051631b93bb7560e31b815260040160405180910390fd5b60015461010011610fa157604051630f85034f60e31b815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000061105b576000604051610fd690614cdd565b604051809103906000f080158015610ff2573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561103a57600080fd5b505af115801561104e573d6000803e3d6000fd5b505050508091505061105e565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d1906110fb90849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b606061111333612126565b6111305760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611172925083915061312d9050565b61117e5761117e6157ea565b6000806111f88a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561130d5761120b81613214565b156112a557808060200190518101906112249190615845565b935061122f8461312d565b6112a057866112595760405163a85ba64f60e01b8152601460048201526024015b60405180910390fd5b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060149050613268565b611347565b866112c65760405163a85ba64f60e01b815260166004820152602401611250565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296506112a092508c915060169050613268565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061136333846000856132e9565b90505b92915050565b6000546201000090046001600160a01b0316331461139d576040516362e9152760e11b815260040160405180910390fd5b604051635b69006f60e11b81527fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a9466004820152600090309063b6d200de90602401602060405180830381865afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190615879565b90506000816001600160a01b0316635437dd976040518163ffffffff1660e01b8152600401602060405180830381865afa158015611461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114859190615879565b604051631b2ce7f360e11b81526001600160a01b03858116600483015291925090821690633659cfe690602401600060405180830381600087803b1580156114cc57600080fd5b505af11580156114e0573d6000803e3d6000fd5b50506040516001600160a01b038681168252841692507f052cea8931962dd445ef48b0b998d3056bd0705f437087d60fe3c46a3fa09e1f91506020015b60405180910390a2505050565b61153681611b1e613268565b50565b606061154733858585613526565b949350505050565b611557614cea565b61136682613637565b60608083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115a5925083915061312d9050565b6115c55760405163a85ba64f60e01b815260146004820152602401611250565b896115cf81612126565b6115ec5760405163619c535960e01b815260040160405180910390fd5b600061162d87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461165e5760405163066875e160e11b815260040160405180910390fd5b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a08301526116aa82613702565b955060006116f08e8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508c91506138369050565b96509050801561174f578580602001905181019061170e9190615845565b96506117198761312d565b611725576117256157ea565b61172e8761154f565b6001600160a01b0383166060820152925061174883613702565b9650611758565b611758866138f1565b505050505097509795505050505050565b6000546201000090046001600160a01b0316331461179a576040516362e9152760e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156117d9576040516314f72c9f60e01b815260040160405180910390fd5b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183b9190615896565b156118595760405163474e764160e01b815260040160405180910390fd5b611536816139fc565b600061188c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b031633146118c2576040516362e9152760e11b815260040160405180910390fd5b6003546001600160a01b0316611a31577f00000000000000000000000000000000000000000000000000000000000000006119a857600060405161190590614cdd565b604051809103906000f080158015611921573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b039490941693909317909255506119c49050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b50505050611ad0565b7f000000000000000000000000000000000000000000000000000000000000000015611a70576040516314f72c9f60e01b815260040160405180910390fd5b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b33600081815260046020526040902054611b41576040516302eb3f7160e61b815260040160405180910390fd5b6001600160a01b038216600090815260046020526040902054611b7757604051634b5518af60e11b815260040160405180910390fd5b611b80826121eb565b60ff16611b8c826121eb565b60ff1611611bad57604051630447252760e41b815260040160405180910390fd5b6001600160a01b039081166000908152600560209081526040808320949093168252929092529020805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba3083611c0586613c36565b6040518463ffffffff1660e01b8152600401611c23939291906158b3565b602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190615792565b151592915050565b6060611c7733612126565b611c945760405163619c535960e01b815260040160405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cd6925083915061312d9050565b611ce257611ce26157ea565b6000611d2386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b9050838161010001818151611d3891906158d7565b905250611d4481613702565b9695505050505050565b611d60611d59613cbe565b8383613d26565b5050565b611d60338383613d26565b6001600160a01b038116600090815260046020526040812054618000161515611366565b6000546201000090046001600160a01b03163314611dc4576040516362e9152760e11b815260040160405180910390fd5b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060611e4633612126565b611e635760405163619c535960e01b815260040160405180910390fd5b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ea5925083915061312d9050565b611eb157611eb16157ea565b600080611f2b8a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061314d92505050565b91509150811561134757611f3e81613214565b15611f5e5780806020019051810190611f579190615845565b9350611347565b86611f7f5760405163a85ba64f60e01b815260166004820152602401611250565b6113478a6016613268565b6060611f9533612126565b611fb25760405163619c535960e01b815260040160405180910390fd5b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ff4925083915061312d9050565b612000576120006157ea565b600061204189898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905061206881606001516001600160a01b0316600090815260046020526040902054151590565b801561207c57506001816000015160ff1610155b156120cf5760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff166120cf5760405163a85ba64f60e01b8152601e6004820152602401611250565b8051816120db826158ff565b60ff169052506003602082015260c0810186905261010081018590526001600160a01b03808816610120830152841661014082015261211981613702565b9998505050505050505050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b9190615792565b600081815260026020526040902054909150801580159061154757506001600160a01b03841660016121bd81846157c1565b815481106121cd576121cd6157d4565b6000918252602090912001546001600160a01b031614949350505050565b6001600160a01b03811660009081526004602052604081205460ff16611366565b606061221733612126565b6122345760405163619c535960e01b815260040160405180910390fd5b600061227585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b905082816101000181815161228a91906158d7565b90525061229681613702565b95945050505050565b600054610100900460ff16158080156122bf5750600054600160ff909116105b806122d95750303b1580156122d9575060005460ff166001145b6122f55760405162461bcd60e51b81526004016112509061591e565b6000805460ff191660011790558015612318576000805461ff0019166101001790555b8015611536576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611b09565b60008181526002602052604081205480820361238957604051630e4f4df560e11b815260040160405180910390fd5b6123946001826157c1565b6001901b19841691505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156123ee576123ee604051806040016040528060028152602001616b3160f01b8152503261480f565b61153633826148b8565b60008181526002602052604081205480820361242757604051630e4f4df560e11b815260040160405180910390fd5b600161243381836157c1565b81548110612443576124436157d4565b6000918252602090912001546001600160a01b03169392505050565b606061246a33612126565b6124875760405163619c535960e01b815260040160405180910390fd5b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124c9925083915061312d9050565b6124d5576124d56157ea565b6124df8484613268565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612564925083915061312d9050565b6125845760405163a85ba64f60e01b815260146004820152602401611250565b6001600160a01b03871660009081526004602052604081205488918190036125bf5760405163163cbe4360e01b815260040160405180910390fd5b6180008116156125e157604051628e12d960e21b815260040160405180910390fd5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506126229150839050614987565b90506001600160e01b031981166330d9c91560e01b148061265357506001600160e01b0319811663d86ed3e560e01b145b8061266e57506001600160e01b03198116630221347d60e61b145b8061268957506001600160e01b0319811663230dbd2960e01b145b806126a457506001600160e01b03198116635f9e7d7760e01b145b806126bf57506001600160e01b031981166353c11f9960e01b145b156126dd576040516377a14afb60e11b815260040160405180910390fd5b600061271e89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061154f92505050565b6101208101519091506001600160a01b0316331461274f576040516311cfdef560e21b815260040160405180910390fd5b6060810180513390915261276282613702565b97506000806127a98f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508f91506138369050565b91509150811561281c57808060200190518101906127c79190615845565b99506127d28a61312d565b6127f25760405163a85ba64f60e01b815260146004820152602401611250565b6127fb8a61154f565b6001600160a01b0384166060820152935061281584613702565b9950612825565b612825816138f1565b50505050505050505095945050505050565b60008181526002602052604081205480820361286657604051630e4f4df560e11b815260040160405180910390fd5b6128716001826157c1565b6001901b841791505092915050565b7f0000000000000000000000000000000000000000000000000000000000000000156128e7576128e782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525032925061480f915050565b6128f133846148b8565b505050565b600061136383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061312d92505050565b600054610100900460ff16158080156129575750600054600160ff909116105b806129715750303b158015612971575060005460ff166001145b61298d5760405162461bcd60e51b81526004016112509061591e565b6000805460ff1916600117905580156129b0576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015611d60576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60606000806001805490506001600160401b03811115612a3d57612a3d614f08565b604051908082528060200260200182016040528015612a66578160200160208202803683370190505b50925060009050600091505b600154821015612af8576001821b841615612aed5760018281548110612a9a57612a9a6157d4565b6000918252602090912001546001600160a01b03168382612aba8161596c565b935081518110612acc57612acc6157d4565b60200260200101906001600160a01b031690816001600160a01b0316815250505b816001019150612a72565b825250919050565b816001600160a01b03163b600003612b2b5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b7557612b75604051806040016040528060028152602001616b3160f01b8152503361480f565b611d6082826148b8565b600080600060608060608e8e8e8e8e8e8e8e8e85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815293995096975094959394509192909150859085908190840183828082843760009201919091525050604080516020601f87018190048102820181019092528581529397509495509293919250849184915081908401838280828437600092019190915250999f50979d50959b50939950919750919550505050505099509950995099509950999350505050565b6000606084848481818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250959b929a509198505050505050505050565b6003546000906001600160a01b0316612cd357612cd36157ea565b7f000000000000000000000000000000000000000000000000000000000000000015612d0957506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188c9190615879565b816001600160a01b03163b600003612dab5760405163353dacc360e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015612b75576000612ddc336149e3565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba90612e1b903090859087906004016158b3565b602060405180830381865afa158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c9190615792565b600114905080612e7f57604051630b56455f60e41b815260040160405180910390fd5b5050611d6082826148b8565b60606000612f0286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250614a5d92505050565b90506000306001600160a01b031682604051612f1e9190615985565b600060405180830381855afa9150503d8060008114612f59576040519150601f19603f3d011682016040523d82523d6000602084013e612f5e565b606091505b50935090508015612f70575050611547565b612f79836138f1565b5050949350505050565b6001600160a01b038116600090815260046020908152604080832081519283019091525480825215801592918291612fca57805161800081161515935064ff000000001691505b509193909250565b6000546201000090046001600160a01b03163314613003576040516362e9152760e11b815260040160405180910390fd5b60006001600160a01b03821661308f57600360009054906101000a90046001600160a01b03166001600160a01b0316639470a5b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015613066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308a9190615879565b613091565b815b6040516311a5465560e21b81526001600160a01b03808316600483015291925090841690634695195490602401600060405180830381600087803b1580156130d857600080fd5b505af11580156130ec573d6000803e3d6000fd5b50506040516001600160a01b038481168252861692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd3915060200161151d565b600081516000141580156113665750600654825160208401201492915050565b600060606001600160a01b038716613167576131676157ea565b6131718484614a5d565b93506001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166000876131b4576131af898784614b14565b6131bf565b6131bf898784614ba5565b91955090935090508361320857806131ef57866131e4576131df836138f1565b613208565b6131df89600a613268565b604051636a7aea4b60e11b815260040160405180910390fd5b50509550959350505050565b600060408251101561322857506000919050565b602082810151906000908214613242575060009392505050565b50604083015161325181614c04565b61325c9060406159a1565b84511492505050919050565b6001600160a01b038216600090815260046020526040812054618000169003611d60576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b906132dd9084815260200190565b60405180910390a25050565b600654606090156133105760405163a85ba64f60e01b815260156004820152602401611250565b6001600160a01b038416600090815260046020526040812054859181900361334b5760405163163cbe4360e01b815260040160405180910390fd5b61800081161561336d57604051628e12d960e21b815260040160405180910390fd5b83600061337982614987565b90506001600160e01b031981166330d9c91560e01b14806133aa57506001600160e01b0319811663d86ed3e560e01b145b806133c557506001600160e01b03198116630221347d60e61b145b806133e057506001600160e01b0319811663230dbd2960e01b145b806133fb57506001600160e01b03198116635f9e7d7760e01b145b8061341657506001600160e01b031981166353c11f9960e01b145b15613434576040516377a14afb60e11b815260040160405180910390fd5b60408051610160810182526000808252600260208084019190915242838501526001600160a01b03808e16606085015260808401839052845191820190945281815260a083015260c0820181905260e082018190526101008201819052918a1661012082015261014081018290526134ab90613702565b905060006134bb8a898b85613836565b97509050801561350957868060200190518101906134d99190615845565b91506134e48261312d565b6135045760405163a85ba64f60e01b815260146004820152602401611250565b613512565b613512876138f1565b505060006006555092979650505050505050565b6006546060901561354d5760405163a85ba64f60e01b815260156004820152602401611250565b8361355781612126565b6135745760405163619c535960e01b815260040160405180910390fd5b600061357f85614987565b60408051610160810182526000808252600160208301529293506136029181014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250613702565b905060006136138888600085613836565b955090508061362557613625856138f1565b50506000600655509095945050505050565b61363f614cea565b6060808380602001905181019061365691906159b4565b815191935091506000906136739084016020908101908501615a11565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff90911685528251600092506136c4919084018101908401615a96565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b60606001826000015160ff1611156137305760405163a85ba64f60e01b815260286004820152602401611250565b815160208084015160009260ff1664ff000000009190921b161790506000608061375d8560e00151614c3d565b6001600160801b0316901b6137758560c00151614c3d565b6001600160801b0316179050818460400151856060015186608001518760a001516040516020016137aa959493929190615ae2565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052613814929160200161525c565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038616613850576138506157ea565b61385a8584614a5d565b9450856001600160a01b031684866040516138759190615985565b60006040518083038185875af1925050503d80600081146138b2576040519150601f19603f3d011682016040523d82523d6000602084013e6138b7565b606091505b50909250905081156138e85780516000036138e85760405163a85ba64f60e01b815260166004820152602401611250565b94509492505050565b6004815110156139435760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a207461726765742072657665727428290000000000006044820152606401611250565b602081015163b1b7848f60e01b6001600160e01b03198216016139f35760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161125091849101614ef5565b81518060208401fd5b6000613a267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603613a7c5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611250565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ade9190615792565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba7414613b585760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611250565b6001600160a01b0381163003613bb05760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611250565b613bd8817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b038416602083015201611b09565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b600060183610801590613cd55750613cd533611be2565b613d195760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b6044820152606401611250565b5060131936013560601c90565b60005b818110156147cd576000838383818110613d4557613d456157d4565b9050602002810190613d579190615b2e565b613d65906020810190615b44565b905060001963ffffffff821601613e5957600080858585818110613d8b57613d8b6157d4565b9050602002810190613d9d9190615b2e565b613dab906040810190615b6a565b810190613db891906155b1565b91509150858585818110613dce57613dce6157d4565b9050602002810190613de09190615b2e565b613df1906040810190602001614d5a565b6001600160a01b03166362aa52878884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b600060405180830381600087803b158015613e3a57600080fd5b505af1158015613e4e573d6000803e3d6000fd5b5050505050506147c4565b60011963ffffffff821601613f64576000806000868686818110613e7f57613e7f6157d4565b9050602002810190613e919190615b2e565b613e9f906040810190615b6a565b810190613eac9190615bb0565b925092509250868686818110613ec457613ec46157d4565b9050602002810190613ed69190615b2e565b613ee7906040810190602001614d5a565b604051630b682aeb60e11b81526001600160a01b038a81166004830152858116602483015284811660448301526064820184905291909116906316d055d6906084015b600060405180830381600087803b158015613f4457600080fd5b505af1158015613f58573d6000803e3d6000fd5b505050505050506147c4565b60021963ffffffff821601614023576000806000868686818110613f8a57613f8a6157d4565b9050602002810190613f9c9190615b2e565b613faa906040810190615b6a565b810190613fb79190615bf1565b925092509250868686818110613fcf57613fcf6157d4565b9050602002810190613fe19190615b2e565b613ff2906040810190602001614d5a565b6001600160a01b031663ca0c1e7f898585856040518563ffffffff1660e01b8152600401613f2a9493929190615c33565b60031963ffffffff8216016140dc57600080858585818110614047576140476157d4565b90506020028101906140599190615b2e565b614067906040810190615b6a565b81019061407491906155b1565b9150915085858581811061408a5761408a6157d4565b905060200281019061409c9190615b2e565b6140ad906040810190602001614d5a565b6001600160a01b0316634b2763b38884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60041963ffffffff82160161419557600080858585818110614100576141006157d4565b90506020028101906141129190615b2e565b614120906040810190615b6a565b81019061412d91906155b1565b91509150858585818110614143576141436157d4565b90506020028101906141559190615b2e565b614166906040810190602001614d5a565b6001600160a01b031663c780fd828884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60641963ffffffff82160161428a578383838181106141b6576141b66157d4565b90506020028101906141c89190615b2e565b6141d9906040810190602001614d5a565b6001600160a01b031663ca789464868686868181106141fa576141fa6157d4565b905060200281019061420c9190615b2e565b61421a906040810190615b6a565b81019061422791906153de565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561426d57600080fd5b505af1158015614281573d6000803e3d6000fd5b505050506147c4565b60651963ffffffff8216016142ef578383838181106142ab576142ab6157d4565b90506020028101906142bd9190615b2e565b6142ce906040810190602001614d5a565b6001600160a01b031663245887fc868686868181106141fa576141fa6157d4565b60661963ffffffff8216016143a857600080858585818110614313576143136157d4565b90506020028101906143259190615b2e565b614333906040810190615b6a565b81019061434091906155b1565b91509150858585818110614356576143566157d4565b90506020028101906143689190615b2e565b614379906040810190602001614d5a565b6001600160a01b0316631ae88ffc8884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60671963ffffffff821601614461576000808585858181106143cc576143cc6157d4565b90506020028101906143de9190615b2e565b6143ec906040810190615b6a565b8101906143f991906155b1565b9150915085858581811061440f5761440f6157d4565b90506020028101906144219190615b2e565b614432906040810190602001614d5a565b6001600160a01b03166347ba7ad18884846040518463ffffffff1660e01b8152600401613e20939291906158b3565b60c81963ffffffff8216016144fe57600080858585818110614485576144856157d4565b90506020028101906144979190615b2e565b6144a5906040810190615b6a565b8101906144b29190615c66565b915091506144f6878787878181106144cc576144cc6157d4565b90506020028101906144de9190615b2e565b6144ef906040810190602001614d5a565b8484613526565b5050506147c4565b60c91963ffffffff8216016145b9576145b385858585818110614523576145236157d4565b90506020028101906145359190615b2e565b614546906040810190602001614d5a565b47878787818110614559576145596157d4565b905060200281019061456b9190615b2e565b614579906040810190615b6a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132e992505050565b506147c4565b61012c1963ffffffff8216016146e1576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166322bee4944788888881811061460e5761460e6157d4565b90506020028101906146209190615b2e565b614631906040810190602001614d5a565b898989818110614643576146436157d4565b90506020028101906146559190615b2e565b614663906040810190615b6a565b6040518563ffffffff1660e01b815260040161468193929190615ce0565b60006040518083038185885af115801561469f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526146c89190810190615d05565b91509150816146da576146da816138f1565b50506147c4565b61012d1963ffffffff8216016147ab576000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663177ec59447888888818110614736576147366157d4565b90506020028101906147489190615b2e565b614759906040810190602001614d5a565b8a8a8a8a81811061476c5761476c6157d4565b905060200281019061477e9190615b2e565b61478c906040810190615b6a565b6040518663ffffffff1660e01b81526004016146819493929190615d3f565b60405163b477011560e01b815260040160405180910390fd5b50600101613d29565b5047156128f1576040516001600160a01b038416904780156108fc02916000818181858888f19350505050158015614809573d6000803e3d6000fd5b50505050565b600061481b8284614caa565b6000805460405163407b865d60e11b81529293504292620100009091046001600160a01b0316916380f70cba9161485891309187906004016158b3565b602060405180830381865afa158015614875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148999190615792565b10156128f157604051630b56455f60e41b815260040160405180910390fd5b64ff000080ff1981161515806148cf575060ff8116155b806148dd5750618000811615155b156148fb57604051633d3200a960e21b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205415614932576040516301b0a93560e01b815260040160405180910390fd5b60408051602080820183528382526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a25050565b60006004825110156149db5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c4461746100000000006044820152606401611250565b506020015190565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c001613ca1565b815180830151606091908015614a86576040516367e9985b60e01b815260040160405180910390fd5b50601f1981018452825184908481614a9d81614c04565b614aa791906157c1565b6001600160401b03811115614abe57614abe614f08565b6040519080825280601f01601f191660200182016040528015614ae8576020820181803683370190505b50604051602001614afc9493929190615d6c565b60405160208183030381529060405291505092915050565b600080606060005a9050866001600160a01b03168587604051614b379190615985565b60006040518083038160008787f1925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b606091505b50909450915083614b9b57614b90604082615dba565b5a11614b9b57600192505b5093509350939050565b600080606060005a9050866001600160a01b03168587604051614bc89190615985565b6000604051808303818686fa925050503d8060008114614b75576040519150601f19603f3d011682016040523d82523d6000602084013e614b7a565b60008082601f1611614c17576000614c1a565b60015b60ff16614c28602084615dba565b614c3291906159a1565b611366906020615ddc565b60006001600160801b03821115614ca65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611250565b5090565b60008282604051602001614cbf929190615df3565b60405160208183030381529060405280519060200120905092915050565b61024980615e7983390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461153657600080fd5b600060208284031215614d6c57600080fd5b8135614d7781614d45565b9392505050565b60008060408385031215614d9157600080fd5b8235614d9c81614d45565b91506020830135614dac81614d45565b809150509250929050565b60008083601f840112614dc957600080fd5b5081356001600160401b03811115614de057600080fd5b602083019150836020828501011115614df857600080fd5b9250929050565b801515811461153657600080fd5b60008060008060008060808789031215614e2657600080fd5b8635614e3181614d45565b955060208701356001600160401b03811115614e4c57600080fd5b614e5889828a01614db7565b9096509450506040870135614e6c81614dff565b925060608701356001600160401b03811115614e8757600080fd5b614e9389828a01614db7565b979a9699509497509295939492505050565b60005b83811015614ec0578181015183820152602001614ea8565b50506000910152565b60008151808452614ee1816020860160208601614ea5565b601f01601f19169290920160200192915050565b6020815260006113636020830184614ec9565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f4657614f46614f08565b604052919050565b60006001600160401b03821115614f6757614f67614f08565b50601f01601f191660200190565b600082601f830112614f8657600080fd5b8135614f99614f9482614f4e565b614f1e565b818152846020838601011115614fae57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614fde57600080fd5b8235614fe981614d45565b915060208301356001600160401b0381111561500457600080fd5b61501085828601614f75565b9150509250929050565b60008060006060848603121561502f57600080fd5b833561503a81614d45565b925060208401356001600160401b0381111561505557600080fd5b61506186828701614f75565b92505060408401356001600160401b0381111561507d57600080fd5b61508986828701614f75565b9150509250925092565b6000602082840312156150a557600080fd5b81356001600160401b038111156150bb57600080fd5b61154784828501614f75565b602081526150db60208201835160ff169052565b600060208301516150f1604084018260ff169052565b5060408301516060830152606083015161511660808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a083015161016060c0840152615148610180840182614ec9565b905060c084015160e084015260e08401516101008401526101008401516101208401526101208401516151876101408501826001600160a01b03169052565b506101408401516001600160a01b038116610160850152509392505050565b60008060008060008060006080888a0312156151c157600080fd5b87356151cc81614d45565b965060208801356001600160401b038111156151e757600080fd5b6151f38a828b01614db7565b90975095505060408801356001600160401b0381111561521257600080fd5b61521e8a828b01614db7565b90955093505060608801356001600160401b0381111561523d57600080fd5b6152498a828b01614db7565b989b979a50959850939692959293505050565b60408152600061526f6040830185614ec9565b82810360208401526122968185614ec9565b60008060006040848603121561529657600080fd5b83356001600160401b038111156152ac57600080fd5b6152b886828701614db7565b909790965060209590950135949350505050565b600080602083850312156152df57600080fd5b82356001600160401b038111156152f557600080fd5b8301601f8101851361530657600080fd5b80356001600160401b0381111561531c57600080fd5b8560208260051b840101111561533157600080fd5b6020919091019590945092505050565b60008060008060008060a0878903121561535a57600080fd5b86356001600160401b0381111561537057600080fd5b61537c89828a01614db7565b909750955050602087013561539081614d45565b9350604087013592506060870135915060808701356153ae81614d45565b809150509295509295509295565b600080604083850312156153cf57600080fd5b50508035926020909101359150565b6000602082840312156153f057600080fd5b5035919050565b6000806000806060858703121561540d57600080fd5b84356001600160401b0381111561542357600080fd5b61542f87828801614db7565b909550935050602085013561544381614d45565b9396929550929360400135925050565b60008060008060006060868803121561546b57600080fd5b853561547681614d45565b945060208601356001600160401b0381111561549157600080fd5b61549d88828901614db7565b90955093505060408601356001600160401b038111156154bc57600080fd5b6154c888828901614db7565b969995985093965092949392505050565b6000806000604084860312156154ee57600080fd5b8335925060208401356001600160401b0381111561550b57600080fd5b61551786828701614db7565b9497909650939450505050565b6000806020838503121561553757600080fd5b82356001600160401b0381111561554d57600080fd5b61555985828601614db7565b90969095509350505050565b602080825282518282018190526000918401906040840190835b818110156155a65783516001600160a01b031683526020938401939092019160010161557f565b509095945050505050565b600080604083850312156155c457600080fd5b82356155cf81614d45565b946020939093013593505050565b600080600080600080600080600060c08a8c0312156155fb57600080fd5b893561560681614d45565b985060208a013561561681614d45565b975060408a0135965060608a01356001600160401b0381111561563857600080fd5b6156448c828d01614db7565b90975095505060808a01356001600160401b0381111561566357600080fd5b61566f8c828d01614db7565b90955093505060a08a01356001600160401b0381111561568e57600080fd5b61569a8c828d01614db7565b915080935050809150509295985092959850929598565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906156e490830186614ec9565b82810360808401526156f68186614ec9565b905082810360a08401526121198185614ec9565b8281526040602082015260006115476040830184614ec9565b6000806000806040858703121561573957600080fd5b84356001600160401b0381111561574f57600080fd5b61575b87828801614db7565b90955093505060208501356001600160401b0381111561577a57600080fd5b61578687828801614db7565b95989497509550505050565b6000602082840312156157a457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611366576113666157ab565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082601f83011261581157600080fd5b815161581f614f9482614f4e565b81815284602083860101111561583457600080fd5b611547826020830160208701614ea5565b60006020828403121561585757600080fd5b81516001600160401b0381111561586d57600080fd5b61154784828501615800565b60006020828403121561588b57600080fd5b8151614d7781614d45565b6000602082840312156158a857600080fd5b8151614d7781614dff565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820182811260008312801582168215821617156158f7576158f76157ab565b505092915050565b600060ff821660ff8103615915576159156157ab565b60010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006001820161597e5761597e6157ab565b5060010190565b60008251615997818460208701614ea5565b9190910192915050565b80820180821115611366576113666157ab565b600080604083850312156159c757600080fd5b82516001600160401b038111156159dd57600080fd5b6159e985828601615800565b92505060208301516001600160401b03811115615a0557600080fd5b61501085828601615800565b600080600080600060a08688031215615a2957600080fd5b8551602087015160408801519196509450615a4381614d45565b60608701519093506001600160e01b031981168114615a6157600080fd5b60808701519092506001600160401b03811115615a7d57600080fd5b615a8988828901615800565b9150509295509295909350565b60008060008060808587031215615aac57600080fd5b8451602086015160408701519195509350615ac681614d45565b6060860151909250615ad781614d45565b939692955090935050565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a060808201819052600090615b2390830184614ec9565b979650505050505050565b60008235605e1983360301811261599757600080fd5b600060208284031215615b5657600080fd5b813563ffffffff81168114614d7757600080fd5b6000808335601e19843603018112615b8157600080fd5b8301803591506001600160401b03821115615b9b57600080fd5b602001915036819003821315614df857600080fd5b600080600060608486031215615bc557600080fd5b8335615bd081614d45565b92506020840135615be081614d45565b929592945050506040919091013590565b600080600060608486031215615c0657600080fd5b8335615c1181614d45565b92506020840135915060408401356001600160401b0381111561507d57600080fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d4490830184614ec9565b60008060408385031215615c7957600080fd5b82356001600160401b03811115615c8f57600080fd5b615c9b85828601614f75565b92505060208301356001600160401b0381111561500457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906122969083018486615cb7565b60008060408385031215615d1857600080fd5b8251615d2381614dff565b60208401519092506001600160401b03811115615a0557600080fd5b6001600160a01b03858116825284166020820152606060408201819052600090611d449083018486615cb7565b60008551615d7e818460208a01614ea5565b82018581528451615d96816020808501908901614ea5565b8451910190615dac816020808501908801614ea5565b016020019695505050505050565b600082615dd757634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611366576113666157ab565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e06040820152600061154760e0830184614ec956fe6080604052348015600f57600080fd5b5061022a8061001f6000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea26469706673582212200be7dc4160bd041045497f295bc4dcbce9dd453202fd7b0b470b990a3e32293764736f6c634300081a0033a2646970667358221220a495ca2acb479680e696b26c5e86c123504c6c4bec8ca92e82baf92f0b79ee8d64736f6c634300081a0033";
1574
1579
  const isSuperArgs = (xs) => xs.length > 1;
1575
1580
  class SuperfluidMock__factory extends ethers_1.ContractFactory {
1576
1581
  constructor(...args) {
@@ -1581,11 +1586,11 @@ class SuperfluidMock__factory extends ethers_1.ContractFactory {
1581
1586
  super(_abi, _bytecode, args[0]);
1582
1587
  }
1583
1588
  }
1584
- deploy(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, erc2771Forwarder, overrides) {
1585
- return super.deploy(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, erc2771Forwarder, overrides || {});
1589
+ deploy(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, simpleForwarderAddress, erc2771ForwarderAddress, overrides) {
1590
+ return super.deploy(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, simpleForwarderAddress, erc2771ForwarderAddress, overrides || {});
1586
1591
  }
1587
- getDeployTransaction(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, erc2771Forwarder, overrides) {
1588
- return super.getDeployTransaction(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, erc2771Forwarder, overrides || {});
1592
+ getDeployTransaction(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, simpleForwarderAddress, erc2771ForwarderAddress, overrides) {
1593
+ return super.getDeployTransaction(nonUpgradable, appWhiteListingEnabled, callbackGasLimit, simpleForwarderAddress, erc2771ForwarderAddress, overrides || {});
1589
1594
  }
1590
1595
  attach(address) {
1591
1596
  return super.attach(address);