@superfluid-finance/ethereum-contracts 1.2.3-dev.c35a287.0 → 1.2.3-dev.cd892eb.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 (115) hide show
  1. package/build/contracts/AccessControl.json +1 -1
  2. package/build/contracts/AccessControlEnumerable.json +1 -1
  3. package/build/contracts/Address.json +1 -1
  4. package/build/contracts/AgreementBase.json +9 -9
  5. package/build/contracts/AgreementLibrary.json +4 -4
  6. package/build/contracts/BaseRelayRecipient.json +1 -1
  7. package/build/contracts/BatchLiquidator.json +165 -165
  8. package/build/contracts/BatchOperation.json +1 -1
  9. package/build/contracts/CFAv1Library.json +4 -4
  10. package/build/contracts/CallUtils.json +1 -1
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +4 -4
  12. package/build/contracts/ConstantFlowAgreementV1.json +5 -5
  13. package/build/contracts/Context.json +1 -1
  14. package/build/contracts/ContextDefinitions.json +1 -1
  15. package/build/contracts/Create2.json +1 -1
  16. package/build/contracts/CustomSuperTokenBase.json +2 -2
  17. package/build/contracts/ERC165.json +1 -1
  18. package/build/contracts/ERC1820Implementer.json +1 -1
  19. package/build/contracts/ERC1820RegistryCompiled.json +1 -1
  20. package/build/contracts/ERC20.json +1 -1
  21. package/build/contracts/ERC20Burnable.json +1 -1
  22. package/build/contracts/ERC20Pausable.json +1 -1
  23. package/build/contracts/ERC20PresetMinterPauser.json +1 -1
  24. package/build/contracts/ERC20WithTokenInfo.json +1 -1
  25. package/build/contracts/ERC777Helper.json +1 -1
  26. package/build/contracts/ERC777RecipientDrainingGas.json +4 -4
  27. package/build/contracts/ERC777RecipientReverting.json +4 -4
  28. package/build/contracts/EnumerableSet.json +1 -1
  29. package/build/contracts/ExclusiveInflowTestApp.json +4 -4
  30. package/build/contracts/FixedSizeData.json +1 -1
  31. package/build/contracts/FlowExchangeTestApp.json +4 -4
  32. package/build/contracts/FlowOperatorDefinitions.json +1 -1
  33. package/build/contracts/FullUpgradableSuperTokenProxy.json +4 -4
  34. package/build/contracts/IAccessControl.json +1 -1
  35. package/build/contracts/IAccessControlEnumerable.json +1 -1
  36. package/build/contracts/IConstantFlowAgreementV1.json +1 -1
  37. package/build/contracts/IDAv1Library.json +4 -4
  38. package/build/contracts/IERC165.json +1 -1
  39. package/build/contracts/IERC1820Implementer.json +1 -1
  40. package/build/contracts/IERC1820Registry.json +1 -1
  41. package/build/contracts/IERC20.json +1 -1
  42. package/build/contracts/IERC20Metadata.json +1 -1
  43. package/build/contracts/IERC777.json +1 -1
  44. package/build/contracts/IERC777Recipient.json +1 -1
  45. package/build/contracts/IERC777Sender.json +1 -1
  46. package/build/contracts/IInstantDistributionAgreementV1.json +1 -1
  47. package/build/contracts/IMaticBridgedNativeSuperToken.json +2 -2
  48. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +2 -2
  49. package/build/contracts/IMultiSigWallet.json +1 -1
  50. package/build/contracts/IPureSuperToken.json +2 -2
  51. package/build/contracts/IPureSuperTokenCustom.json +2 -2
  52. package/build/contracts/IRelayRecipient.json +1 -1
  53. package/build/contracts/IResolver.json +1 -1
  54. package/build/contracts/ISETH.json +2 -2
  55. package/build/contracts/ISETHCustom.json +2 -2
  56. package/build/contracts/ISuperAgreement.json +1 -1
  57. package/build/contracts/ISuperApp.json +2 -2
  58. package/build/contracts/ISuperToken.json +2 -2
  59. package/build/contracts/ISuperTokenFactory.json +2 -2
  60. package/build/contracts/ISuperfluid.json +425 -418
  61. package/build/contracts/ISuperfluidGovernance.json +2 -2
  62. package/build/contracts/ISuperfluidToken.json +1 -1
  63. package/build/contracts/ITOGAv1.json +1208 -1208
  64. package/build/contracts/ITOGAv2.json +1208 -1208
  65. package/build/contracts/Initializable.json +1 -1
  66. package/build/contracts/InstantDistributionAgreementV1.json +5 -5
  67. package/build/contracts/Int96SafeMath.json +1 -1
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +191 -191
  69. package/build/contracts/NonClosableOutflowTestApp.json +4 -4
  70. package/build/contracts/Ownable.json +1 -1
  71. package/build/contracts/Pausable.json +1 -1
  72. package/build/contracts/Proxy.json +1 -1
  73. package/build/contracts/PureSuperToken.json +88 -88
  74. package/build/contracts/Resolver.json +90 -90
  75. package/build/contracts/SETHProxy.json +196 -196
  76. package/build/contracts/SafeCast.json +1 -1
  77. package/build/contracts/SafeERC20.json +1 -1
  78. package/build/contracts/SafeMath.json +1 -1
  79. package/build/contracts/SelfDeletingFlowTestApp.json +4 -4
  80. package/build/contracts/SlotsBitmapLibrary.json +1 -1
  81. package/build/contracts/Strings.json +1 -1
  82. package/build/contracts/SuperAppBase.json +2 -2
  83. package/build/contracts/SuperAppDefinitions.json +1 -1
  84. package/build/contracts/SuperToken.json +46 -46
  85. package/build/contracts/SuperTokenFactory.json +35 -35
  86. package/build/contracts/SuperTokenFactoryBase.json +33 -33
  87. package/build/contracts/SuperTokenFactoryHelper.json +35 -35
  88. package/build/contracts/SuperUpgrader.json +422 -422
  89. package/build/contracts/Superfluid.json +5488 -5454
  90. package/build/contracts/SuperfluidFrameworkDeployer.json +472 -472
  91. package/build/contracts/SuperfluidGovernanceBase.json +9 -9
  92. package/build/contracts/SuperfluidGovernanceConfigs.json +1 -1
  93. package/build/contracts/SuperfluidGovernanceII.json +17 -17
  94. package/build/contracts/SuperfluidGovernanceIIProxy.json +17 -17
  95. package/build/contracts/SuperfluidLoader.json +144 -144
  96. package/build/contracts/SuperfluidToken.json +1217 -1217
  97. package/build/contracts/TOGA.json +1218 -1218
  98. package/build/contracts/TestGovernance.json +171 -171
  99. package/build/contracts/TestToken.json +94 -94
  100. package/build/contracts/TokenCustodian.json +214 -214
  101. package/build/contracts/TokenInfo.json +1 -1
  102. package/build/contracts/UInt128SafeMath.json +1 -1
  103. package/build/contracts/UUPSProxiable.json +132 -132
  104. package/build/contracts/UUPSProxy.json +81 -81
  105. package/build/contracts/UUPSUtils.json +37 -37
  106. package/build/contracts-sizes.txt +7 -7
  107. package/contracts/interfaces/superfluid/ISuperfluid.sol +14 -6
  108. package/contracts/superfluid/Superfluid.sol +12 -10
  109. package/package.json +2 -2
  110. package/scripts/{deploy-unlisted-native-super-token.js → deploy-unlisted-pure-super-token.js} +4 -4
  111. package/scripts/gov-transfer-framework-ownership.js +3 -3
  112. package/scripts/libs/getConfig.js +3 -3
  113. package/utils/README.md +19 -1
  114. package/utils/stream-closer.html +212 -0
  115. package/utils/supertoken-deployer.html +1 -1
@@ -1022,9 +1022,9 @@
1022
1022
  "type": "function"
1023
1023
  }
1024
1024
  ],
1025
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uuid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"name\":\"CodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"IndexDistributionClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexSubscribed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexUnitsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexUnsubscribed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"oldIndexValue\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"newIndexValue\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"totalUnitsPending\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"totalUnitsApproved\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"SubscriptionApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SubscriptionDistributionClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"SubscriptionRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"SubscriptionUnitsUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SLOTS_BITMAP_LIBRARY_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"approveSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"calculateDistribution\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"newIndexValue\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"distribute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCodeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"}],\"name\":\"getIndex\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exist\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"indexValue\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalUnitsApproved\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalUnitsPending\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"getSubscription\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exist\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"pendingDistribution\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"}],\"name\":\"getSubscriptionByID\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"pendingDistribution\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"listSubscriptions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"publishers\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"indexIds\",\"type\":\"uint32[]\"},{\"internalType\":\"uint128[]\",\"name\":\"unitsList\",\"type\":\"uint128[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"updateCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"indexValue\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Please read IInstantDistributionAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"approveSubscription(address,address,uint32,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.approveSubscription implementation\"},\"calculateDistribution(address,address,uint32,uint256)\":{\"details\":\"IInstantDistributionAgreementV1.calculateDistribution implementation\"},\"claim(address,address,uint32,address,bytes)\":{\"details\":\"Claim pending distributions\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct) The subscription should not be approved yet # App callbacks - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"}},\"createIndex(address,uint32,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.createIndex implementation\"},\"deleteSubscription(address,address,uint32,address,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.deleteSubscription implementation\"},\"distribute(address,uint32,uint256,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.distribute implementation\"},\"getCodeAddress()\":{\"details\":\"Get current implementation code address.\"},\"getIndex(address,address,uint32)\":{\"details\":\"IInstantDistributionAgreementV1.getIndex implementation\"},\"getSubscription(address,address,uint32,address)\":{\"details\":\"IInstantDistributionAgreementV1.getSubscription implementation\"},\"getSubscriptionByID(address,bytes32)\":{\"details\":\"IInstantDistributionAgreementV1.getSubscriptionByID implementation\"},\"listSubscriptions(address,address)\":{\"details\":\"IInstantDistributionAgreementV1.listSubscriptions implementation\"},\"proxiableUUID()\":{\"details\":\"Proxiable UUID marker function, this would help to avoid wrong logic contract to be used for upgrading. NOTE: The semantics of the UUID deviates from the actual UUPS standard, where it is equivalent of _IMPLEMENTATION_SLOT.\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"ISuperAgreement.realtimeBalanceOf implementation\"},\"revokeSubscription(address,address,uint32,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.revokeSubscription implementation\"},\"updateIndex(address,uint32,uint128,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.updateIndex implementation\"},\"updateSubscription(address,uint32,address,uint128,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.updateSubscription implementation\"}},\"stateVariables\":{\"_MAX_NUM_SUBS\":{\"details\":\"Maximum number of subscriptions a subscriber can have\"},\"_PUBLISHER_DEPOSIT_STATE_SLOT_ID\":{\"details\":\"Publisher state slot id for storing its deposit amount\"},\"_SUBSCRIBER_SUBS_BITMAP_STATE_SLOT_ID\":{\"details\":\"Subscriber state slot id for storing subs bitmap\"},\"_SUBSCRIBER_SUB_DATA_STATE_SLOT_ID_START\":{\"details\":\"Subscriber state slot id starting ptoint for subscription data\"},\"_UNALLOCATED_SUB_ID\":{\"details\":\"A special id that indicating the subscription is not approved yet\"}},\"title\":\"InstantDistributionAgreementV1 contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/agreements/InstantDistributionAgreementV1.sol\":\"InstantDistributionAgreementV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xe59fc8bbe728c574773b5d3a3e9cfb4e8f323e9a3c3267a82d36fb79921b9997\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0e21d969b3b996ab211eff83fa5bb7041614c0ac597c7479012c0fe625f4e15f\",\"dweb:/ipfs/QmWThBae9FCDgCAcco2bZicvsPq8vz5K1XW66hz3LXSK2V\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x107ee59e59b54e9ee85997d135a9bfc97979eda1143c7b1b61b63959777bff91\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1a235f5a0fc7a04143662a69279d513d2434eeb7d60afdcc57911dcfeef712e5\",\"dweb:/ipfs/QmbUDhcf9mizwLxyCttibMxEM9NUun4guT3Sc9vdEaSxAv\"]},\"project:/contracts/agreements/InstantDistributionAgreementV1.sol\":{\"keccak256\":\"0xcd1abd4778689c744353c4d6b3163c298157cdb615a57239c9f6c7937422dac9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://19c99bcdb9d01ad5252b8aa15ffc0e18efd828c4c43c3608adbe929dbc90b060\",\"dweb:/ipfs/QmSHapsgVcfYVoFCUFyydzo3SiY9KWbPmBqBcAon6nyKKr\"]},\"project:/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x47948789bc2265e6228f70ddd9eb194be4e35b1c5ce598f5b5a01fcb48def27b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d758b5560a735d8ab2175a2b76afe38f99bf170800917c4f0adae1f8862ad785\",\"dweb:/ipfs/QmXZToKtnJXmJq4hBqkwVAj6CYkG2DGbErt9G9T7sW4Zoe\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xc1007d1082050b532947d27973bf996da2b0df9bdf6ed4d4fcaaa3ff2354262c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2d22da1d2140b1ed3964ddc62d3a38e9a24a8814c18ffe496f0fbce5afef5ea0\",\"dweb:/ipfs/QmYxVnaU87HSaQktkqCZZBFj3MgphgFsZMrMLXLeZLzrvR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9189eaba9e856cc4932ea29eeaf4e89a09448dde13860591691ec122856fdc75\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7d5991b906bba706373f5bfe3c2c8789a7a45360a41eee50574272b393c4ab70\",\"dweb:/ipfs/QmVCXVnYA13vMNxa7rGzNB129sUXiGE1asuHdnEMEPVZsp\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/libs/SlotsBitmapLibrary.sol\":{\"keccak256\":\"0x8702dc0404f8b03c21b82e2144b1c1d8ca0c0b22986159985749d6d25eefb4c7\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d16223a93a87019af0991d791c4ec2b9d4e80b87e2f2e0981848e4f015008e75\",\"dweb:/ipfs/QmarrBFqsszA65mmyySyfrpUHPvgDdBwUzyhnBZTEQSLwi\"]},\"project:/contracts/libs/UInt128SafeMath.sol\":{\"keccak256\":\"0xa606106997a2d49781bb75153ca063cc156a4bd2995b93689804fb1f633598bb\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://bf5329c5e16ce8f5cbbb5b82f74afb6641a49ed78a4f6f9b1f80bd16c0774537\",\"dweb:/ipfs/QmWqeSsvzRsxoAszVt9T1G19vt1fdT5HRhJcE9LVYEcDt1\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]}},\"version\":1}",
1026
- "bytecode": "0x60a06040523480156200001157600080fd5b50604051620055d0380380620055d0833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161553c62000094600039600061117c015261553c6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637730599e116100ad578063acf4a6c211610071578063acf4a6c21461030d578063b6dacdb814610320578063b96731c214610342578063cd7245c514610355578063d787840a146103ad57600080fd5b80637730599e146102635780637fbc763914610289578063899baaec1461029c5780639b2e48bc146102cc578063acafa1b8146102fa57600080fd5b806346951954116100f457806346951954146101d957806350d75d25146101ee57806352d1902d146101f65780635b5340511461020c5780636041ae961461025057600080fd5b8063232d2b581461012657806323fc23f31461014f5780632e5e74c6146101935780633fd4176a146101a6575b600080fd5b610139610134366004614595565b6103c0565b604051610146919061467c565b60405180910390f35b61016261015d36600461468f565b610b0e565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610146565b6101396101a13660046146da565b610b79565b6101c173__SlotsBitmapLibrary____________________81565b6040516001600160a01b039091168152602001610146565b6101ec6101e736600461472e565b611171565b005b6101c16111f5565b6101fe611224565b604051908152602001610146565b61021f61021a36600461474b565b611288565b6040516101469493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b61013961025e3660046147a7565b61135e565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a6746101fe565b610139610297366004614822565b61180d565b6102af6102aa366004614863565b61191d565b604080519283526001600160801b03909116602083015201610146565b6102df6102da3660046148b4565b6119f1565b60408051938452602084019290925290820152606001610146565b6101396103083660046146da565b611bfc565b61013961031b3660046147a7565b612024565b61033361032e3660046148f5565b612601565b60405161014693929190614972565b610139610350366004614a0f565b612856565b610368610363366004614a64565b61294a565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610146565b6101396103bb366004614a90565b612a6c565b60606001600160a01b0385166103f15760405162461bcd60e51b81526004016103e890614af4565b60405180910390fd5b6103f96143ed565b61040161444b565b60606000806104468c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b90508060a00151925080606001519150506104658b828b8d6000612e17565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104a1918d918c91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105055764040000000060c08401526104fb8386612f57565b60a0850152610520565b64010000000060c084015261051a8386612f57565b60a08501525b8360200151801561053d575060808401515163ffffffff90811614155b156106185761058c8460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b031661057d9190614b37565b6105879190614b4f565b61310e565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518363ffffffff1660e01b81526004016105e1929190614b96565b600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b5050505061082e565b8360200151156106955761065d8460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b031661057d9190614b37565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f885604001516107148760800151613219565b6040518363ffffffff1660e01b8152600401610731929190614b96565b600060405180830381600087803b15801561074b57600080fd5b505af115801561075f573d6000803e3d6000fd5b5050604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b60208201526060880151909101516107a693506001600160801b031691508a906132c0565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107de9061317b565b6040518363ffffffff1660e01b81526004016107fb929190614b96565b600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161085e9190614baf565b6001600160801b03166108719190614bd7565b905063ffffffff801685608001516000015163ffffffff160361090a576108a18c8361089c84614c5c565b6132fc565b6001600160a01b038c1663cf97256d836108ba84614c5c565b6040518363ffffffff1660e01b81526004016108d7929190614c78565b600060405180830381600087803b1580156108f157600080fd5b505af1158015610905573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d90610938908d908590600401614c78565b600060405180830381600087803b15801561095257600080fd5b505af1158015610966573d6000803e3d6000fd5b50505050846020015115610a0c5760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b916109bc90613219565b6040518363ffffffff1660e01b81526004016109d9929190614b96565b600060405180830381600087803b1580156109f357600080fd5b505af1158015610a07573d6000803e3d6000fd5b505050505b846020015115610a395764080000000060c085015260a0850151610a329085908861344a565b5050610a58565b64020000000060c085015260a0850151610a559085908861344a565b50505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610aa693929190614c91565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610af79493929190614cc4565b60405180910390a350505050509695505050505050565b600080600080610b37604080516060810182526000808252602082018190529181019190915290565b6000610b4388886136bd565b9050610b4f8982613724565b90965091508515610b6e57815160208301516040840151919650945092505b505093509350935093565b6060610b836143ed565b610b8b61444b565b600060606000610bd18c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b606081015160a0909101519093509150506001600160a01b038816610c085760405162461bcd60e51b81526004016103e890614af4565b896001600160a01b0316826001600160a01b031614610c5e5760405162461bcd60e51b81526020600482015260126024820152711251104e881157d393d517d0531313d5d15160721b60448201526064016103e8565b610c6c8b8b8a8c6001612e17565b6080890152506060870152604080870182905291865281516020810190925260008252610c9c918d918b91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610ced90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610d1f91614baf565b6001600160801b0316610d329190614bd7565b60808601515190915063ffffffff90811614610db857610d9d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b03909116602090910152610e24565b610e0d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151604001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610e45886060015161317b565b6040518363ffffffff1660e01b8152600401610e62929190614b96565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610eba57610eba8c8a876080015160000151613885565b60808501515163ffffffff1663fffffffe1901610f4857610edf8c8c61089c84614c5c565b6001600160a01b038c1663cf97256d8c610ef884614c5c565b6040518363ffffffff1660e01b8152600401610f15929190614c78565b600060405180830381600087803b158015610f2f57600080fd5b505af1158015610f43573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610fdd908c908590600401614c78565b600060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161102b9085908861344a565b50508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051611079929190614d0d565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d866040516110c893929190614d31565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161111f93929190614c91565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610af79493929190614cc4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111e95760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016103e8565b6111f281613910565b50565b600061121f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190614d61565b6000806000806000806112b4604080516060810182526000808252602082018190529181019190915290565b6112bc614486565b6112ca8c8c8b8d6000612e17565b909b5092965090945092509050876112f357600080600080975097509750975050505050611353565b8051608082015163ffffffff9182169091141597509550866113495780608001516001600160801b0316816060015183600001516113319190614baf565b6001600160801b03166113449190614d7a565b61134c565b60005b9450505050505b945094509450949050565b60606113686143ed565b61137061444b565b6000606060006113b68b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a001519150506113d58a8a848b6001612e17565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe190161144a5760405162461bcd60e51b815260206004820152601860248201527f4944413a20455f535542535f4e4f545f415050524f564544000000000000000060448201526064016103e8565b6114698a8a866040015160405180602001604052806000815250612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c0870152509095506114ba90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916114ec91614baf565b6001600160801b03166114ff9190614bd7565b90506115568560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b6060860180516001600160801b039283166020918201526080808901510151604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b938101939093529251909201516115ae931691906132c0565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b916115e69061317b565b6040518363ffffffff1660e01b8152600401611603929190614b96565b600060405180830381600087803b15801561161d57600080fd5b505af1158015611631573d6000803e3d6000fd5b505050506116488b84876080015160000151613885565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b9161168f90613219565b6040518363ffffffff1660e01b81526004016116ac929190614b96565b600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d915061170c9086908590600401614c78565b600060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161175a9085908861344a565b50508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d14286866040516117a8929190614d0d565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c866040516117f793929190614d31565b60405180910390a3505050505095945050505050565b606060006118518785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806118678a848b613b1e565b9150915080600001516001600160801b0316886001600160801b031610156118c55760405162461bcd60e51b81526020600482015260116024820152704944413a20455f494e4445585f47524f5760781b60448201526064016103e8565b6118d88a848b85858d8a60a00151613b7c565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b600080600061192c86866136bd565b905060008061193b8984613724565b915091508161195c5760405162461bcd60e51b81526004016103e890614d99565b6000816040015182602001516119729190614dc2565b6001600160801b03169050600061198c610587838a614ded565b60408051808201909152600f81526e4944413a20455f4f564552464c4f5760881b602082015284519192506119cc916001600160801b03169083906132c0565b95506119e1826001600160801b038316614d7a565b9650505050505094509492505050565b6000806000606080611a038888613dcf565b909250905060005b81518163ffffffff161015611be0576000611a24614486565b600080868563ffffffff1681518110611a3f57611a3f614e0f565b60200260200101519050611a728d878763ffffffff1681518110611a6557611a65614e0f565b6020026020010151613ec2565b909450925083611a8457611a84614e25565b8063ffffffff16836000015163ffffffff1614611aa357611aa3614e25565b6001600160a01b038d16634b61cc33308e611ac863ffffffff8616600160801b614b37565b60016040518563ffffffff1660e01b8152600401611ae99493929190614e3b565b600060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b2e9190810190614f61565b600081518110611b4057611b40614e0f565b6020026020010151915050611b6e604080516060810182526000808252602082018190529181019190915290565b611b788d83613724565b909450905083611b8a57611b8a614e25565b82608001516001600160801b031683606001518260000151611bac9190614baf565b6001600160801b0316611bbf9190614bd7565b611bc9908b614f95565b99505050505080611bd990614fd6565b9050611a0b565b50611beb8888613fde565b935060009250505093509350939050565b6060611c3e8784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b506001600160a01b038416611c655760405162461bcd60e51b81526004016103e890614af4565b611c6d6143ed565b611c7561444b565b611c838989888a6001612e17565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611ceb5760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611d1b9190614baf565b6001600160801b0316611d2e9190614d7a565b9050611d4f8a8a856040015160405180602001604052806000815250612f29565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611fdd90505764040000000060c0830152611da78285612f57565b60a0840152611dba8a8a61089c84614c5c565b6001600160a01b038a1663cf97256d8a611dd384614c5c565b6040518363ffffffff1660e01b8152600401611df0929190614c78565b600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611e6090613219565b6040518363ffffffff1660e01b8152600401611e7d929190614b96565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611edd908a908590600401614c78565b600060405180830381600087803b158015611ef757600080fd5b505af1158015611f0b573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611f5b929190614c78565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611fd69083908661344a565b5050612017565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061202e6143ed565b61203661444b565b60006060600061207c8b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a0015191505061209b8a8a848b6000612e17565b60808901521580156020890152606088019190915260408701919091529085526121115760808401515163ffffffff908116146121115760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a015181516020810190925291815294995061216a948f94508e9350909150612f29565b925083602001516122915764010000000060c084015261218a8386612f57565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b03169083015260808083019190915285015283516121ed908b908490614087565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f89161221f90613219565b6040518363ffffffff1660e01b815260040161223c929190614b96565b600060405180830381600087803b15801561225657600080fd5b505af115801561226a573d6000803e3d6000fd5b505064020000000060c0860152505060a084015161228a9084908761344a565b5050612551565b64040000000060c08401526122a68386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916122d891614baf565b6001600160801b03166122eb9190614bd7565b9050846080015160800151856060015160200181815161230b9190614dc2565b6001600160801b0316905250608080860151015160608601516040018051612334908390614baf565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b916123619061317b565b6040518363ffffffff1660e01b815260040161237e929190614b96565b600060405180830381600087803b15801561239857600080fd5b505af11580156123ac573d6000803e3d6000fd5b505050506123bf8b8b8361089c90614c5c565b6001600160a01b038b1663cf97256d8b6123d884614c5c565b6040518363ffffffff1660e01b81526004016123f5929190614c78565b600060405180830381600087803b15801561240f57600080fd5b505af1158015612423573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506124559086908590600401614c78565b600060405180830381600087803b15801561246f57600080fd5b505af1158015612483573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b039091169101525084516124b0908c908590614087565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b916124e290613219565b6040518363ffffffff1660e01b81526004016124ff929190614b96565b600060405180830381600087803b15801561251957600080fd5b505af115801561252d573d6000803e3d6000fd5b505064080000000060c0870152505060a085015161254d9085908861344a565b5050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2858560405161259d929190614d0d565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b856040516125ec93929190614d31565b60405180910390a35050505095945050505050565b60608060608060606126138787613dcf565b90925090506000612622614486565b82516001600160401b0381111561263b5761263b614e64565b604051908082528060200260200182016040528015612664578160200160208202803683370190505b50965082516001600160401b0381111561268057612680614e64565b6040519080825280602002602001820160405280156126a9578160200160208202803683370190505b50955082516001600160401b038111156126c5576126c5614e64565b6040519080825280602002602001820160405280156126ee578160200160208202803683370190505b50945060005b83518163ffffffff16101561284a576000858263ffffffff168151811061271d5761271d614e0f565b602002602001015190506000858363ffffffff168151811061274157612741614e0f565b602002602001015190506127558c82613ec2565b90955093508461276757612767614e25565b8163ffffffff16846000015163ffffffff161461278657612786614e25565b83602001518a8463ffffffff16815181106127a3576127a3614e0f565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff16815181106127e0576127e0614e0f565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff168151811061281757612817614e0f565b60200260200101906001600160801b031690816001600160801b03168152505050508061284390614fd6565b90506126f4565b50505050509250925092565b6060600061289a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806128b08a848b613b1e565b9150915060006128e0826040015183602001516128cd9190614dc2565b610587906001600160801b03168b614ded565b90506129048b858c86868688600001516128fa9190614dc2565b8b60a00151613b7c565b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b6000806000806000806000612978604080516060810182526000808252602082018190529181019190915290565b612980614486565b61298a8b8b613ec2565b9094509050836129cd5760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b80602001519850806040015197506129e589896136bd565b92506129f18b84613724565b909450915083612a0357612a03614e25565b8051608082015163ffffffff918216909114159750955086612a595780608001516001600160801b031681606001518360000151612a419190614baf565b6001600160801b0316612a549190614d7a565b612a5c565b60005b9450505050509295509295909350565b60606000612ab08685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000612ac482886136bd565b9050612ad0888261412e565b15612b135760405162461bcd60e51b81526020600482015260136024820152724944413a20455f494e4445585f45584953545360681b60448201526064016103e8565b876001600160a01b03166312a6a3f882612b64604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b031681525061317b565b6040518363ffffffff1660e01b8152600401612b81929190614b96565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612c01919061467c565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612c546144b4565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc09190615004565b6001600160a01b031614612d0a5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103e8565b604051632fd0a1cd60e21b8152339063bf42873490612d2d90859060040161467c565b602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e9190615031565b612da85760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103e8565b604051631fb6491d60e11b81523390633f6c923a90612dcb90859060040161467c565b600060405180830381865afa158015612de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906150d8565b9392505050565b6040805160608101825260008082526020820181905291810182905281906000612e3f614486565b6000612e4b8a896136bd565b9550612e5789876141da565b9450612e638b87613724565b9450905080612e845760405162461bcd60e51b81526004016103e890614d99565b612e8e8b86613ec2565b90935091508615612f1b5782612ed75760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b896001600160a01b031682602001516001600160a01b031614612efc57612efc614e25565b8763ffffffff16826040015163ffffffff1614612f1b57612f1b614e25565b509550955095509550959050565b612f3161444b565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf91906151de565b91945092509050828015612fe1575081155b15613105576000612ff2868861421b565b90508660c0015182166000036130f75760006130118860c00151614299565b88516040808b015160608c01518251600081526020810190935261303d9392309291906044810161521a565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e02926130ac929186916410000000009190911490889060040161525f565b6000604051808303816000875af11580156130cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f391908101906152a8565b9550505b613102866000614330565b50505b50505092915050565b60006001600160801b038211156131775760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103e8565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106131c5576131c5614e0f565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b8160018151811061320857613208614e0f565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061327d5761327d614e0f565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b8160018151811061320857613208614e0f565b6000838301826001600160801b0380871690831610156132f35760405162461bcd60e51b81526004016103e8919061467c565b50949350505050565b8060000361330957505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc3390613344903090879064010000000090600190600401614e3b565b600060405180830381865afa158015613361573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133899190810190614f61565b9050816133b2826000815181106133a2576133a2614e0f565b602002602001015160001c614358565b6133bc9190614f95565b60001b816000815181106133d2576133d2614e0f565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906134129086906401000000009086906004016152dc565b600060405180830381600087803b15801561342c57600080fd5b505af1158015613440573d6000803e3d6000fd5b5050505050505050565b6134526144b4565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa1580156134a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ca91906151de565b889650919450925090508280156134df575081155b156136b2576134ee848961421b565b93508760c0015181166000036136a057600061350d8960c00151614299565b89516040808c015160608d01518251600081526020810190935261353b9392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926135aa9291869164200000000091909114908b9060040161525f565b6000604051808303816000875af11580156135c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f191908101906152a8565b604051631fb6491d60e11b81529095503390633f6c923a9061361790889060040161467c565b600060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261365c91908101906150d8565b955061369860006136936136738c60800151614358565b61368e6136838b60e00151614358565b8b61010001516143c2565b6143d8565b6143c2565b610100870152505b6136af86866101000151614330565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613795573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137bd9190810190614f61565b90506000816000815181106137d4576137d4614e0f565b602002602001015160001c90506000826001815181106137f6576137f6614e0f565b602002602001015160001c9050600082119450841561382e576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b6000836001600160801b0316836001600160801b03161115829061386f5760405162461bcd60e51b81526004016103e8919061467c565b50600061387c8486614baf565b95945050505050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273__SlotsBitmapLibrary____________________9063a9472bf89060840160006040518083038186803b1580156138f357600080fd5b505af4158015613907573d6000803e3d6000fd5b50505050505050565b600061393a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036139905760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103e8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f29190614d61565b6139fa611224565b14613a535760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103e8565b6001600160a01b0381163003613aab5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103e8565b613ad3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc613afc611224565b604080519182526001600160a01b03841660208301520160405180910390a150565b604080516060810182526000808252602082018190529181018290526000613b4685856136bd565b9250613b528684613724565b9250905080613b735760405162461bcd60e51b81526004016103e890614d99565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b0316866000015186613baa9190614baf565b6001600160801b0316613bbc90614c5c565b613bc69190614bd7565b6040518363ffffffff1660e01b8152600401613be3929190614c78565b600060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b50505050613c4b878785604001516001600160801b0316866000015186613c389190614baf565b6001600160801b031661089c9190614bd7565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613c728761317b565b6040518363ffffffff1660e01b8152600401613c8f929190614b96565b600060405180830381600087803b158015613ca957600080fd5b505af1158015613cbd573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613d1b959493929190615369565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8d9190615031565b156134405760405162461bcd60e51b81526020600482015260126024820152714944413a20455f4c4f575f42414c414e434560701b60448201526064016103e8565b60608073__SlotsBitmapLibrary____________________6306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613e149493929190614e3b565b600060405180830381865af4158015613e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e5991908101906153a5565b909250905060005b8151811015613eba57613e8d84838381518110613e8057613e80614e0f565b60200260200101516141da565b828281518110613e9f57613e9f614e0f565b6020908102919091010152613eb381615469565b9050613e61565b509250929050565b6000613ecc614486565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613f21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f499190810190614f61565b9050600081600081518110613f6057613f60614e0f565b602002602001015160001c9050600082600181518110613f8257613f82614e0f565b602002602001015160001c9050600082119450841561382e57606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b81526004016140199493929190614e3b565b600060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261405e9190810190614f61565b90508060008151811061407357614073614e0f565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073__SlotsBitmapLibrary____________________9063a32470109060a401602060405180830381865af4158015614102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141269190615482565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015614185573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ad9190810190614f61565b90506000816000815181106141c4576141c4614e0f565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c83015291810183905260009101613706565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614252948a9460040161549f565b6000604051808303816000875af1158015614271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906152a8565b600064010000000082036142b557506330d9c91560e01b919050565b64040000000082036142cf5750630221347d60e61b919050565b64100000000082036142e95750635f9e7d7760e01b919050565b6402000000008203614303575063d86ed3e560e01b919050565b640800000000820361431d575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061425290869086906004016154e4565b60006001600160ff1b038211156131775760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e8565b60008183136143d15781612e10565b5090919050565b60008183136143e75782612e10565b50919050565b6040805160c0810182526000808252602082018190529181019190915260608101614431604080516060810182526000808252602082018190529181019190915290565b815260200161443e614486565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b03811681146111f257600080fd5b63ffffffff811681146111f257600080fd5b80356001600160801b038116811461432b57600080fd5b60008083601f84011261455f57600080fd5b5081356001600160401b0381111561457657600080fd5b60208301915083602082850101111561458e57600080fd5b9250929050565b60008060008060008060a087890312156145ae57600080fd5b86356145b98161450f565b955060208701356145c981614524565b945060408701356145d98161450f565b93506145e760608801614536565b925060808701356001600160401b0381111561460257600080fd5b61460e89828a0161454d565b979a9699509497509295939492505050565b60005b8381101561463b578181015183820152602001614623565b8381111561464a576000848401525b50505050565b60008151808452614668816020860160208601614620565b601f01601f19169290920160200192915050565b602081526000612e106020830184614650565b6000806000606084860312156146a457600080fd5b83356146af8161450f565b925060208401356146bf8161450f565b915060408401356146cf81614524565b809150509250925092565b60008060008060008060a087890312156146f357600080fd5b86356146fe8161450f565b9550602087013561470e8161450f565b9450604087013561471e81614524565b935060608701356145e78161450f565b60006020828403121561474057600080fd5b8135612e108161450f565b6000806000806080858703121561476157600080fd5b843561476c8161450f565b9350602085013561477c8161450f565b9250604085013561478c81614524565b9150606085013561479c8161450f565b939692955090935050565b6000806000806000608086880312156147bf57600080fd5b85356147ca8161450f565b945060208601356147da8161450f565b935060408601356147ea81614524565b925060608601356001600160401b0381111561480557600080fd5b6148118882890161454d565b969995985093965092949392505050565b60008060008060006080868803121561483a57600080fd5b85356148458161450f565b9450602086013561485581614524565b93506147ea60408701614536565b6000806000806080858703121561487957600080fd5b84356148848161450f565b935060208501356148948161450f565b925060408501356148a481614524565b9396929550929360600135925050565b6000806000606084860312156148c957600080fd5b83356148d48161450f565b925060208401356148e48161450f565b929592945050506040919091013590565b6000806040838503121561490857600080fd5b82356149138161450f565b915060208301356149238161450f565b809150509250929050565b600081518084526020808501945080840160005b838110156149675781516001600160801b031687529582019590820190600101614942565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156149b45781516001600160a01b03168452928401929084019060010161498f565b5050508381038285015285518082528683019183019060005b818110156149ef57835163ffffffff16835292840192918401916001016149cd565b50508481036040860152614a03818761492e565b98975050505050505050565b600080600080600060808688031215614a2757600080fd5b8535614a328161450f565b94506020860135614a4281614524565b93506040860135925060608601356001600160401b0381111561480557600080fd5b60008060408385031215614a7757600080fd5b8235614a828161450f565b946020939093013593505050565b60008060008060608587031215614aa657600080fd5b8435614ab18161450f565b93506020850135614ac181614524565b925060408501356001600160401b03811115614adc57600080fd5b614ae88782880161454d565b95989497509550505050565b6020808252601390820152724944413a20455f4e4f5f5a45524f5f5355425360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b4a57614b4a614b21565b500190565b600082821015614b6157614b61614b21565b500390565b600081518084526020808501945080840160005b8381101561496757815187529582019590820190600101614b7a565b8281526040602082015260006141266040830184614b66565b60006001600160801b0383811690831681811015614bcf57614bcf614b21565b039392505050565b60006001600160ff1b0381841382841380821686840486111615614bfd57614bfd614b21565b600160ff1b6000871282811687830589121615614c1c57614c1c614b21565b60008712925087820587128484161615614c3857614c38614b21565b87850587128184161615614c4e57614c4e614b21565b505050929093029392505050565b6000600160ff1b8201614c7157614c71614b21565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b038316602082015260606040820181905260009061387c90830184614650565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614d0390830184614650565b9695505050505050565b6001600160a01b038316815260406020820181905260009061412690830184614650565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009061387c90830184614650565b600060208284031215614d7357600080fd5b5051919050565b6000816000190483118215151615614d9457614d94614b21565b500290565b6020808252600f908201526e092888274408abe9c9ebe929c888ab608b1b604082015260600190565b60006001600160801b03808316818516808303821115614de457614de4614b21565b01949350505050565b600082614e0a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e9d57614e9d614e64565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614ecb57614ecb614e64565b604052919050565b60006001600160401b03821115614eec57614eec614e64565b5060051b60200190565b600082601f830112614f0757600080fd5b81516020614f1c614f1783614ed3565b614ea3565b82815260059290921b84018101918181019086841115614f3b57600080fd5b8286015b84811015614f565780518352918301918301614f3f565b509695505050505050565b600060208284031215614f7357600080fd5b81516001600160401b03811115614f8957600080fd5b61412684828501614ef6565b600080821280156001600160ff1b0384900385131615614fb757614fb7614b21565b600160ff1b8390038412811615614fd057614fd0614b21565b50500190565b600063ffffffff808316818103614fef57614fef614b21565b6001019392505050565b805161432b8161450f565b60006020828403121561501657600080fd5b8151612e108161450f565b8051801515811461432b57600080fd5b60006020828403121561504357600080fd5b612e1082615021565b805160ff8116811461432b57600080fd5b80516001600160e01b03198116811461432b57600080fd5b600082601f83011261508657600080fd5b81516001600160401b0381111561509f5761509f614e64565b6150b2601f8201601f1916602001614ea3565b8181528460208386010111156150c757600080fd5b614126826020830160208701614620565b6000602082840312156150ea57600080fd5b81516001600160401b038082111561510157600080fd5b90830190610160828603121561511657600080fd5b61511e614e7a565b6151278361504c565b81526151356020840161504c565b60208201526040830151604082015261515060608401614ff9565b60608201526151616080840161505d565b608082015260a08301518281111561517857600080fd5b61518487828601615075565b60a08301525060c083015160c082015260e083015160e08201526101009150818301518282015261012091506151bb828401614ff9565b8282015261014091506151cf828401614ff9565b91810191909152949350505050565b6000806000606084860312156151f357600080fd5b6151fc84615021565b925061520a60208501615021565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061524d90830185614650565b8281036080840152614a038185614650565b6001600160a01b038516815260806020820181905260009061528390830186614650565b8415156040840152828103606084015261529d8185614650565b979650505050505050565b6000602082840312156152ba57600080fd5b81516001600160401b038111156152d057600080fd5b61412684828501615075565b60018060a01b038416815282602082015260606040820152600061387c6060830184614b66565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061533690830186614650565b82810360808401526153488186614650565b905082810360a084015261535c8185614650565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261529d60a0830184614650565b600080604083850312156153b857600080fd5b82516001600160401b03808211156153cf57600080fd5b818501915085601f8301126153e357600080fd5b815160206153f3614f1783614ed3565b82815260059290921b8401810191818101908984111561541257600080fd5b948201945b8386101561543957855161542a81614524565b82529482019490820190615417565b9188015191965090935050508082111561545257600080fd5b5061545f85828601614ef6565b9150509250929050565b60006001820161547b5761547b614b21565b5060010190565b60006020828403121561549457600080fd5b8151612e1081614524565b60a0815260006154b260a0830188614650565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006154f76040830185614650565b9050826020830152939250505056fea2646970667358221220019aac5d0a3a3d40a0eb795bf0fc9f16fbf4058c65686e8d93782bca9a02a21164736f6c634300080d0033",
1027
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637730599e116100ad578063acf4a6c211610071578063acf4a6c21461030d578063b6dacdb814610320578063b96731c214610342578063cd7245c514610355578063d787840a146103ad57600080fd5b80637730599e146102635780637fbc763914610289578063899baaec1461029c5780639b2e48bc146102cc578063acafa1b8146102fa57600080fd5b806346951954116100f457806346951954146101d957806350d75d25146101ee57806352d1902d146101f65780635b5340511461020c5780636041ae961461025057600080fd5b8063232d2b581461012657806323fc23f31461014f5780632e5e74c6146101935780633fd4176a146101a6575b600080fd5b610139610134366004614595565b6103c0565b604051610146919061467c565b60405180910390f35b61016261015d36600461468f565b610b0e565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610146565b6101396101a13660046146da565b610b79565b6101c173__SlotsBitmapLibrary____________________81565b6040516001600160a01b039091168152602001610146565b6101ec6101e736600461472e565b611171565b005b6101c16111f5565b6101fe611224565b604051908152602001610146565b61021f61021a36600461474b565b611288565b6040516101469493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b61013961025e3660046147a7565b61135e565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a6746101fe565b610139610297366004614822565b61180d565b6102af6102aa366004614863565b61191d565b604080519283526001600160801b03909116602083015201610146565b6102df6102da3660046148b4565b6119f1565b60408051938452602084019290925290820152606001610146565b6101396103083660046146da565b611bfc565b61013961031b3660046147a7565b612024565b61033361032e3660046148f5565b612601565b60405161014693929190614972565b610139610350366004614a0f565b612856565b610368610363366004614a64565b61294a565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610146565b6101396103bb366004614a90565b612a6c565b60606001600160a01b0385166103f15760405162461bcd60e51b81526004016103e890614af4565b60405180910390fd5b6103f96143ed565b61040161444b565b60606000806104468c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b90508060a00151925080606001519150506104658b828b8d6000612e17565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104a1918d918c91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105055764040000000060c08401526104fb8386612f57565b60a0850152610520565b64010000000060c084015261051a8386612f57565b60a08501525b8360200151801561053d575060808401515163ffffffff90811614155b156106185761058c8460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b031661057d9190614b37565b6105879190614b4f565b61310e565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518363ffffffff1660e01b81526004016105e1929190614b96565b600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b5050505061082e565b8360200151156106955761065d8460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b031661057d9190614b37565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f885604001516107148760800151613219565b6040518363ffffffff1660e01b8152600401610731929190614b96565b600060405180830381600087803b15801561074b57600080fd5b505af115801561075f573d6000803e3d6000fd5b5050604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b60208201526060880151909101516107a693506001600160801b031691508a906132c0565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107de9061317b565b6040518363ffffffff1660e01b81526004016107fb929190614b96565b600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161085e9190614baf565b6001600160801b03166108719190614bd7565b905063ffffffff801685608001516000015163ffffffff160361090a576108a18c8361089c84614c5c565b6132fc565b6001600160a01b038c1663cf97256d836108ba84614c5c565b6040518363ffffffff1660e01b81526004016108d7929190614c78565b600060405180830381600087803b1580156108f157600080fd5b505af1158015610905573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d90610938908d908590600401614c78565b600060405180830381600087803b15801561095257600080fd5b505af1158015610966573d6000803e3d6000fd5b50505050846020015115610a0c5760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b916109bc90613219565b6040518363ffffffff1660e01b81526004016109d9929190614b96565b600060405180830381600087803b1580156109f357600080fd5b505af1158015610a07573d6000803e3d6000fd5b505050505b846020015115610a395764080000000060c085015260a0850151610a329085908861344a565b5050610a58565b64020000000060c085015260a0850151610a559085908861344a565b50505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610aa693929190614c91565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610af79493929190614cc4565b60405180910390a350505050509695505050505050565b600080600080610b37604080516060810182526000808252602082018190529181019190915290565b6000610b4388886136bd565b9050610b4f8982613724565b90965091508515610b6e57815160208301516040840151919650945092505b505093509350935093565b6060610b836143ed565b610b8b61444b565b600060606000610bd18c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b606081015160a0909101519093509150506001600160a01b038816610c085760405162461bcd60e51b81526004016103e890614af4565b896001600160a01b0316826001600160a01b031614610c5e5760405162461bcd60e51b81526020600482015260126024820152711251104e881157d393d517d0531313d5d15160721b60448201526064016103e8565b610c6c8b8b8a8c6001612e17565b6080890152506060870152604080870182905291865281516020810190925260008252610c9c918d918b91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610ced90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610d1f91614baf565b6001600160801b0316610d329190614bd7565b60808601515190915063ffffffff90811614610db857610d9d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b03909116602090910152610e24565b610e0d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151604001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610e45886060015161317b565b6040518363ffffffff1660e01b8152600401610e62929190614b96565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610eba57610eba8c8a876080015160000151613885565b60808501515163ffffffff1663fffffffe1901610f4857610edf8c8c61089c84614c5c565b6001600160a01b038c1663cf97256d8c610ef884614c5c565b6040518363ffffffff1660e01b8152600401610f15929190614c78565b600060405180830381600087803b158015610f2f57600080fd5b505af1158015610f43573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610fdd908c908590600401614c78565b600060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161102b9085908861344a565b50508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051611079929190614d0d565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d866040516110c893929190614d31565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161111f93929190614c91565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610af79493929190614cc4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111e95760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016103e8565b6111f281613910565b50565b600061121f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190614d61565b6000806000806000806112b4604080516060810182526000808252602082018190529181019190915290565b6112bc614486565b6112ca8c8c8b8d6000612e17565b909b5092965090945092509050876112f357600080600080975097509750975050505050611353565b8051608082015163ffffffff9182169091141597509550866113495780608001516001600160801b0316816060015183600001516113319190614baf565b6001600160801b03166113449190614d7a565b61134c565b60005b9450505050505b945094509450949050565b60606113686143ed565b61137061444b565b6000606060006113b68b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a001519150506113d58a8a848b6001612e17565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe190161144a5760405162461bcd60e51b815260206004820152601860248201527f4944413a20455f535542535f4e4f545f415050524f564544000000000000000060448201526064016103e8565b6114698a8a866040015160405180602001604052806000815250612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c0870152509095506114ba90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916114ec91614baf565b6001600160801b03166114ff9190614bd7565b90506115568560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b6060860180516001600160801b039283166020918201526080808901510151604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b938101939093529251909201516115ae931691906132c0565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b916115e69061317b565b6040518363ffffffff1660e01b8152600401611603929190614b96565b600060405180830381600087803b15801561161d57600080fd5b505af1158015611631573d6000803e3d6000fd5b505050506116488b84876080015160000151613885565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b9161168f90613219565b6040518363ffffffff1660e01b81526004016116ac929190614b96565b600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d915061170c9086908590600401614c78565b600060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161175a9085908861344a565b50508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d14286866040516117a8929190614d0d565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c866040516117f793929190614d31565b60405180910390a3505050505095945050505050565b606060006118518785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806118678a848b613b1e565b9150915080600001516001600160801b0316886001600160801b031610156118c55760405162461bcd60e51b81526020600482015260116024820152704944413a20455f494e4445585f47524f5760781b60448201526064016103e8565b6118d88a848b85858d8a60a00151613b7c565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b600080600061192c86866136bd565b905060008061193b8984613724565b915091508161195c5760405162461bcd60e51b81526004016103e890614d99565b6000816040015182602001516119729190614dc2565b6001600160801b03169050600061198c610587838a614ded565b60408051808201909152600f81526e4944413a20455f4f564552464c4f5760881b602082015284519192506119cc916001600160801b03169083906132c0565b95506119e1826001600160801b038316614d7a565b9650505050505094509492505050565b6000806000606080611a038888613dcf565b909250905060005b81518163ffffffff161015611be0576000611a24614486565b600080868563ffffffff1681518110611a3f57611a3f614e0f565b60200260200101519050611a728d878763ffffffff1681518110611a6557611a65614e0f565b6020026020010151613ec2565b909450925083611a8457611a84614e25565b8063ffffffff16836000015163ffffffff1614611aa357611aa3614e25565b6001600160a01b038d16634b61cc33308e611ac863ffffffff8616600160801b614b37565b60016040518563ffffffff1660e01b8152600401611ae99493929190614e3b565b600060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b2e9190810190614f61565b600081518110611b4057611b40614e0f565b6020026020010151915050611b6e604080516060810182526000808252602082018190529181019190915290565b611b788d83613724565b909450905083611b8a57611b8a614e25565b82608001516001600160801b031683606001518260000151611bac9190614baf565b6001600160801b0316611bbf9190614bd7565b611bc9908b614f95565b99505050505080611bd990614fd6565b9050611a0b565b50611beb8888613fde565b935060009250505093509350939050565b6060611c3e8784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b506001600160a01b038416611c655760405162461bcd60e51b81526004016103e890614af4565b611c6d6143ed565b611c7561444b565b611c838989888a6001612e17565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611ceb5760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611d1b9190614baf565b6001600160801b0316611d2e9190614d7a565b9050611d4f8a8a856040015160405180602001604052806000815250612f29565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611fdd90505764040000000060c0830152611da78285612f57565b60a0840152611dba8a8a61089c84614c5c565b6001600160a01b038a1663cf97256d8a611dd384614c5c565b6040518363ffffffff1660e01b8152600401611df0929190614c78565b600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611e6090613219565b6040518363ffffffff1660e01b8152600401611e7d929190614b96565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611edd908a908590600401614c78565b600060405180830381600087803b158015611ef757600080fd5b505af1158015611f0b573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611f5b929190614c78565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611fd69083908661344a565b5050612017565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061202e6143ed565b61203661444b565b60006060600061207c8b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a0015191505061209b8a8a848b6000612e17565b60808901521580156020890152606088019190915260408701919091529085526121115760808401515163ffffffff908116146121115760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a015181516020810190925291815294995061216a948f94508e9350909150612f29565b925083602001516122915764010000000060c084015261218a8386612f57565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b03169083015260808083019190915285015283516121ed908b908490614087565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f89161221f90613219565b6040518363ffffffff1660e01b815260040161223c929190614b96565b600060405180830381600087803b15801561225657600080fd5b505af115801561226a573d6000803e3d6000fd5b505064020000000060c0860152505060a084015161228a9084908761344a565b5050612551565b64040000000060c08401526122a68386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916122d891614baf565b6001600160801b03166122eb9190614bd7565b9050846080015160800151856060015160200181815161230b9190614dc2565b6001600160801b0316905250608080860151015160608601516040018051612334908390614baf565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b916123619061317b565b6040518363ffffffff1660e01b815260040161237e929190614b96565b600060405180830381600087803b15801561239857600080fd5b505af11580156123ac573d6000803e3d6000fd5b505050506123bf8b8b8361089c90614c5c565b6001600160a01b038b1663cf97256d8b6123d884614c5c565b6040518363ffffffff1660e01b81526004016123f5929190614c78565b600060405180830381600087803b15801561240f57600080fd5b505af1158015612423573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506124559086908590600401614c78565b600060405180830381600087803b15801561246f57600080fd5b505af1158015612483573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b039091169101525084516124b0908c908590614087565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b916124e290613219565b6040518363ffffffff1660e01b81526004016124ff929190614b96565b600060405180830381600087803b15801561251957600080fd5b505af115801561252d573d6000803e3d6000fd5b505064080000000060c0870152505060a085015161254d9085908861344a565b5050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2858560405161259d929190614d0d565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b856040516125ec93929190614d31565b60405180910390a35050505095945050505050565b60608060608060606126138787613dcf565b90925090506000612622614486565b82516001600160401b0381111561263b5761263b614e64565b604051908082528060200260200182016040528015612664578160200160208202803683370190505b50965082516001600160401b0381111561268057612680614e64565b6040519080825280602002602001820160405280156126a9578160200160208202803683370190505b50955082516001600160401b038111156126c5576126c5614e64565b6040519080825280602002602001820160405280156126ee578160200160208202803683370190505b50945060005b83518163ffffffff16101561284a576000858263ffffffff168151811061271d5761271d614e0f565b602002602001015190506000858363ffffffff168151811061274157612741614e0f565b602002602001015190506127558c82613ec2565b90955093508461276757612767614e25565b8163ffffffff16846000015163ffffffff161461278657612786614e25565b83602001518a8463ffffffff16815181106127a3576127a3614e0f565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff16815181106127e0576127e0614e0f565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff168151811061281757612817614e0f565b60200260200101906001600160801b031690816001600160801b03168152505050508061284390614fd6565b90506126f4565b50505050509250925092565b6060600061289a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806128b08a848b613b1e565b9150915060006128e0826040015183602001516128cd9190614dc2565b610587906001600160801b03168b614ded565b90506129048b858c86868688600001516128fa9190614dc2565b8b60a00151613b7c565b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b6000806000806000806000612978604080516060810182526000808252602082018190529181019190915290565b612980614486565b61298a8b8b613ec2565b9094509050836129cd5760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b80602001519850806040015197506129e589896136bd565b92506129f18b84613724565b909450915083612a0357612a03614e25565b8051608082015163ffffffff918216909114159750955086612a595780608001516001600160801b031681606001518360000151612a419190614baf565b6001600160801b0316612a549190614d7a565b612a5c565b60005b9450505050509295509295909350565b60606000612ab08685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000612ac482886136bd565b9050612ad0888261412e565b15612b135760405162461bcd60e51b81526020600482015260136024820152724944413a20455f494e4445585f45584953545360681b60448201526064016103e8565b876001600160a01b03166312a6a3f882612b64604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b031681525061317b565b6040518363ffffffff1660e01b8152600401612b81929190614b96565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612c01919061467c565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612c546144b4565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc09190615004565b6001600160a01b031614612d0a5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103e8565b604051632fd0a1cd60e21b8152339063bf42873490612d2d90859060040161467c565b602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e9190615031565b612da85760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103e8565b604051631fb6491d60e11b81523390633f6c923a90612dcb90859060040161467c565b600060405180830381865afa158015612de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906150d8565b9392505050565b6040805160608101825260008082526020820181905291810182905281906000612e3f614486565b6000612e4b8a896136bd565b9550612e5789876141da565b9450612e638b87613724565b9450905080612e845760405162461bcd60e51b81526004016103e890614d99565b612e8e8b86613ec2565b90935091508615612f1b5782612ed75760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b896001600160a01b031682602001516001600160a01b031614612efc57612efc614e25565b8763ffffffff16826040015163ffffffff1614612f1b57612f1b614e25565b509550955095509550959050565b612f3161444b565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf91906151de565b91945092509050828015612fe1575081155b15613105576000612ff2868861421b565b90508660c0015182166000036130f75760006130118860c00151614299565b88516040808b015160608c01518251600081526020810190935261303d9392309291906044810161521a565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e02926130ac929186916410000000009190911490889060040161525f565b6000604051808303816000875af11580156130cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f391908101906152a8565b9550505b613102866000614330565b50505b50505092915050565b60006001600160801b038211156131775760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103e8565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106131c5576131c5614e0f565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b8160018151811061320857613208614e0f565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061327d5761327d614e0f565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b8160018151811061320857613208614e0f565b6000838301826001600160801b0380871690831610156132f35760405162461bcd60e51b81526004016103e8919061467c565b50949350505050565b8060000361330957505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc3390613344903090879064010000000090600190600401614e3b565b600060405180830381865afa158015613361573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133899190810190614f61565b9050816133b2826000815181106133a2576133a2614e0f565b602002602001015160001c614358565b6133bc9190614f95565b60001b816000815181106133d2576133d2614e0f565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906134129086906401000000009086906004016152dc565b600060405180830381600087803b15801561342c57600080fd5b505af1158015613440573d6000803e3d6000fd5b5050505050505050565b6134526144b4565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa1580156134a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ca91906151de565b889650919450925090508280156134df575081155b156136b2576134ee848961421b565b93508760c0015181166000036136a057600061350d8960c00151614299565b89516040808c015160608d01518251600081526020810190935261353b9392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926135aa9291869164200000000091909114908b9060040161525f565b6000604051808303816000875af11580156135c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f191908101906152a8565b604051631fb6491d60e11b81529095503390633f6c923a9061361790889060040161467c565b600060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261365c91908101906150d8565b955061369860006136936136738c60800151614358565b61368e6136838b60e00151614358565b8b61010001516143c2565b6143d8565b6143c2565b610100870152505b6136af86866101000151614330565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613795573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137bd9190810190614f61565b90506000816000815181106137d4576137d4614e0f565b602002602001015160001c90506000826001815181106137f6576137f6614e0f565b602002602001015160001c9050600082119450841561382e576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b6000836001600160801b0316836001600160801b03161115829061386f5760405162461bcd60e51b81526004016103e8919061467c565b50600061387c8486614baf565b95945050505050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273__SlotsBitmapLibrary____________________9063a9472bf89060840160006040518083038186803b1580156138f357600080fd5b505af4158015613907573d6000803e3d6000fd5b50505050505050565b600061393a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036139905760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103e8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f29190614d61565b6139fa611224565b14613a535760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103e8565b6001600160a01b0381163003613aab5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103e8565b613ad3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc613afc611224565b604080519182526001600160a01b03841660208301520160405180910390a150565b604080516060810182526000808252602082018190529181018290526000613b4685856136bd565b9250613b528684613724565b9250905080613b735760405162461bcd60e51b81526004016103e890614d99565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b0316866000015186613baa9190614baf565b6001600160801b0316613bbc90614c5c565b613bc69190614bd7565b6040518363ffffffff1660e01b8152600401613be3929190614c78565b600060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b50505050613c4b878785604001516001600160801b0316866000015186613c389190614baf565b6001600160801b031661089c9190614bd7565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613c728761317b565b6040518363ffffffff1660e01b8152600401613c8f929190614b96565b600060405180830381600087803b158015613ca957600080fd5b505af1158015613cbd573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613d1b959493929190615369565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8d9190615031565b156134405760405162461bcd60e51b81526020600482015260126024820152714944413a20455f4c4f575f42414c414e434560701b60448201526064016103e8565b60608073__SlotsBitmapLibrary____________________6306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613e149493929190614e3b565b600060405180830381865af4158015613e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e5991908101906153a5565b909250905060005b8151811015613eba57613e8d84838381518110613e8057613e80614e0f565b60200260200101516141da565b828281518110613e9f57613e9f614e0f565b6020908102919091010152613eb381615469565b9050613e61565b509250929050565b6000613ecc614486565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613f21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f499190810190614f61565b9050600081600081518110613f6057613f60614e0f565b602002602001015160001c9050600082600181518110613f8257613f82614e0f565b602002602001015160001c9050600082119450841561382e57606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b81526004016140199493929190614e3b565b600060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261405e9190810190614f61565b90508060008151811061407357614073614e0f565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073__SlotsBitmapLibrary____________________9063a32470109060a401602060405180830381865af4158015614102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141269190615482565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015614185573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ad9190810190614f61565b90506000816000815181106141c4576141c4614e0f565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c83015291810183905260009101613706565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614252948a9460040161549f565b6000604051808303816000875af1158015614271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906152a8565b600064010000000082036142b557506330d9c91560e01b919050565b64040000000082036142cf5750630221347d60e61b919050565b64100000000082036142e95750635f9e7d7760e01b919050565b6402000000008203614303575063d86ed3e560e01b919050565b640800000000820361431d575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061425290869086906004016154e4565b60006001600160ff1b038211156131775760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e8565b60008183136143d15781612e10565b5090919050565b60008183136143e75782612e10565b50919050565b6040805160c0810182526000808252602082018190529181019190915260608101614431604080516060810182526000808252602082018190529181019190915290565b815260200161443e614486565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b03811681146111f257600080fd5b63ffffffff811681146111f257600080fd5b80356001600160801b038116811461432b57600080fd5b60008083601f84011261455f57600080fd5b5081356001600160401b0381111561457657600080fd5b60208301915083602082850101111561458e57600080fd5b9250929050565b60008060008060008060a087890312156145ae57600080fd5b86356145b98161450f565b955060208701356145c981614524565b945060408701356145d98161450f565b93506145e760608801614536565b925060808701356001600160401b0381111561460257600080fd5b61460e89828a0161454d565b979a9699509497509295939492505050565b60005b8381101561463b578181015183820152602001614623565b8381111561464a576000848401525b50505050565b60008151808452614668816020860160208601614620565b601f01601f19169290920160200192915050565b602081526000612e106020830184614650565b6000806000606084860312156146a457600080fd5b83356146af8161450f565b925060208401356146bf8161450f565b915060408401356146cf81614524565b809150509250925092565b60008060008060008060a087890312156146f357600080fd5b86356146fe8161450f565b9550602087013561470e8161450f565b9450604087013561471e81614524565b935060608701356145e78161450f565b60006020828403121561474057600080fd5b8135612e108161450f565b6000806000806080858703121561476157600080fd5b843561476c8161450f565b9350602085013561477c8161450f565b9250604085013561478c81614524565b9150606085013561479c8161450f565b939692955090935050565b6000806000806000608086880312156147bf57600080fd5b85356147ca8161450f565b945060208601356147da8161450f565b935060408601356147ea81614524565b925060608601356001600160401b0381111561480557600080fd5b6148118882890161454d565b969995985093965092949392505050565b60008060008060006080868803121561483a57600080fd5b85356148458161450f565b9450602086013561485581614524565b93506147ea60408701614536565b6000806000806080858703121561487957600080fd5b84356148848161450f565b935060208501356148948161450f565b925060408501356148a481614524565b9396929550929360600135925050565b6000806000606084860312156148c957600080fd5b83356148d48161450f565b925060208401356148e48161450f565b929592945050506040919091013590565b6000806040838503121561490857600080fd5b82356149138161450f565b915060208301356149238161450f565b809150509250929050565b600081518084526020808501945080840160005b838110156149675781516001600160801b031687529582019590820190600101614942565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156149b45781516001600160a01b03168452928401929084019060010161498f565b5050508381038285015285518082528683019183019060005b818110156149ef57835163ffffffff16835292840192918401916001016149cd565b50508481036040860152614a03818761492e565b98975050505050505050565b600080600080600060808688031215614a2757600080fd5b8535614a328161450f565b94506020860135614a4281614524565b93506040860135925060608601356001600160401b0381111561480557600080fd5b60008060408385031215614a7757600080fd5b8235614a828161450f565b946020939093013593505050565b60008060008060608587031215614aa657600080fd5b8435614ab18161450f565b93506020850135614ac181614524565b925060408501356001600160401b03811115614adc57600080fd5b614ae88782880161454d565b95989497509550505050565b6020808252601390820152724944413a20455f4e4f5f5a45524f5f5355425360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b4a57614b4a614b21565b500190565b600082821015614b6157614b61614b21565b500390565b600081518084526020808501945080840160005b8381101561496757815187529582019590820190600101614b7a565b8281526040602082015260006141266040830184614b66565b60006001600160801b0383811690831681811015614bcf57614bcf614b21565b039392505050565b60006001600160ff1b0381841382841380821686840486111615614bfd57614bfd614b21565b600160ff1b6000871282811687830589121615614c1c57614c1c614b21565b60008712925087820587128484161615614c3857614c38614b21565b87850587128184161615614c4e57614c4e614b21565b505050929093029392505050565b6000600160ff1b8201614c7157614c71614b21565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b038316602082015260606040820181905260009061387c90830184614650565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614d0390830184614650565b9695505050505050565b6001600160a01b038316815260406020820181905260009061412690830184614650565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009061387c90830184614650565b600060208284031215614d7357600080fd5b5051919050565b6000816000190483118215151615614d9457614d94614b21565b500290565b6020808252600f908201526e092888274408abe9c9ebe929c888ab608b1b604082015260600190565b60006001600160801b03808316818516808303821115614de457614de4614b21565b01949350505050565b600082614e0a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e9d57614e9d614e64565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614ecb57614ecb614e64565b604052919050565b60006001600160401b03821115614eec57614eec614e64565b5060051b60200190565b600082601f830112614f0757600080fd5b81516020614f1c614f1783614ed3565b614ea3565b82815260059290921b84018101918181019086841115614f3b57600080fd5b8286015b84811015614f565780518352918301918301614f3f565b509695505050505050565b600060208284031215614f7357600080fd5b81516001600160401b03811115614f8957600080fd5b61412684828501614ef6565b600080821280156001600160ff1b0384900385131615614fb757614fb7614b21565b600160ff1b8390038412811615614fd057614fd0614b21565b50500190565b600063ffffffff808316818103614fef57614fef614b21565b6001019392505050565b805161432b8161450f565b60006020828403121561501657600080fd5b8151612e108161450f565b8051801515811461432b57600080fd5b60006020828403121561504357600080fd5b612e1082615021565b805160ff8116811461432b57600080fd5b80516001600160e01b03198116811461432b57600080fd5b600082601f83011261508657600080fd5b81516001600160401b0381111561509f5761509f614e64565b6150b2601f8201601f1916602001614ea3565b8181528460208386010111156150c757600080fd5b614126826020830160208701614620565b6000602082840312156150ea57600080fd5b81516001600160401b038082111561510157600080fd5b90830190610160828603121561511657600080fd5b61511e614e7a565b6151278361504c565b81526151356020840161504c565b60208201526040830151604082015261515060608401614ff9565b60608201526151616080840161505d565b608082015260a08301518281111561517857600080fd5b61518487828601615075565b60a08301525060c083015160c082015260e083015160e08201526101009150818301518282015261012091506151bb828401614ff9565b8282015261014091506151cf828401614ff9565b91810191909152949350505050565b6000806000606084860312156151f357600080fd5b6151fc84615021565b925061520a60208501615021565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061524d90830185614650565b8281036080840152614a038185614650565b6001600160a01b038516815260806020820181905260009061528390830186614650565b8415156040840152828103606084015261529d8185614650565b979650505050505050565b6000602082840312156152ba57600080fd5b81516001600160401b038111156152d057600080fd5b61412684828501615075565b60018060a01b038416815282602082015260606040820152600061387c6060830184614b66565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061533690830186614650565b82810360808401526153488186614650565b905082810360a084015261535c8185614650565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261529d60a0830184614650565b600080604083850312156153b857600080fd5b82516001600160401b03808211156153cf57600080fd5b818501915085601f8301126153e357600080fd5b815160206153f3614f1783614ed3565b82815260059290921b8401810191818101908984111561541257600080fd5b948201945b8386101561543957855161542a81614524565b82529482019490820190615417565b9188015191965090935050508082111561545257600080fd5b5061545f85828601614ef6565b9150509250929050565b60006001820161547b5761547b614b21565b5060010190565b60006020828403121561549457600080fd5b8151612e1081614524565b60a0815260006154b260a0830188614650565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006154f76040830185614650565b9050826020830152939250505056fea2646970667358221220019aac5d0a3a3d40a0eb795bf0fc9f16fbf4058c65686e8d93782bca9a02a21164736f6c634300080d0033",
1025
+ "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uuid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"name\":\"CodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"IndexDistributionClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexSubscribed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexUnitsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexUnsubscribed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"oldIndexValue\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"newIndexValue\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"totalUnitsPending\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"totalUnitsApproved\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"IndexUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"SubscriptionApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SubscriptionDistributionClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"SubscriptionRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"SubscriptionUnitsUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SLOTS_BITMAP_LIBRARY_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"approveSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"calculateDistribution\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"newIndexValue\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"distribute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCodeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"codeAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"}],\"name\":\"getIndex\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exist\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"indexValue\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalUnitsApproved\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"totalUnitsPending\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"getSubscription\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exist\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"pendingDistribution\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"}],\"name\":\"getSubscriptionByID\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"pendingDistribution\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"listSubscriptions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"publishers\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"indexIds\",\"type\":\"uint32[]\"},{\"internalType\":\"uint128[]\",\"name\":\"unitsList\",\"type\":\"uint128[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"dynamicBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"updateCode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"uint128\",\"name\":\"indexValue\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"indexId\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"units\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateSubscription\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Please read IInstantDistributionAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"approveSubscription(address,address,uint32,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.approveSubscription implementation\"},\"calculateDistribution(address,address,uint32,uint256)\":{\"details\":\"IInstantDistributionAgreementV1.calculateDistribution implementation\"},\"claim(address,address,uint32,address,bytes)\":{\"details\":\"Claim pending distributions\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct) The subscription should not be approved yet # App callbacks - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"}},\"createIndex(address,uint32,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.createIndex implementation\"},\"deleteSubscription(address,address,uint32,address,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.deleteSubscription implementation\"},\"distribute(address,uint32,uint256,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.distribute implementation\"},\"getCodeAddress()\":{\"details\":\"Get current implementation code address.\"},\"getIndex(address,address,uint32)\":{\"details\":\"IInstantDistributionAgreementV1.getIndex implementation\"},\"getSubscription(address,address,uint32,address)\":{\"details\":\"IInstantDistributionAgreementV1.getSubscription implementation\"},\"getSubscriptionByID(address,bytes32)\":{\"details\":\"IInstantDistributionAgreementV1.getSubscriptionByID implementation\"},\"listSubscriptions(address,address)\":{\"details\":\"IInstantDistributionAgreementV1.listSubscriptions implementation\"},\"proxiableUUID()\":{\"details\":\"Proxiable UUID marker function, this would help to avoid wrong logic contract to be used for upgrading. NOTE: The semantics of the UUID deviates from the actual UUPS standard, where it is equivalent of _IMPLEMENTATION_SLOT.\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"ISuperAgreement.realtimeBalanceOf implementation\"},\"revokeSubscription(address,address,uint32,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.revokeSubscription implementation\"},\"updateIndex(address,uint32,uint128,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.updateIndex implementation\"},\"updateSubscription(address,uint32,address,uint128,bytes)\":{\"details\":\"IInstantDistributionAgreementV1.updateSubscription implementation\"}},\"stateVariables\":{\"_MAX_NUM_SUBS\":{\"details\":\"Maximum number of subscriptions a subscriber can have\"},\"_PUBLISHER_DEPOSIT_STATE_SLOT_ID\":{\"details\":\"Publisher state slot id for storing its deposit amount\"},\"_SUBSCRIBER_SUBS_BITMAP_STATE_SLOT_ID\":{\"details\":\"Subscriber state slot id for storing subs bitmap\"},\"_SUBSCRIBER_SUB_DATA_STATE_SLOT_ID_START\":{\"details\":\"Subscriber state slot id starting ptoint for subscription data\"},\"_UNALLOCATED_SUB_ID\":{\"details\":\"A special id that indicating the subscription is not approved yet\"}},\"title\":\"InstantDistributionAgreementV1 contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/agreements/InstantDistributionAgreementV1.sol\":\"InstantDistributionAgreementV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xe59fc8bbe728c574773b5d3a3e9cfb4e8f323e9a3c3267a82d36fb79921b9997\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0e21d969b3b996ab211eff83fa5bb7041614c0ac597c7479012c0fe625f4e15f\",\"dweb:/ipfs/QmWThBae9FCDgCAcco2bZicvsPq8vz5K1XW66hz3LXSK2V\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x107ee59e59b54e9ee85997d135a9bfc97979eda1143c7b1b61b63959777bff91\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1a235f5a0fc7a04143662a69279d513d2434eeb7d60afdcc57911dcfeef712e5\",\"dweb:/ipfs/QmbUDhcf9mizwLxyCttibMxEM9NUun4guT3Sc9vdEaSxAv\"]},\"project:/contracts/agreements/InstantDistributionAgreementV1.sol\":{\"keccak256\":\"0xcd1abd4778689c744353c4d6b3163c298157cdb615a57239c9f6c7937422dac9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://19c99bcdb9d01ad5252b8aa15ffc0e18efd828c4c43c3608adbe929dbc90b060\",\"dweb:/ipfs/QmSHapsgVcfYVoFCUFyydzo3SiY9KWbPmBqBcAon6nyKKr\"]},\"project:/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x47948789bc2265e6228f70ddd9eb194be4e35b1c5ce598f5b5a01fcb48def27b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d758b5560a735d8ab2175a2b76afe38f99bf170800917c4f0adae1f8862ad785\",\"dweb:/ipfs/QmXZToKtnJXmJq4hBqkwVAj6CYkG2DGbErt9G9T7sW4Zoe\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0x2d9b845469a35b66f1166406149ac85e933dbe9156f57e4a4078948e6a6e71a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://48e5cb11d4b90e42af521e23b33d57e12187c989d8d56be332b1649308168d45\",\"dweb:/ipfs/QmdaTW4HfpFfHjkHiJ3CmZUmCfLJyFCPTnCygwhiNhx3Tu\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9189eaba9e856cc4932ea29eeaf4e89a09448dde13860591691ec122856fdc75\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7d5991b906bba706373f5bfe3c2c8789a7a45360a41eee50574272b393c4ab70\",\"dweb:/ipfs/QmVCXVnYA13vMNxa7rGzNB129sUXiGE1asuHdnEMEPVZsp\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/libs/SlotsBitmapLibrary.sol\":{\"keccak256\":\"0x8702dc0404f8b03c21b82e2144b1c1d8ca0c0b22986159985749d6d25eefb4c7\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d16223a93a87019af0991d791c4ec2b9d4e80b87e2f2e0981848e4f015008e75\",\"dweb:/ipfs/QmarrBFqsszA65mmyySyfrpUHPvgDdBwUzyhnBZTEQSLwi\"]},\"project:/contracts/libs/UInt128SafeMath.sol\":{\"keccak256\":\"0xa606106997a2d49781bb75153ca063cc156a4bd2995b93689804fb1f633598bb\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://bf5329c5e16ce8f5cbbb5b82f74afb6641a49ed78a4f6f9b1f80bd16c0774537\",\"dweb:/ipfs/QmWqeSsvzRsxoAszVt9T1G19vt1fdT5HRhJcE9LVYEcDt1\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]}},\"version\":1}",
1026
+ "bytecode": "0x60a06040523480156200001157600080fd5b50604051620055d0380380620055d0833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161553c62000094600039600061117c015261553c6000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637730599e116100ad578063acf4a6c211610071578063acf4a6c21461030d578063b6dacdb814610320578063b96731c214610342578063cd7245c514610355578063d787840a146103ad57600080fd5b80637730599e146102635780637fbc763914610289578063899baaec1461029c5780639b2e48bc146102cc578063acafa1b8146102fa57600080fd5b806346951954116100f457806346951954146101d957806350d75d25146101ee57806352d1902d146101f65780635b5340511461020c5780636041ae961461025057600080fd5b8063232d2b581461012657806323fc23f31461014f5780632e5e74c6146101935780633fd4176a146101a6575b600080fd5b610139610134366004614595565b6103c0565b604051610146919061467c565b60405180910390f35b61016261015d36600461468f565b610b0e565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610146565b6101396101a13660046146da565b610b79565b6101c173__SlotsBitmapLibrary____________________81565b6040516001600160a01b039091168152602001610146565b6101ec6101e736600461472e565b611171565b005b6101c16111f5565b6101fe611224565b604051908152602001610146565b61021f61021a36600461474b565b611288565b6040516101469493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b61013961025e3660046147a7565b61135e565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a6746101fe565b610139610297366004614822565b61180d565b6102af6102aa366004614863565b61191d565b604080519283526001600160801b03909116602083015201610146565b6102df6102da3660046148b4565b6119f1565b60408051938452602084019290925290820152606001610146565b6101396103083660046146da565b611bfc565b61013961031b3660046147a7565b612024565b61033361032e3660046148f5565b612601565b60405161014693929190614972565b610139610350366004614a0f565b612856565b610368610363366004614a64565b61294a565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610146565b6101396103bb366004614a90565b612a6c565b60606001600160a01b0385166103f15760405162461bcd60e51b81526004016103e890614af4565b60405180910390fd5b6103f96143ed565b61040161444b565b60606000806104468c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b90508060a00151925080606001519150506104658b828b8d6000612e17565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104a1918d918c91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105055764040000000060c08401526104fb8386612f57565b60a0850152610520565b64010000000060c084015261051a8386612f57565b60a08501525b8360200151801561053d575060808401515163ffffffff90811614155b156106185761058c8460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b031661057d9190614b37565b6105879190614b4f565b61310e565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518363ffffffff1660e01b81526004016105e1929190614b96565b600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b5050505061082e565b8360200151156106955761065d8460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b031661057d9190614b37565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f885604001516107148760800151613219565b6040518363ffffffff1660e01b8152600401610731929190614b96565b600060405180830381600087803b15801561074b57600080fd5b505af115801561075f573d6000803e3d6000fd5b5050604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b60208201526060880151909101516107a693506001600160801b031691508a906132c0565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107de9061317b565b6040518363ffffffff1660e01b81526004016107fb929190614b96565b600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161085e9190614baf565b6001600160801b03166108719190614bd7565b905063ffffffff801685608001516000015163ffffffff160361090a576108a18c8361089c84614c5c565b6132fc565b6001600160a01b038c1663cf97256d836108ba84614c5c565b6040518363ffffffff1660e01b81526004016108d7929190614c78565b600060405180830381600087803b1580156108f157600080fd5b505af1158015610905573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d90610938908d908590600401614c78565b600060405180830381600087803b15801561095257600080fd5b505af1158015610966573d6000803e3d6000fd5b50505050846020015115610a0c5760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b916109bc90613219565b6040518363ffffffff1660e01b81526004016109d9929190614b96565b600060405180830381600087803b1580156109f357600080fd5b505af1158015610a07573d6000803e3d6000fd5b505050505b846020015115610a395764080000000060c085015260a0850151610a329085908861344a565b5050610a58565b64020000000060c085015260a0850151610a559085908861344a565b50505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610aa693929190614c91565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610af79493929190614cc4565b60405180910390a350505050509695505050505050565b600080600080610b37604080516060810182526000808252602082018190529181019190915290565b6000610b4388886136bd565b9050610b4f8982613724565b90965091508515610b6e57815160208301516040840151919650945092505b505093509350935093565b6060610b836143ed565b610b8b61444b565b600060606000610bd18c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b606081015160a0909101519093509150506001600160a01b038816610c085760405162461bcd60e51b81526004016103e890614af4565b896001600160a01b0316826001600160a01b031614610c5e5760405162461bcd60e51b81526020600482015260126024820152711251104e881157d393d517d0531313d5d15160721b60448201526064016103e8565b610c6c8b8b8a8c6001612e17565b6080890152506060870152604080870182905291865281516020810190925260008252610c9c918d918b91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610ced90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610d1f91614baf565b6001600160801b0316610d329190614bd7565b60808601515190915063ffffffff90811614610db857610d9d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b03909116602090910152610e24565b610e0d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151604001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610e45886060015161317b565b6040518363ffffffff1660e01b8152600401610e62929190614b96565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610eba57610eba8c8a876080015160000151613885565b60808501515163ffffffff1663fffffffe1901610f4857610edf8c8c61089c84614c5c565b6001600160a01b038c1663cf97256d8c610ef884614c5c565b6040518363ffffffff1660e01b8152600401610f15929190614c78565b600060405180830381600087803b158015610f2f57600080fd5b505af1158015610f43573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610fdd908c908590600401614c78565b600060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161102b9085908861344a565b50508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051611079929190614d0d565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d866040516110c893929190614d31565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161111f93929190614c91565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610af79493929190614cc4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111e95760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016103e8565b6111f281613910565b50565b600061121f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190614d61565b6000806000806000806112b4604080516060810182526000808252602082018190529181019190915290565b6112bc614486565b6112ca8c8c8b8d6000612e17565b909b5092965090945092509050876112f357600080600080975097509750975050505050611353565b8051608082015163ffffffff9182169091141597509550866113495780608001516001600160801b0316816060015183600001516113319190614baf565b6001600160801b03166113449190614d7a565b61134c565b60005b9450505050505b945094509450949050565b60606113686143ed565b61137061444b565b6000606060006113b68b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a001519150506113d58a8a848b6001612e17565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe190161144a5760405162461bcd60e51b815260206004820152601860248201527f4944413a20455f535542535f4e4f545f415050524f564544000000000000000060448201526064016103e8565b6114698a8a866040015160405180602001604052806000815250612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c0870152509095506114ba90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916114ec91614baf565b6001600160801b03166114ff9190614bd7565b90506115568560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b6060860180516001600160801b039283166020918201526080808901510151604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b938101939093529251909201516115ae931691906132c0565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b916115e69061317b565b6040518363ffffffff1660e01b8152600401611603929190614b96565b600060405180830381600087803b15801561161d57600080fd5b505af1158015611631573d6000803e3d6000fd5b505050506116488b84876080015160000151613885565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b9161168f90613219565b6040518363ffffffff1660e01b81526004016116ac929190614b96565b600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d915061170c9086908590600401614c78565b600060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161175a9085908861344a565b50508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d14286866040516117a8929190614d0d565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c866040516117f793929190614d31565b60405180910390a3505050505095945050505050565b606060006118518785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806118678a848b613b1e565b9150915080600001516001600160801b0316886001600160801b031610156118c55760405162461bcd60e51b81526020600482015260116024820152704944413a20455f494e4445585f47524f5760781b60448201526064016103e8565b6118d88a848b85858d8a60a00151613b7c565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b600080600061192c86866136bd565b905060008061193b8984613724565b915091508161195c5760405162461bcd60e51b81526004016103e890614d99565b6000816040015182602001516119729190614dc2565b6001600160801b03169050600061198c610587838a614ded565b60408051808201909152600f81526e4944413a20455f4f564552464c4f5760881b602082015284519192506119cc916001600160801b03169083906132c0565b95506119e1826001600160801b038316614d7a565b9650505050505094509492505050565b6000806000606080611a038888613dcf565b909250905060005b81518163ffffffff161015611be0576000611a24614486565b600080868563ffffffff1681518110611a3f57611a3f614e0f565b60200260200101519050611a728d878763ffffffff1681518110611a6557611a65614e0f565b6020026020010151613ec2565b909450925083611a8457611a84614e25565b8063ffffffff16836000015163ffffffff1614611aa357611aa3614e25565b6001600160a01b038d16634b61cc33308e611ac863ffffffff8616600160801b614b37565b60016040518563ffffffff1660e01b8152600401611ae99493929190614e3b565b600060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b2e9190810190614f61565b600081518110611b4057611b40614e0f565b6020026020010151915050611b6e604080516060810182526000808252602082018190529181019190915290565b611b788d83613724565b909450905083611b8a57611b8a614e25565b82608001516001600160801b031683606001518260000151611bac9190614baf565b6001600160801b0316611bbf9190614bd7565b611bc9908b614f95565b99505050505080611bd990614fd6565b9050611a0b565b50611beb8888613fde565b935060009250505093509350939050565b6060611c3e8784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b506001600160a01b038416611c655760405162461bcd60e51b81526004016103e890614af4565b611c6d6143ed565b611c7561444b565b611c838989888a6001612e17565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611ceb5760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611d1b9190614baf565b6001600160801b0316611d2e9190614d7a565b9050611d4f8a8a856040015160405180602001604052806000815250612f29565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611fdd90505764040000000060c0830152611da78285612f57565b60a0840152611dba8a8a61089c84614c5c565b6001600160a01b038a1663cf97256d8a611dd384614c5c565b6040518363ffffffff1660e01b8152600401611df0929190614c78565b600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611e6090613219565b6040518363ffffffff1660e01b8152600401611e7d929190614b96565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611edd908a908590600401614c78565b600060405180830381600087803b158015611ef757600080fd5b505af1158015611f0b573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611f5b929190614c78565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611fd69083908661344a565b5050612017565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061202e6143ed565b61203661444b565b60006060600061207c8b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a0015191505061209b8a8a848b6000612e17565b60808901521580156020890152606088019190915260408701919091529085526121115760808401515163ffffffff908116146121115760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a015181516020810190925291815294995061216a948f94508e9350909150612f29565b925083602001516122915764010000000060c084015261218a8386612f57565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b03169083015260808083019190915285015283516121ed908b908490614087565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f89161221f90613219565b6040518363ffffffff1660e01b815260040161223c929190614b96565b600060405180830381600087803b15801561225657600080fd5b505af115801561226a573d6000803e3d6000fd5b505064020000000060c0860152505060a084015161228a9084908761344a565b5050612551565b64040000000060c08401526122a68386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916122d891614baf565b6001600160801b03166122eb9190614bd7565b9050846080015160800151856060015160200181815161230b9190614dc2565b6001600160801b0316905250608080860151015160608601516040018051612334908390614baf565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b916123619061317b565b6040518363ffffffff1660e01b815260040161237e929190614b96565b600060405180830381600087803b15801561239857600080fd5b505af11580156123ac573d6000803e3d6000fd5b505050506123bf8b8b8361089c90614c5c565b6001600160a01b038b1663cf97256d8b6123d884614c5c565b6040518363ffffffff1660e01b81526004016123f5929190614c78565b600060405180830381600087803b15801561240f57600080fd5b505af1158015612423573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506124559086908590600401614c78565b600060405180830381600087803b15801561246f57600080fd5b505af1158015612483573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b039091169101525084516124b0908c908590614087565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b916124e290613219565b6040518363ffffffff1660e01b81526004016124ff929190614b96565b600060405180830381600087803b15801561251957600080fd5b505af115801561252d573d6000803e3d6000fd5b505064080000000060c0870152505060a085015161254d9085908861344a565b5050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2858560405161259d929190614d0d565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b856040516125ec93929190614d31565b60405180910390a35050505095945050505050565b60608060608060606126138787613dcf565b90925090506000612622614486565b82516001600160401b0381111561263b5761263b614e64565b604051908082528060200260200182016040528015612664578160200160208202803683370190505b50965082516001600160401b0381111561268057612680614e64565b6040519080825280602002602001820160405280156126a9578160200160208202803683370190505b50955082516001600160401b038111156126c5576126c5614e64565b6040519080825280602002602001820160405280156126ee578160200160208202803683370190505b50945060005b83518163ffffffff16101561284a576000858263ffffffff168151811061271d5761271d614e0f565b602002602001015190506000858363ffffffff168151811061274157612741614e0f565b602002602001015190506127558c82613ec2565b90955093508461276757612767614e25565b8163ffffffff16846000015163ffffffff161461278657612786614e25565b83602001518a8463ffffffff16815181106127a3576127a3614e0f565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff16815181106127e0576127e0614e0f565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff168151811061281757612817614e0f565b60200260200101906001600160801b031690816001600160801b03168152505050508061284390614fd6565b90506126f4565b50505050509250925092565b6060600061289a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806128b08a848b613b1e565b9150915060006128e0826040015183602001516128cd9190614dc2565b610587906001600160801b03168b614ded565b90506129048b858c86868688600001516128fa9190614dc2565b8b60a00151613b7c565b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b6000806000806000806000612978604080516060810182526000808252602082018190529181019190915290565b612980614486565b61298a8b8b613ec2565b9094509050836129cd5760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b80602001519850806040015197506129e589896136bd565b92506129f18b84613724565b909450915083612a0357612a03614e25565b8051608082015163ffffffff918216909114159750955086612a595780608001516001600160801b031681606001518360000151612a419190614baf565b6001600160801b0316612a549190614d7a565b612a5c565b60005b9450505050509295509295909350565b60606000612ab08685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000612ac482886136bd565b9050612ad0888261412e565b15612b135760405162461bcd60e51b81526020600482015260136024820152724944413a20455f494e4445585f45584953545360681b60448201526064016103e8565b876001600160a01b03166312a6a3f882612b64604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b031681525061317b565b6040518363ffffffff1660e01b8152600401612b81929190614b96565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612c01919061467c565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612c546144b4565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc09190615004565b6001600160a01b031614612d0a5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103e8565b604051632fd0a1cd60e21b8152339063bf42873490612d2d90859060040161467c565b602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e9190615031565b612da85760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103e8565b604051631fb6491d60e11b81523390633f6c923a90612dcb90859060040161467c565b600060405180830381865afa158015612de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906150d8565b9392505050565b6040805160608101825260008082526020820181905291810182905281906000612e3f614486565b6000612e4b8a896136bd565b9550612e5789876141da565b9450612e638b87613724565b9450905080612e845760405162461bcd60e51b81526004016103e890614d99565b612e8e8b86613ec2565b90935091508615612f1b5782612ed75760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b896001600160a01b031682602001516001600160a01b031614612efc57612efc614e25565b8763ffffffff16826040015163ffffffff1614612f1b57612f1b614e25565b509550955095509550959050565b612f3161444b565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf91906151de565b91945092509050828015612fe1575081155b15613105576000612ff2868861421b565b90508660c0015182166000036130f75760006130118860c00151614299565b88516040808b015160608c01518251600081526020810190935261303d9392309291906044810161521a565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e02926130ac929186916410000000009190911490889060040161525f565b6000604051808303816000875af11580156130cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f391908101906152a8565b9550505b613102866000614330565b50505b50505092915050565b60006001600160801b038211156131775760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103e8565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106131c5576131c5614e0f565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b8160018151811061320857613208614e0f565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061327d5761327d614e0f565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b8160018151811061320857613208614e0f565b6000838301826001600160801b0380871690831610156132f35760405162461bcd60e51b81526004016103e8919061467c565b50949350505050565b8060000361330957505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc3390613344903090879064010000000090600190600401614e3b565b600060405180830381865afa158015613361573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133899190810190614f61565b9050816133b2826000815181106133a2576133a2614e0f565b602002602001015160001c614358565b6133bc9190614f95565b60001b816000815181106133d2576133d2614e0f565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906134129086906401000000009086906004016152dc565b600060405180830381600087803b15801561342c57600080fd5b505af1158015613440573d6000803e3d6000fd5b5050505050505050565b6134526144b4565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa1580156134a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ca91906151de565b889650919450925090508280156134df575081155b156136b2576134ee848961421b565b93508760c0015181166000036136a057600061350d8960c00151614299565b89516040808c015160608d01518251600081526020810190935261353b9392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926135aa9291869164200000000091909114908b9060040161525f565b6000604051808303816000875af11580156135c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f191908101906152a8565b604051631fb6491d60e11b81529095503390633f6c923a9061361790889060040161467c565b600060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261365c91908101906150d8565b955061369860006136936136738c60800151614358565b61368e6136838b60e00151614358565b8b61010001516143c2565b6143d8565b6143c2565b610100870152505b6136af86866101000151614330565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613795573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137bd9190810190614f61565b90506000816000815181106137d4576137d4614e0f565b602002602001015160001c90506000826001815181106137f6576137f6614e0f565b602002602001015160001c9050600082119450841561382e576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b6000836001600160801b0316836001600160801b03161115829061386f5760405162461bcd60e51b81526004016103e8919061467c565b50600061387c8486614baf565b95945050505050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273__SlotsBitmapLibrary____________________9063a9472bf89060840160006040518083038186803b1580156138f357600080fd5b505af4158015613907573d6000803e3d6000fd5b50505050505050565b600061393a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036139905760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103e8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f29190614d61565b6139fa611224565b14613a535760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103e8565b6001600160a01b0381163003613aab5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103e8565b613ad3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc613afc611224565b604080519182526001600160a01b03841660208301520160405180910390a150565b604080516060810182526000808252602082018190529181018290526000613b4685856136bd565b9250613b528684613724565b9250905080613b735760405162461bcd60e51b81526004016103e890614d99565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b0316866000015186613baa9190614baf565b6001600160801b0316613bbc90614c5c565b613bc69190614bd7565b6040518363ffffffff1660e01b8152600401613be3929190614c78565b600060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b50505050613c4b878785604001516001600160801b0316866000015186613c389190614baf565b6001600160801b031661089c9190614bd7565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613c728761317b565b6040518363ffffffff1660e01b8152600401613c8f929190614b96565b600060405180830381600087803b158015613ca957600080fd5b505af1158015613cbd573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613d1b959493929190615369565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8d9190615031565b156134405760405162461bcd60e51b81526020600482015260126024820152714944413a20455f4c4f575f42414c414e434560701b60448201526064016103e8565b60608073__SlotsBitmapLibrary____________________6306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613e149493929190614e3b565b600060405180830381865af4158015613e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e5991908101906153a5565b909250905060005b8151811015613eba57613e8d84838381518110613e8057613e80614e0f565b60200260200101516141da565b828281518110613e9f57613e9f614e0f565b6020908102919091010152613eb381615469565b9050613e61565b509250929050565b6000613ecc614486565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613f21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f499190810190614f61565b9050600081600081518110613f6057613f60614e0f565b602002602001015160001c9050600082600181518110613f8257613f82614e0f565b602002602001015160001c9050600082119450841561382e57606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b81526004016140199493929190614e3b565b600060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261405e9190810190614f61565b90508060008151811061407357614073614e0f565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073__SlotsBitmapLibrary____________________9063a32470109060a401602060405180830381865af4158015614102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141269190615482565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015614185573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ad9190810190614f61565b90506000816000815181106141c4576141c4614e0f565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c83015291810183905260009101613706565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614252948a9460040161549f565b6000604051808303816000875af1158015614271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906152a8565b600064010000000082036142b557506330d9c91560e01b919050565b64040000000082036142cf5750630221347d60e61b919050565b64100000000082036142e95750635f9e7d7760e01b919050565b6402000000008203614303575063d86ed3e560e01b919050565b640800000000820361431d575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061425290869086906004016154e4565b60006001600160ff1b038211156131775760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e8565b60008183136143d15781612e10565b5090919050565b60008183136143e75782612e10565b50919050565b6040805160c0810182526000808252602082018190529181019190915260608101614431604080516060810182526000808252602082018190529181019190915290565b815260200161443e614486565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b03811681146111f257600080fd5b63ffffffff811681146111f257600080fd5b80356001600160801b038116811461432b57600080fd5b60008083601f84011261455f57600080fd5b5081356001600160401b0381111561457657600080fd5b60208301915083602082850101111561458e57600080fd5b9250929050565b60008060008060008060a087890312156145ae57600080fd5b86356145b98161450f565b955060208701356145c981614524565b945060408701356145d98161450f565b93506145e760608801614536565b925060808701356001600160401b0381111561460257600080fd5b61460e89828a0161454d565b979a9699509497509295939492505050565b60005b8381101561463b578181015183820152602001614623565b8381111561464a576000848401525b50505050565b60008151808452614668816020860160208601614620565b601f01601f19169290920160200192915050565b602081526000612e106020830184614650565b6000806000606084860312156146a457600080fd5b83356146af8161450f565b925060208401356146bf8161450f565b915060408401356146cf81614524565b809150509250925092565b60008060008060008060a087890312156146f357600080fd5b86356146fe8161450f565b9550602087013561470e8161450f565b9450604087013561471e81614524565b935060608701356145e78161450f565b60006020828403121561474057600080fd5b8135612e108161450f565b6000806000806080858703121561476157600080fd5b843561476c8161450f565b9350602085013561477c8161450f565b9250604085013561478c81614524565b9150606085013561479c8161450f565b939692955090935050565b6000806000806000608086880312156147bf57600080fd5b85356147ca8161450f565b945060208601356147da8161450f565b935060408601356147ea81614524565b925060608601356001600160401b0381111561480557600080fd5b6148118882890161454d565b969995985093965092949392505050565b60008060008060006080868803121561483a57600080fd5b85356148458161450f565b9450602086013561485581614524565b93506147ea60408701614536565b6000806000806080858703121561487957600080fd5b84356148848161450f565b935060208501356148948161450f565b925060408501356148a481614524565b9396929550929360600135925050565b6000806000606084860312156148c957600080fd5b83356148d48161450f565b925060208401356148e48161450f565b929592945050506040919091013590565b6000806040838503121561490857600080fd5b82356149138161450f565b915060208301356149238161450f565b809150509250929050565b600081518084526020808501945080840160005b838110156149675781516001600160801b031687529582019590820190600101614942565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156149b45781516001600160a01b03168452928401929084019060010161498f565b5050508381038285015285518082528683019183019060005b818110156149ef57835163ffffffff16835292840192918401916001016149cd565b50508481036040860152614a03818761492e565b98975050505050505050565b600080600080600060808688031215614a2757600080fd5b8535614a328161450f565b94506020860135614a4281614524565b93506040860135925060608601356001600160401b0381111561480557600080fd5b60008060408385031215614a7757600080fd5b8235614a828161450f565b946020939093013593505050565b60008060008060608587031215614aa657600080fd5b8435614ab18161450f565b93506020850135614ac181614524565b925060408501356001600160401b03811115614adc57600080fd5b614ae88782880161454d565b95989497509550505050565b6020808252601390820152724944413a20455f4e4f5f5a45524f5f5355425360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b4a57614b4a614b21565b500190565b600082821015614b6157614b61614b21565b500390565b600081518084526020808501945080840160005b8381101561496757815187529582019590820190600101614b7a565b8281526040602082015260006141266040830184614b66565b60006001600160801b0383811690831681811015614bcf57614bcf614b21565b039392505050565b60006001600160ff1b0381841382841380821686840486111615614bfd57614bfd614b21565b600160ff1b6000871282811687830589121615614c1c57614c1c614b21565b60008712925087820587128484161615614c3857614c38614b21565b87850587128184161615614c4e57614c4e614b21565b505050929093029392505050565b6000600160ff1b8201614c7157614c71614b21565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b038316602082015260606040820181905260009061387c90830184614650565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614d0390830184614650565b9695505050505050565b6001600160a01b038316815260406020820181905260009061412690830184614650565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009061387c90830184614650565b600060208284031215614d7357600080fd5b5051919050565b6000816000190483118215151615614d9457614d94614b21565b500290565b6020808252600f908201526e092888274408abe9c9ebe929c888ab608b1b604082015260600190565b60006001600160801b03808316818516808303821115614de457614de4614b21565b01949350505050565b600082614e0a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e9d57614e9d614e64565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614ecb57614ecb614e64565b604052919050565b60006001600160401b03821115614eec57614eec614e64565b5060051b60200190565b600082601f830112614f0757600080fd5b81516020614f1c614f1783614ed3565b614ea3565b82815260059290921b84018101918181019086841115614f3b57600080fd5b8286015b84811015614f565780518352918301918301614f3f565b509695505050505050565b600060208284031215614f7357600080fd5b81516001600160401b03811115614f8957600080fd5b61412684828501614ef6565b600080821280156001600160ff1b0384900385131615614fb757614fb7614b21565b600160ff1b8390038412811615614fd057614fd0614b21565b50500190565b600063ffffffff808316818103614fef57614fef614b21565b6001019392505050565b805161432b8161450f565b60006020828403121561501657600080fd5b8151612e108161450f565b8051801515811461432b57600080fd5b60006020828403121561504357600080fd5b612e1082615021565b805160ff8116811461432b57600080fd5b80516001600160e01b03198116811461432b57600080fd5b600082601f83011261508657600080fd5b81516001600160401b0381111561509f5761509f614e64565b6150b2601f8201601f1916602001614ea3565b8181528460208386010111156150c757600080fd5b614126826020830160208701614620565b6000602082840312156150ea57600080fd5b81516001600160401b038082111561510157600080fd5b90830190610160828603121561511657600080fd5b61511e614e7a565b6151278361504c565b81526151356020840161504c565b60208201526040830151604082015261515060608401614ff9565b60608201526151616080840161505d565b608082015260a08301518281111561517857600080fd5b61518487828601615075565b60a08301525060c083015160c082015260e083015160e08201526101009150818301518282015261012091506151bb828401614ff9565b8282015261014091506151cf828401614ff9565b91810191909152949350505050565b6000806000606084860312156151f357600080fd5b6151fc84615021565b925061520a60208501615021565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061524d90830185614650565b8281036080840152614a038185614650565b6001600160a01b038516815260806020820181905260009061528390830186614650565b8415156040840152828103606084015261529d8185614650565b979650505050505050565b6000602082840312156152ba57600080fd5b81516001600160401b038111156152d057600080fd5b61412684828501615075565b60018060a01b038416815282602082015260606040820152600061387c6060830184614b66565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061533690830186614650565b82810360808401526153488186614650565b905082810360a084015261535c8185614650565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261529d60a0830184614650565b600080604083850312156153b857600080fd5b82516001600160401b03808211156153cf57600080fd5b818501915085601f8301126153e357600080fd5b815160206153f3614f1783614ed3565b82815260059290921b8401810191818101908984111561541257600080fd5b948201945b8386101561543957855161542a81614524565b82529482019490820190615417565b9188015191965090935050508082111561545257600080fd5b5061545f85828601614ef6565b9150509250929050565b60006001820161547b5761547b614b21565b5060010190565b60006020828403121561549457600080fd5b8151612e1081614524565b60a0815260006154b260a0830188614650565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006154f76040830185614650565b9050826020830152939250505056fea2646970667358221220160b11fce4c17b8790637b1e020bd5e068479f959c84335446b27cc8c17925f064736f6c634300080d0033",
1027
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637730599e116100ad578063acf4a6c211610071578063acf4a6c21461030d578063b6dacdb814610320578063b96731c214610342578063cd7245c514610355578063d787840a146103ad57600080fd5b80637730599e146102635780637fbc763914610289578063899baaec1461029c5780639b2e48bc146102cc578063acafa1b8146102fa57600080fd5b806346951954116100f457806346951954146101d957806350d75d25146101ee57806352d1902d146101f65780635b5340511461020c5780636041ae961461025057600080fd5b8063232d2b581461012657806323fc23f31461014f5780632e5e74c6146101935780633fd4176a146101a6575b600080fd5b610139610134366004614595565b6103c0565b604051610146919061467c565b60405180910390f35b61016261015d36600461468f565b610b0e565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610146565b6101396101a13660046146da565b610b79565b6101c173__SlotsBitmapLibrary____________________81565b6040516001600160a01b039091168152602001610146565b6101ec6101e736600461472e565b611171565b005b6101c16111f5565b6101fe611224565b604051908152602001610146565b61021f61021a36600461474b565b611288565b6040516101469493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b61013961025e3660046147a7565b61135e565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a6746101fe565b610139610297366004614822565b61180d565b6102af6102aa366004614863565b61191d565b604080519283526001600160801b03909116602083015201610146565b6102df6102da3660046148b4565b6119f1565b60408051938452602084019290925290820152606001610146565b6101396103083660046146da565b611bfc565b61013961031b3660046147a7565b612024565b61033361032e3660046148f5565b612601565b60405161014693929190614972565b610139610350366004614a0f565b612856565b610368610363366004614a64565b61294a565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610146565b6101396103bb366004614a90565b612a6c565b60606001600160a01b0385166103f15760405162461bcd60e51b81526004016103e890614af4565b60405180910390fd5b6103f96143ed565b61040161444b565b60606000806104468c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b90508060a00151925080606001519150506104658b828b8d6000612e17565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104a1918d918c91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105055764040000000060c08401526104fb8386612f57565b60a0850152610520565b64010000000060c084015261051a8386612f57565b60a08501525b8360200151801561053d575060808401515163ffffffff90811614155b156106185761058c8460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b031661057d9190614b37565b6105879190614b4f565b61310e565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518363ffffffff1660e01b81526004016105e1929190614b96565b600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b5050505061082e565b8360200151156106955761065d8460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b031661057d9190614b37565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105c49061317b565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f885604001516107148760800151613219565b6040518363ffffffff1660e01b8152600401610731929190614b96565b600060405180830381600087803b15801561074b57600080fd5b505af115801561075f573d6000803e3d6000fd5b5050604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b60208201526060880151909101516107a693506001600160801b031691508a906132c0565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107de9061317b565b6040518363ffffffff1660e01b81526004016107fb929190614b96565b600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161085e9190614baf565b6001600160801b03166108719190614bd7565b905063ffffffff801685608001516000015163ffffffff160361090a576108a18c8361089c84614c5c565b6132fc565b6001600160a01b038c1663cf97256d836108ba84614c5c565b6040518363ffffffff1660e01b81526004016108d7929190614c78565b600060405180830381600087803b1580156108f157600080fd5b505af1158015610905573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d90610938908d908590600401614c78565b600060405180830381600087803b15801561095257600080fd5b505af1158015610966573d6000803e3d6000fd5b50505050846020015115610a0c5760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b916109bc90613219565b6040518363ffffffff1660e01b81526004016109d9929190614b96565b600060405180830381600087803b1580156109f357600080fd5b505af1158015610a07573d6000803e3d6000fd5b505050505b846020015115610a395764080000000060c085015260a0850151610a329085908861344a565b5050610a58565b64020000000060c085015260a0850151610a559085908861344a565b50505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610aa693929190614c91565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610af79493929190614cc4565b60405180910390a350505050509695505050505050565b600080600080610b37604080516060810182526000808252602082018190529181019190915290565b6000610b4388886136bd565b9050610b4f8982613724565b90965091508515610b6e57815160208301516040840151919650945092505b505093509350935093565b6060610b836143ed565b610b8b61444b565b600060606000610bd18c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b606081015160a0909101519093509150506001600160a01b038816610c085760405162461bcd60e51b81526004016103e890614af4565b896001600160a01b0316826001600160a01b031614610c5e5760405162461bcd60e51b81526020600482015260126024820152711251104e881157d393d517d0531313d5d15160721b60448201526064016103e8565b610c6c8b8b8a8c6001612e17565b6080890152506060870152604080870182905291865281516020810190925260008252610c9c918d918b91612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610ced90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610d1f91614baf565b6001600160801b0316610d329190614bd7565b60808601515190915063ffffffff90811614610db857610d9d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b03909116602090910152610e24565b610e0d8560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151604001516001600160801b03166138389092919063ffffffff16565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610e45886060015161317b565b6040518363ffffffff1660e01b8152600401610e62929190614b96565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610eba57610eba8c8a876080015160000151613885565b60808501515163ffffffff1663fffffffe1901610f4857610edf8c8c61089c84614c5c565b6001600160a01b038c1663cf97256d8c610ef884614c5c565b6040518363ffffffff1660e01b8152600401610f15929190614c78565b600060405180830381600087803b158015610f2f57600080fd5b505af1158015610f43573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610fdd908c908590600401614c78565b600060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161102b9085908861344a565b50508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051611079929190614d0d565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d866040516110c893929190614d31565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161111f93929190614c91565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610af79493929190614cc4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111e95760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016103e8565b6111f281613910565b50565b600061121f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190614d61565b6000806000806000806112b4604080516060810182526000808252602082018190529181019190915290565b6112bc614486565b6112ca8c8c8b8d6000612e17565b909b5092965090945092509050876112f357600080600080975097509750975050505050611353565b8051608082015163ffffffff9182169091141597509550866113495780608001516001600160801b0316816060015183600001516113319190614baf565b6001600160801b03166113449190614d7a565b61134c565b60005b9450505050505b945094509450949050565b60606113686143ed565b61137061444b565b6000606060006113b68b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a001519150506113d58a8a848b6001612e17565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe190161144a5760405162461bcd60e51b815260206004820152601860248201527f4944413a20455f535542535f4e4f545f415050524f564544000000000000000060448201526064016103e8565b6114698a8a866040015160405180602001604052806000815250612f29565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c0870152509095506114ba90508386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916114ec91614baf565b6001600160801b03166114ff9190614bd7565b90506115568560800151608001516040518060400160405280600f81526020016e4944413a20455f4f564552464c4f5760881b8152508760600151602001516001600160801b03166138389092919063ffffffff16565b6060860180516001600160801b039283166020918201526080808901510151604080518082018252600f81526e4944413a20455f4f564552464c4f5760881b938101939093529251909201516115ae931691906132c0565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b916115e69061317b565b6040518363ffffffff1660e01b8152600401611603929190614b96565b600060405180830381600087803b15801561161d57600080fd5b505af1158015611631573d6000803e3d6000fd5b505050506116488b84876080015160000151613885565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b9161168f90613219565b6040518363ffffffff1660e01b81526004016116ac929190614b96565b600060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d915061170c9086908590600401614c78565b600060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505064200000000060c0870152505060a085015161175a9085908861344a565b50508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d14286866040516117a8929190614d0d565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c866040516117f793929190614d31565b60405180910390a3505050505095945050505050565b606060006118518785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806118678a848b613b1e565b9150915080600001516001600160801b0316886001600160801b031610156118c55760405162461bcd60e51b81526020600482015260116024820152704944413a20455f494e4445585f47524f5760781b60448201526064016103e8565b6118d88a848b85858d8a60a00151613b7c565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b600080600061192c86866136bd565b905060008061193b8984613724565b915091508161195c5760405162461bcd60e51b81526004016103e890614d99565b6000816040015182602001516119729190614dc2565b6001600160801b03169050600061198c610587838a614ded565b60408051808201909152600f81526e4944413a20455f4f564552464c4f5760881b602082015284519192506119cc916001600160801b03169083906132c0565b95506119e1826001600160801b038316614d7a565b9650505050505094509492505050565b6000806000606080611a038888613dcf565b909250905060005b81518163ffffffff161015611be0576000611a24614486565b600080868563ffffffff1681518110611a3f57611a3f614e0f565b60200260200101519050611a728d878763ffffffff1681518110611a6557611a65614e0f565b6020026020010151613ec2565b909450925083611a8457611a84614e25565b8063ffffffff16836000015163ffffffff1614611aa357611aa3614e25565b6001600160a01b038d16634b61cc33308e611ac863ffffffff8616600160801b614b37565b60016040518563ffffffff1660e01b8152600401611ae99493929190614e3b565b600060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b2e9190810190614f61565b600081518110611b4057611b40614e0f565b6020026020010151915050611b6e604080516060810182526000808252602082018190529181019190915290565b611b788d83613724565b909450905083611b8a57611b8a614e25565b82608001516001600160801b031683606001518260000151611bac9190614baf565b6001600160801b0316611bbf9190614bd7565b611bc9908b614f95565b99505050505080611bd990614fd6565b9050611a0b565b50611beb8888613fde565b935060009250505093509350939050565b6060611c3e8784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b506001600160a01b038416611c655760405162461bcd60e51b81526004016103e890614af4565b611c6d6143ed565b611c7561444b565b611c838989888a6001612e17565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611ceb5760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611d1b9190614baf565b6001600160801b0316611d2e9190614d7a565b9050611d4f8a8a856040015160405180602001604052806000815250612f29565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611fdd90505764040000000060c0830152611da78285612f57565b60a0840152611dba8a8a61089c84614c5c565b6001600160a01b038a1663cf97256d8a611dd384614c5c565b6040518363ffffffff1660e01b8152600401611df0929190614c78565b600060405180830381600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611e6090613219565b6040518363ffffffff1660e01b8152600401611e7d929190614b96565b600060405180830381600087803b158015611e9757600080fd5b505af1158015611eab573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611edd908a908590600401614c78565b600060405180830381600087803b158015611ef757600080fd5b505af1158015611f0b573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611f5b929190614c78565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611fd69083908661344a565b5050612017565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b606061202e6143ed565b61203661444b565b60006060600061207c8b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b9050806060015192508060a0015191505061209b8a8a848b6000612e17565b60808901521580156020890152606088019190915260408701919091529085526121115760808401515163ffffffff908116146121115760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a015181516020810190925291815294995061216a948f94508e9350909150612f29565b925083602001516122915764010000000060c084015261218a8386612f57565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b03169083015260808083019190915285015283516121ed908b908490614087565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f89161221f90613219565b6040518363ffffffff1660e01b815260040161223c929190614b96565b600060405180830381600087803b15801561225657600080fd5b505af115801561226a573d6000803e3d6000fd5b505064020000000060c0860152505060a084015161228a9084908761344a565b5050612551565b64040000000060c08401526122a68386612f57565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916122d891614baf565b6001600160801b03166122eb9190614bd7565b9050846080015160800151856060015160200181815161230b9190614dc2565b6001600160801b0316905250608080860151015160608601516040018051612334908390614baf565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b916123619061317b565b6040518363ffffffff1660e01b815260040161237e929190614b96565b600060405180830381600087803b15801561239857600080fd5b505af11580156123ac573d6000803e3d6000fd5b505050506123bf8b8b8361089c90614c5c565b6001600160a01b038b1663cf97256d8b6123d884614c5c565b6040518363ffffffff1660e01b81526004016123f5929190614c78565b600060405180830381600087803b15801561240f57600080fd5b505af1158015612423573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506124559086908590600401614c78565b600060405180830381600087803b15801561246f57600080fd5b505af1158015612483573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b039091169101525084516124b0908c908590614087565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b916124e290613219565b6040518363ffffffff1660e01b81526004016124ff929190614b96565b600060405180830381600087803b15801561251957600080fd5b505af115801561252d573d6000803e3d6000fd5b505064080000000060c0870152505060a085015161254d9085908861344a565b5050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2858560405161259d929190614d0d565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b856040516125ec93929190614d31565b60405180910390a35050505095945050505050565b60608060608060606126138787613dcf565b90925090506000612622614486565b82516001600160401b0381111561263b5761263b614e64565b604051908082528060200260200182016040528015612664578160200160208202803683370190505b50965082516001600160401b0381111561268057612680614e64565b6040519080825280602002602001820160405280156126a9578160200160208202803683370190505b50955082516001600160401b038111156126c5576126c5614e64565b6040519080825280602002602001820160405280156126ee578160200160208202803683370190505b50945060005b83518163ffffffff16101561284a576000858263ffffffff168151811061271d5761271d614e0f565b602002602001015190506000858363ffffffff168151811061274157612741614e0f565b602002602001015190506127558c82613ec2565b90955093508461276757612767614e25565b8163ffffffff16846000015163ffffffff161461278657612786614e25565b83602001518a8463ffffffff16815181106127a3576127a3614e0f565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff16815181106127e0576127e0614e0f565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff168151811061281757612817614e0f565b60200260200101906001600160801b031690816001600160801b03168152505050508061284390614fd6565b90506126f4565b50505050509250925092565b6060600061289a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000806128b08a848b613b1e565b9150915060006128e0826040015183602001516128cd9190614dc2565b610587906001600160801b03168b614ded565b90506129048b858c86868688600001516128fa9190614dc2565b8b60a00151613b7c565b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b6000806000806000806000612978604080516060810182526000808252602082018190529181019190915290565b612980614486565b61298a8b8b613ec2565b9094509050836129cd5760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b80602001519850806040015197506129e589896136bd565b92506129f18b84613724565b909450915083612a0357612a03614e25565b8051608082015163ffffffff918216909114159750955086612a595780608001516001600160801b031681606001518360000151612a419190614baf565b6001600160801b0316612a549190614d7a565b612a5c565b60005b9450505050509295509295909350565b60606000612ab08685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c4c92505050565b60608101519091506000612ac482886136bd565b9050612ad0888261412e565b15612b135760405162461bcd60e51b81526020600482015260136024820152724944413a20455f494e4445585f45584953545360681b60448201526064016103e8565b876001600160a01b03166312a6a3f882612b64604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b031681525061317b565b6040518363ffffffff1660e01b8152600401612b81929190614b96565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612c01919061467c565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612c546144b4565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc09190615004565b6001600160a01b031614612d0a5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103e8565b604051632fd0a1cd60e21b8152339063bf42873490612d2d90859060040161467c565b602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e9190615031565b612da85760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103e8565b604051631fb6491d60e11b81523390633f6c923a90612dcb90859060040161467c565b600060405180830381865afa158015612de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906150d8565b9392505050565b6040805160608101825260008082526020820181905291810182905281906000612e3f614486565b6000612e4b8a896136bd565b9550612e5789876141da565b9450612e638b87613724565b9450905080612e845760405162461bcd60e51b81526004016103e890614d99565b612e8e8b86613ec2565b90935091508615612f1b5782612ed75760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b896001600160a01b031682602001516001600160a01b031614612efc57612efc614e25565b8763ffffffff16826040015163ffffffff1614612f1b57612f1b614e25565b509550955095509550959050565b612f3161444b565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf91906151de565b91945092509050828015612fe1575081155b15613105576000612ff2868861421b565b90508660c0015182166000036130f75760006130118860c00151614299565b88516040808b015160608c01518251600081526020810190935261303d9392309291906044810161521a565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e02926130ac929186916410000000009190911490889060040161525f565b6000604051808303816000875af11580156130cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f391908101906152a8565b9550505b613102866000614330565b50505b50505092915050565b60006001600160801b038211156131775760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103e8565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106131c5576131c5614e0f565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b8160018151811061320857613208614e0f565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061327d5761327d614e0f565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b8160018151811061320857613208614e0f565b6000838301826001600160801b0380871690831610156132f35760405162461bcd60e51b81526004016103e8919061467c565b50949350505050565b8060000361330957505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc3390613344903090879064010000000090600190600401614e3b565b600060405180830381865afa158015613361573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133899190810190614f61565b9050816133b2826000815181106133a2576133a2614e0f565b602002602001015160001c614358565b6133bc9190614f95565b60001b816000815181106133d2576133d2614e0f565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906134129086906401000000009086906004016152dc565b600060405180830381600087803b15801561342c57600080fd5b505af1158015613440573d6000803e3d6000fd5b5050505050505050565b6134526144b4565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa1580156134a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ca91906151de565b889650919450925090508280156134df575081155b156136b2576134ee848961421b565b93508760c0015181166000036136a057600061350d8960c00151614299565b89516040808c015160608d01518251600081526020810190935261353b9392309291908e9060448101615303565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926135aa9291869164200000000091909114908b9060040161525f565b6000604051808303816000875af11580156135c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f191908101906152a8565b604051631fb6491d60e11b81529095503390633f6c923a9061361790889060040161467c565b600060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261365c91908101906150d8565b955061369860006136936136738c60800151614358565b61368e6136838b60e00151614358565b8b61010001516143c2565b6143d8565b6143c2565b610100870152505b6136af86866101000151614330565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613795573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137bd9190810190614f61565b90506000816000815181106137d4576137d4614e0f565b602002602001015160001c90506000826001815181106137f6576137f6614e0f565b602002602001015160001c9050600082119450841561382e576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b6000836001600160801b0316836001600160801b03161115829061386f5760405162461bcd60e51b81526004016103e8919061467c565b50600061387c8486614baf565b95945050505050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273__SlotsBitmapLibrary____________________9063a9472bf89060840160006040518083038186803b1580156138f357600080fd5b505af4158015613907573d6000803e3d6000fd5b50505050505050565b600061393a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036139905760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103e8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f29190614d61565b6139fa611224565b14613a535760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103e8565b6001600160a01b0381163003613aab5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103e8565b613ad3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc613afc611224565b604080519182526001600160a01b03841660208301520160405180910390a150565b604080516060810182526000808252602082018190529181018290526000613b4685856136bd565b9250613b528684613724565b9250905080613b735760405162461bcd60e51b81526004016103e890614d99565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b0316866000015186613baa9190614baf565b6001600160801b0316613bbc90614c5c565b613bc69190614bd7565b6040518363ffffffff1660e01b8152600401613be3929190614c78565b600060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b50505050613c4b878785604001516001600160801b0316866000015186613c389190614baf565b6001600160801b031661089c9190614bd7565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613c728761317b565b6040518363ffffffff1660e01b8152600401613c8f929190614b96565b600060405180830381600087803b158015613ca957600080fd5b505af1158015613cbd573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613d1b959493929190615369565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8d9190615031565b156134405760405162461bcd60e51b81526020600482015260126024820152714944413a20455f4c4f575f42414c414e434560701b60448201526064016103e8565b60608073__SlotsBitmapLibrary____________________6306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613e149493929190614e3b565b600060405180830381865af4158015613e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e5991908101906153a5565b909250905060005b8151811015613eba57613e8d84838381518110613e8057613e80614e0f565b60200260200101516141da565b828281518110613e9f57613e9f614e0f565b6020908102919091010152613eb381615469565b9050613e61565b509250929050565b6000613ecc614486565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613f21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f499190810190614f61565b9050600081600081518110613f6057613f60614e0f565b602002602001015160001c9050600082600181518110613f8257613f82614e0f565b602002602001015160001c9050600082119450841561382e57606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b81526004016140199493929190614e3b565b600060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261405e9190810190614f61565b90508060008151811061407357614073614e0f565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073__SlotsBitmapLibrary____________________9063a32470109060a401602060405180830381865af4158015614102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141269190615482565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015614185573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ad9190810190614f61565b90506000816000815181106141c4576141c4614e0f565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c83015291810183905260009101613706565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614252948a9460040161549f565b6000604051808303816000875af1158015614271573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e1091908101906152a8565b600064010000000082036142b557506330d9c91560e01b919050565b64040000000082036142cf5750630221347d60e61b919050565b64100000000082036142e95750635f9e7d7760e01b919050565b6402000000008203614303575063d86ed3e560e01b919050565b640800000000820361431d575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061425290869086906004016154e4565b60006001600160ff1b038211156131775760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e8565b60008183136143d15781612e10565b5090919050565b60008183136143e75782612e10565b50919050565b6040805160c0810182526000808252602082018190529181019190915260608101614431604080516060810182526000808252602082018190529181019190915290565b815260200161443e614486565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b03811681146111f257600080fd5b63ffffffff811681146111f257600080fd5b80356001600160801b038116811461432b57600080fd5b60008083601f84011261455f57600080fd5b5081356001600160401b0381111561457657600080fd5b60208301915083602082850101111561458e57600080fd5b9250929050565b60008060008060008060a087890312156145ae57600080fd5b86356145b98161450f565b955060208701356145c981614524565b945060408701356145d98161450f565b93506145e760608801614536565b925060808701356001600160401b0381111561460257600080fd5b61460e89828a0161454d565b979a9699509497509295939492505050565b60005b8381101561463b578181015183820152602001614623565b8381111561464a576000848401525b50505050565b60008151808452614668816020860160208601614620565b601f01601f19169290920160200192915050565b602081526000612e106020830184614650565b6000806000606084860312156146a457600080fd5b83356146af8161450f565b925060208401356146bf8161450f565b915060408401356146cf81614524565b809150509250925092565b60008060008060008060a087890312156146f357600080fd5b86356146fe8161450f565b9550602087013561470e8161450f565b9450604087013561471e81614524565b935060608701356145e78161450f565b60006020828403121561474057600080fd5b8135612e108161450f565b6000806000806080858703121561476157600080fd5b843561476c8161450f565b9350602085013561477c8161450f565b9250604085013561478c81614524565b9150606085013561479c8161450f565b939692955090935050565b6000806000806000608086880312156147bf57600080fd5b85356147ca8161450f565b945060208601356147da8161450f565b935060408601356147ea81614524565b925060608601356001600160401b0381111561480557600080fd5b6148118882890161454d565b969995985093965092949392505050565b60008060008060006080868803121561483a57600080fd5b85356148458161450f565b9450602086013561485581614524565b93506147ea60408701614536565b6000806000806080858703121561487957600080fd5b84356148848161450f565b935060208501356148948161450f565b925060408501356148a481614524565b9396929550929360600135925050565b6000806000606084860312156148c957600080fd5b83356148d48161450f565b925060208401356148e48161450f565b929592945050506040919091013590565b6000806040838503121561490857600080fd5b82356149138161450f565b915060208301356149238161450f565b809150509250929050565b600081518084526020808501945080840160005b838110156149675781516001600160801b031687529582019590820190600101614942565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156149b45781516001600160a01b03168452928401929084019060010161498f565b5050508381038285015285518082528683019183019060005b818110156149ef57835163ffffffff16835292840192918401916001016149cd565b50508481036040860152614a03818761492e565b98975050505050505050565b600080600080600060808688031215614a2757600080fd5b8535614a328161450f565b94506020860135614a4281614524565b93506040860135925060608601356001600160401b0381111561480557600080fd5b60008060408385031215614a7757600080fd5b8235614a828161450f565b946020939093013593505050565b60008060008060608587031215614aa657600080fd5b8435614ab18161450f565b93506020850135614ac181614524565b925060408501356001600160401b03811115614adc57600080fd5b614ae88782880161454d565b95989497509550505050565b6020808252601390820152724944413a20455f4e4f5f5a45524f5f5355425360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b4a57614b4a614b21565b500190565b600082821015614b6157614b61614b21565b500390565b600081518084526020808501945080840160005b8381101561496757815187529582019590820190600101614b7a565b8281526040602082015260006141266040830184614b66565b60006001600160801b0383811690831681811015614bcf57614bcf614b21565b039392505050565b60006001600160ff1b0381841382841380821686840486111615614bfd57614bfd614b21565b600160ff1b6000871282811687830589121615614c1c57614c1c614b21565b60008712925087820587128484161615614c3857614c38614b21565b87850587128184161615614c4e57614c4e614b21565b505050929093029392505050565b6000600160ff1b8201614c7157614c71614b21565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b038316602082015260606040820181905260009061387c90830184614650565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614d0390830184614650565b9695505050505050565b6001600160a01b038316815260406020820181905260009061412690830184614650565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009061387c90830184614650565b600060208284031215614d7357600080fd5b5051919050565b6000816000190483118215151615614d9457614d94614b21565b500290565b6020808252600f908201526e092888274408abe9c9ebe929c888ab608b1b604082015260600190565b60006001600160801b03808316818516808303821115614de457614de4614b21565b01949350505050565b600082614e0a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614e9d57614e9d614e64565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614ecb57614ecb614e64565b604052919050565b60006001600160401b03821115614eec57614eec614e64565b5060051b60200190565b600082601f830112614f0757600080fd5b81516020614f1c614f1783614ed3565b614ea3565b82815260059290921b84018101918181019086841115614f3b57600080fd5b8286015b84811015614f565780518352918301918301614f3f565b509695505050505050565b600060208284031215614f7357600080fd5b81516001600160401b03811115614f8957600080fd5b61412684828501614ef6565b600080821280156001600160ff1b0384900385131615614fb757614fb7614b21565b600160ff1b8390038412811615614fd057614fd0614b21565b50500190565b600063ffffffff808316818103614fef57614fef614b21565b6001019392505050565b805161432b8161450f565b60006020828403121561501657600080fd5b8151612e108161450f565b8051801515811461432b57600080fd5b60006020828403121561504357600080fd5b612e1082615021565b805160ff8116811461432b57600080fd5b80516001600160e01b03198116811461432b57600080fd5b600082601f83011261508657600080fd5b81516001600160401b0381111561509f5761509f614e64565b6150b2601f8201601f1916602001614ea3565b8181528460208386010111156150c757600080fd5b614126826020830160208701614620565b6000602082840312156150ea57600080fd5b81516001600160401b038082111561510157600080fd5b90830190610160828603121561511657600080fd5b61511e614e7a565b6151278361504c565b81526151356020840161504c565b60208201526040830151604082015261515060608401614ff9565b60608201526151616080840161505d565b608082015260a08301518281111561517857600080fd5b61518487828601615075565b60a08301525060c083015160c082015260e083015160e08201526101009150818301518282015261012091506151bb828401614ff9565b8282015261014091506151cf828401614ff9565b91810191909152949350505050565b6000806000606084860312156151f357600080fd5b6151fc84615021565b925061520a60208501615021565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061524d90830185614650565b8281036080840152614a038185614650565b6001600160a01b038516815260806020820181905260009061528390830186614650565b8415156040840152828103606084015261529d8185614650565b979650505050505050565b6000602082840312156152ba57600080fd5b81516001600160401b038111156152d057600080fd5b61412684828501615075565b60018060a01b038416815282602082015260606040820152600061387c6060830184614b66565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061533690830186614650565b82810360808401526153488186614650565b905082810360a084015261535c8185614650565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261529d60a0830184614650565b600080604083850312156153b857600080fd5b82516001600160401b03808211156153cf57600080fd5b818501915085601f8301126153e357600080fd5b815160206153f3614f1783614ed3565b82815260059290921b8401810191818101908984111561541257600080fd5b948201945b8386101561543957855161542a81614524565b82529482019490820190615417565b9188015191965090935050508082111561545257600080fd5b5061545f85828601614ef6565b9150509250929050565b60006001820161547b5761547b614b21565b5060010190565b60006020828403121561549457600080fd5b8151612e1081614524565b60a0815260006154b260a0830188614650565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006154f76040830185614650565b9050826020830152939250505056fea2646970667358221220160b11fce4c17b8790637b1e020bd5e068479f959c84335446b27cc8c17925f064736f6c634300080d0033",
1028
1028
  "immutableReferences": {
1029
1029
  "4332": [
1030
1030
  {
@@ -31673,7 +31673,7 @@
31673
31673
  16766,
31674
31674
  4375,
31675
31675
  17266,
31676
- 35197,
31676
+ 35200,
31677
31677
  762
31678
31678
  ],
31679
31679
  "name": "InstantDistributionAgreementV1",
@@ -74590,7 +74590,7 @@
74590
74590
  },
74591
74591
  "networks": {},
74592
74592
  "schemaVersion": "3.4.7",
74593
- "updatedAt": "2022-05-16T08:18:24.727Z",
74593
+ "updatedAt": "2022-05-19T14:37:33.945Z",
74594
74594
  "devdoc": {
74595
74595
  "author": "Superfluid",
74596
74596
  "details": "Please read IInstantDistributionAgreementV1 for implementation notes.For more technical notes, please visit protocol-monorepo wiki area.",